【VC编程技巧】动态链接库☞1.6设计应用程序界面换肤
来源:互联网 发布:c语言逻辑或半运算 编辑:程序博客网 时间:2024/05/16 10:27
引言(转载请说明作者和出处):
刚休完 十一长假,又加上最近公司事挺多的,十来天没更新了文章,打算后面补上。
今天讲利用动态链接库来实现应用程序的界面换肤。原理是在动态链接库中创建应用程序需要的位图资源文件,当应用程序需要界面换肤时去加载新的位图资源。下面我看一个例子,这个例子同第一讲“【VC编程技巧】动态链接库☞1.1调用Dll中的一个图标”差不多。
效果图:
1〉创建MFCRegularDLL类型的DLL工程,DLL名:InterfaceRes.dll
2〉插入两个位图资源,resources.h
//{{NO_DEPENDENCIES}}// Microsoft Developer Studio generated include file.// Used by InterfaceRes.rc////位图1#define IDB_MAINFORM 8000//位图2#define IDB_SECFORM 8001// Next default values for new objects// #ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE 4002#define _APS_NEXT_COMMAND_VALUE 32771#define _APS_NEXT_CONTROL_VALUE 4000#define _APS_NEXT_SYMED_VALUE 4000#endif#endif
3〉编译生成InterfaceRes.dll
4〉创建换肤对话框应用程序ChangeSkin.exe,通过两个Button去调用动态库中的不同位图;相关代码如下:
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);//卸载动态链接库}}
- 【VC编程技巧】动态链接库☞1.6设计应用程序界面换肤
- 【VC编程技巧】动态链接库☞1.5设计支持多国语言应用程序
- 【VC编程技巧】动态链接库☞1.1调用Dll中的一个图标
- 【VC编程技巧】动态链接库☞1.2用模块导出接口
- 【VC编程技巧】动态链接库☞1.3MFC扩展类的导出
- 【VC编程技巧】动态链接库☞1.4进程间共享数据
- VC应用程序的界面换肤工具集合
- VC++动态链接库编程
- vc 动态链接库编程
- VC++动态链接库编程
- VC++动态链接库编程
- VC++ 动态链接库编程
- 用VC编写具有动态换肤功能的应用程序
- 用VC编写具有动态换肤功能的应用程序
- 用VC编写具有动态换肤功能的应用程序
- 用vc编写具有动态换肤功能的应用程序
- 用VC编写具有动态换肤功能的应用程序
- 用VC编写具有动态换肤功能的应用程序
- C语言宏定义使用技巧
- linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库
- linux 设置ip与dns
- paip. JAVA快速开发IDE与JSF技术
- 从前有座山
- 【VC编程技巧】动态链接库☞1.6设计应用程序界面换肤
- struts第四天---动态方法调用
- Http与RPC通信协议的比较
- Java规则引擎工作原理及其应用
- linux 读取cdrom
- 回顾
- vbs脚本实例
- vi 出错解决方法
- 必须要记住的几个vi操作