首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

【VC编程技艺】动态链接库?1.6设计应用程序界面换肤

2012-10-18 
【VC编程技巧】动态链接库?1.6设计应用程序界面换肤引言(转载请说明作者和出处):刚休完 十一长假,又加上最近

【VC编程技巧】动态链接库?1.6设计应用程序界面换肤

引言(转载请说明作者和出处):

刚休完 十一长假,又加上最近公司事挺多的,十来天没更新了文章,打算后面补上。

今天讲利用动态链接库来实现应用程序的界面换肤。原理是在动态链接库中创建应用程序需要的位图资源文件,当应用程序需要界面换肤时去加载新的位图资源。下面我看一个例子,这个例子同第一讲“【VC编程技巧】动态链接库?1.1调用Dll中的一个图标【VC编程技艺】动态链接库?1.6设计应用程序界面换肤

1〉创建MFCRegularDLL类型的DLL工程,DLL名:InterfaceRes.dll

2〉插入两个位图资源,resources.h

void CChangeSkinDlg::OnStyleOne() {//加载动态链接库HMODULE hRes = LoadLibrary("./InterfaceRes.dll");if (hRes != NULL)//判断是否加载成功{//加载动态链接库中的位图,其中8000为动态链接库中的位图资源ID值HBITMAP hBmp = (HBITMAP)LoadImage(hRes, MAKEINTRESOURCE(8000), IMAGE_BITMAP, 0, 0, 0);if (hBmp != NULL)//判断加载位图是否成功{//在控件中显示位图if(m_hOldBmp != NULL){m_hOldBmp = m_Bmp.SetBitmap(hBmp);}else{//如果控件已经设置过位图,先将其还原再设新的m_Bmp.SetBitmap(m_hOldBmp);m_Bmp.SetBitmap(hBmp);}//释放LoadImage加载的位图资源占据的内存if (hBmp){DeleteObject(hBmp);}}FreeLibrary(hRes);//卸载动态链接库}}void CChangeSkinDlg::OnStyleTwo() {//加载动态链接库HMODULE hRes = LoadLibrary("./InterfaceRes.dll");if (hRes != NULL)//判断是否加载成功{//加载动态链接库中的位图,其中8001为动态链接库中的位图资源ID值HBITMAP  hBmp = (HBITMAP)LoadImage(hRes, MAKEINTRESOURCE(8001), IMAGE_BITMAP, 0, 0, 0);if (hBmp != NULL)//判断加载位图是否成功{//在控件中显示位图if(m_hOldBmp != NULL){m_hOldBmp = m_Bmp.SetBitmap(hBmp);}else{//如果控件已经设置过位图,先将其还原再设新的。m_Bmp.SetBitmap(m_hOldBmp);m_Bmp.SetBitmap(hBmp);}//释放LoadImage加载的位图资源占据的内存if (hBmp){DeleteObject(hBmp);}}FreeLibrary(hRes);//卸载动态链接库}}



热点排行