SkinMagic是一款很好的换肤工具,使用起来也比较简单。
准备工作:

1、将SkinMagicTrial.dll放置在当前目录中,如果需要直接双击执行的话还要放到Debug文件夹里

2、设置库文件目录,在project->setting->link中加入库SkinMagicTrial.lib
或者直接用#pragma comment(lib, "SkinMagicTrial.lib")动态加入lib文件

3、在项目的stdafx.h文件中加入头文件   #include   "SkinMagicLib.h"

后面就可以开始了:
4、初始化SkinMagic。在App类中的InitInstance()中加入以下函数:
     VERIFY( 1   ==   InitSkinMagicLib(AfxGetInstanceHandle(), NULL , NULL,   NULL   ));  
    
      说明:   
      int   InitSkinMagicLib(   //初始化SkinMagic工具库   
      HINSTANCE   hInstance,   //应用程序句柄   
      char*   szApplication   ,   //皮肤文件中定义的应用程序名,置为NULL即可   
      char*   szRegCode,   //SkinMagic的使用注册码。若无置为NULL   
      char*   szReserved2   //保留位,为NULL   
      );   
    
4、调入皮肤文件:   
      皮肤的调用有两种方法,一是直接从皮肤文件中调用,另一种方法是从资源文件中调用,分别说明如下:   
    
      1)从皮肤文件中调用皮肤:紧接上句,加入如下代码   
      VERIFY(   1   ==   LoadSkinFile("corona.smf"));   
    
      2)从资源文件中调用皮肤:   
      VERIFY(1   ==   LoadSkinFromResource(NULL,"FUTURA","skin"));   
    
      说明:   
      int   LoadSkinFromResource(   
      HMODULE   hModule,   //包含皮肤文件的模块句柄,若NULL表面在本模块中   
      char*   lpSkinName   ,   //皮肤资源的名称   
      char*   lpType);   //资源的类型   
    
5、为窗口添加皮肤:   
      1)为标准窗口(拥有标题栏、系统菜单、可变大小等特征,比如文档/视图结构和有菜单的对话框)添加皮肤,通常用于主窗口。在应用程序类的InitInstance()函数的底部加入如下代码:   
    
      VERIFY(   1   ==   SetWindowSkin(   m_pMainWnd->m_hWnd   ,   "MainFrame"   ));   
    
      m_pMainWnd->ShowWindow(SW_SHOW);   
      m_pMainWnd->UpdateWindow();   
    
      说明:   
      int   SetWindowSkin(   
      HWND   hWnd,   //要使用皮肤的窗口句柄   
      char*   lpSkinName   //为skinFrameWnd对象指定的名称   
      );   
    
      2)为对话框添加皮肤   
      在对话框显示之前调用,通常在应用程序初始化函数中调用   
    
      VERIFY(   1   ==   SetWindowSkin(   m_pMainWnd->m_hWnd   ,   "MainFrame"   ));   
      VERIFY(   1   ==   SetDialogSkin(   "Dialog"   )   );   
      m_pMainWnd->ShowWindow(SW_SHOW);   
      m_pMainWnd->UpdateWindow();   
    
      说明:   
      int   SetDialogSkin(     
      char*   lpSkinName   //为skinFrameWnd对象指定的名称   
      );   
      使用该函数后,以后程序创建的对话框都将使用该皮肤,但对话框大小不可变。   
    
      3)为单个对话框窗口添加皮肤,例如在对话框视图中:重载对话框视图的创建函数OnCreate,加入如下代码:   
    
      VERIFY(   1   ==   SetSingleDialogSkin(   m_hWnd,   "Dialog"   )   );   
      EnableWindowScrollbarSkin(   m_hWnd   ,   SB_BOTH   );   
    
      说明:   
      int   SetSingleDialogSkin(   
      HWND   hWnd,   //要使用皮肤的窗口句柄   
      char*   lpSkinName   //为skinFrameWnd对象指定的名称   
      );   
      int   EnableWindowScrollbarSkin(   //为滚动条添加皮肤   
      HWND   hWnd,   //要使用皮肤的窗口句柄   
      int*   fnBar   //要使用皮肤的滚动条,SB_BOTH表明是横竖都是用皮肤   
      );   
 
6、动态调用皮肤
     在菜单中加入选项,在函数中加入下面程序即可
CString m_sFilePath; 
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle = "皮肤对话框";
fileDlg.m_ofn.lpstrFilter = "SMF Files(*.smf)\0*.smf\0";
if(IDOK == fileDlg.DoModal())
{
m_sFilePath = fileDlg.GetPathName();
if (1 != LoadSkinFile(m_sFilePath))
AfxMessageBox("μ÷è¡Æ¤·ô3ö′í");
}
return;

  
7、释放SkinMagic资源   
        
      重载应用程序的虚函数ExitInstance(),添加如下代码:   
    
      ExitSkinMagicLib();

