统一的资源管理
为了对界面资源进行管理,同时也为了方便替换,需要对使用的资源进行统一的管理。
在BKLib中,资源管理主要由以下几种:
BkBmpPool:HBITMAP资源池,用于统一管理HBITMAP,单例。
BkFontPool:FONT资源池,用于统一管理FONT,单例。
BkPngPool:PNG图片资源池,用于统一管理PNG图片,单例,使用GDI+。
BkString:CString资源池,用于统一管理String,单例,从XML中获取。
BkColor:HLS&RGB颜色处理工具类
CBkImage:图像处理类
BkResManager:资源处理器,单例,用于获取资源
BkSkin:Skin资源池,单例,统一管理Skin(CBkSkinBase),从XML中获取
BkStyle:Style资源池,单例,统一管理Style,从XML中获取
在窗口创建之前需要加载相应的资源
BkString::Load(IDR_BK_STRING_DEF); // 加载字符串
BkFontPool::SetDefaultFont(BkString::Get(IDS_APP_FONT), -12); // 设置字体
BkSkin::LoadSkins(IDR_BK_SKIN_DEF); // 加载皮肤
BkStyle::LoadStyles(IDR_BK_STYLE_DEF); // 加载风格
//其中输入参数为XML文件的名称
在程序关闭后应释放对应资源。
使用时只要按照ID在资源池中查找对应资源即可,如
if ("bgskin" == strAttribName) //属性名称是strAttribName
{
m_pSkinBg = BkSkin::GetSkin(strValue); //属性的值是strValue
hRet = TRUE ? S_OK : S_FALSE; //是否全部重绘
}
根据ID(strValue)就可在BkSkin中获取相应的Skin。