转载于:https://blog.51cto.com/shuiqing/302421

使用SkinMagic实现换肤相关推荐

  1. skinmagic对VC中程序窗口的换肤

    一直以来没怎么关心过程序界面的开发,最近想对程序界面的美化学习一下. 下面先展示一下这次开发所实现的效果: 程序我已经上传到CSDN上面了,同时我所使用的skinmagic包也已经上传. 程序主要实现 ...

  2. SkinMagic——MFC界面换肤美化

    SkinMagic--MFC界面换肤美化(完整步骤) 一. 下载并解压SkinMagic https://pan.baidu.com/share/link?shareid=1666255608& ...

  3. 关于如何换肤、子类化的解决方案

    对于应用程序的换肤及子类化.下面是我尝试过一些方法,以在CAboutDlg中子类化其中的Button为例: 第一种:直接用现成的类 1.自己写一个类class CButtonXP : public C ...

  4. VC应用程序的界面换肤工具集合

    本人由于急着赶一个软件的说明文档,急需修改软件的界面,写代码显然是来不及的,所以在网上搜了好多换肤工具来试用,试用好几个,其中比较成功的有两个,其他的由于时间有限,没有仔细摸索,现不管三七二十一通通集 ...

  5. 几种换肤软件使用问题

    几种换肤软件的使用和使用中的BUG                                                                                    ...

  6. android view设置按钮颜色_Android 主题换肤技术方案分析

    写在前面 Android TV 电视开发,主题换肤,我感觉有两种层级的方式,一种是 系统级,另一种 是应用级, 我记得很早在 Linux 桌面开发的时候,我们之前的公司在GTK+上也实现了一套换肤UI ...

  7. Swift 换肤方案的实现使用SwiftTheme框架

    SwiftTheme 框架进行换肤 本地创建多个plist文件 设置不同图片颜色数组 飞机票 demo Foundationimport SwiftTheme// 创建一个枚举类型进行换肤 enum ...

  8. Spring Boot一键换肤,so easy!

    SpringMVC 源码分析系列最后一篇,和大家聊一聊 Theme. Theme,就是主题,点一下就给网站更换一个主题,相信大家都用过类似功能,这个其实和前面所说的国际化功能很像,代码其实也很像,今天 ...

  9. vue中利用scss实现整体换肤和字体大小设置

    一.前言 利用Sass预处理实现换肤和字体大小调整. 思路及达到的效果:字体大小的适配使用window.devicePixelRatio的值和需要调整的差量进行控制.页面初始化是的字体适配可以根据de ...

最新文章

  1. The request was denied by service delegate (SBMainWorkspace) for reason: Uns
  2. 辽宁省风力发电行业“十四五”前景规划及竞争策略分析报告2022-2028年版
  3. 黄海广博士的知乎高赞(1000+)文章分享
  4. 搜狗输入法错误推送地震信息,但其背后的真正价值值得思考
  5. 1.2-Nginx编译安装
  6. 论文浅尝 - EMNLP2020 | 低资源跨语言实体链接中的设计挑战
  7. 性能优化(9):切记要避免重定向
  8. 顺风车订单已结束仍在录音 嘀嗒出行回应录音机制
  9. leetcode题解54-螺旋矩阵
  10. LOJ#6284. 数列分块入门 8
  11. Linux命令解释之awk
  12. 吉林省计算机二级vf试题,计算机等级考试二级VF模拟试题四及答案解析
  13. appium 原理解析
  14. VS学习笔记(一)创建C++项目
  15. CNN训练Cifar-10技巧
  16. mac系统 彻底删除安全助手
  17. 1+x2022年9月16日实操题答案
  18. 【高级Java开发】类QQ聊天工具的设计与实现(代码已上传)
  19. 源码编译、安装gcc 7
  20. Xshell 和 Xftp 学校免费版

热门文章

  1. 10种你必须懂的PPT配色方法
  2. [Err] [Dtf] 2013 - Lost connection to MySQL server at 'reading initial communication packet', 复制数据问题
  3. 转] 袁天罡称骨算命法
  4. 文字版精华总结!你写的爬虫到底违不违法?
  5. 西农计算机专业好就业么,西北农林科技大学怎么样(十大好就业专业)
  6. Java解决有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
  7. win7关闭系统索引服务器,如何优化Win7系统之如何关闭索引服务
  8. 拿到jar文件,如何快速运行
  9. nginx配置跨域访问后不生效,仍然显示跨域问题
  10. 安卓开发学习-Android Studio-12-adapter