一直以来总想为自己用VC6做的程序美容一下,于是便找到这款skinmagic,虽然网上有许多关于此软件的使用说明,但实际使用过程中总会遇到一些问题,经过反复摸索和总结,于是便有了此文,希望对您有所帮助。

使用步骤:
另附自己找到的builder2.3版本
1。把SkinMagicLib.h, SkinMagicLibMT6.lib, SkinMagicLibMD6.lib放到你的VC6工程目录下
2。在StdAfx.h中添加
#include "SkinMagicLib.h"
3。在工程设置中添加对应的库
特别注意:
1、   使用dll时,程序发布时需要skinmaigc.dll与程序打包
2、   若使用静态库,则无需依赖dll文件。具体做法是:
前提条件1:在project/settings/general/ 选择了use MFC in a Static Lirary,此时对于debug版本和release版本,都必须使用静态库:SkinMagicLibMT6.lib。
1)   debug版本:Project/Setting的C++ / Code Generation下选择:“Debug Multithreaded”。
2)   release版本:选择:“Multithreaded”
前提条件2:在project/settings/general/ 选择了use MFC in a Shared DLL,此时对于debug版本和release版本都必须使用静态库:SkinMagicLibMD6.lib。
3)   debug版本:Project/Setting的C++ / Code Generation下选择:“Debug Multithreaded DLL”。
4)   release版本:选择:“Multithreaded DLL”
其中的MT代表multithreaded,而MD代表multithreaded DLL,需要在 msdev 的Project/Setting的C++ / Code
Generation标签下选择,如果你的工程要用MT类型的静态库,则debug版要选择"Debug Multithreaded",release
版要选择"Multithreaded";如果要用MD类型的静态库,则debug版需要选择"Debug Multithreaded DLL",release
版要选择"Multithreaded DLL"。
 
4。在InitInstance()函数的开始处添加初始化SkinMagic资源的代码。
VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), "Demo" ,
                                                NULL,
                                                NULL ) );
         VERIFY( 1 == LoadSkinFile( "Devior.smf" ));
         VERIFY( 1 == SetDialogSkin( "Dialog" ) );//设置对话框的皮肤
5。在InitInstance()函数中加载皮肤文件并设置程序皮肤。
你可以选择添加皮肤文件到资源中,并编译到程序中。或者程序在运行时动态加载皮肤文件
a. 比如添加corona.smf,设置资源类型为"SKINMAGIC", 资源ID为IDR_SKIN_CORONA
 
         CBossKeyDlg dlg;
         m_pMainWnd = &dlg;
         //加载SkinMagic皮肤
         VERIFY(1 == LoadSkinFromResource(NULL, (LPSTR)IDR_SKIN_CORONA, "SKINMAGIC"));
         VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));//设置窗口的皮肤
         VERIFY(1 == SetDialogSkin("Dialog"));//设置对话框的皮肤
         int nResponse = dlg.DoModalEx(bStartShow);
         if (nResponse == IDOK)
         {
         }
         else if (nResponse == IDCANCEL)
         {
         }
b. 程序在运行时动态加载皮肤文件
         CBossKeyDlg dlg;
         m_pMainWnd = &dlg;
         //加载SkinMagic皮肤
         VERIFY(1 == LoadSkinFile("corona.smf"));
         VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame"));
         VERIFY(1 == SetDialogSkin("Dialog"));
         int nResponse = dlg.DoModalEx(bStartShow);
         if (nResponse == IDOK)
         {
         }
         else if (nResponse == IDCANCEL)
         {
         }
6。在ExitInstance()函数中释放SkinMagic资源
         //释放SkinMagic资源:
         ExitSkinMagicLib();

VC_SkinMagic使用方法总结相关推荐

  1. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  2. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  3. Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程

    参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程.同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers ...

  4. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  5. IDEA自动生成对象所有set方法

    idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...

  6. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

  7. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解

    1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...

  8. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  9. Java Calendar.add()方法的使用,参数含义。指定时间差。

    cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...

最新文章

  1. 川大 NLP 博士生被华为以 200 万年薪录用!分享以下科研及论文写作经验...
  2. java 基本的文件读写
  3. go 中使用socket范例
  4. POJ3696-The Luckiest number【数论,欧拉定理】
  5. html之CSS设计(文本、边框、列表标签、display设置、内外边距)
  6. 文本嵌入的经典模型与最新进展
  7. 【前端进阶之路】内存基本知识
  8. 使用git软件上传文件到自己的github当中去
  9. Linux 错误: $'\r': command not found错误解决
  10. CC2530定时器唤醒
  11. Kaggle竞赛实战系列(一):手写数字识别器(Digit Recognizer)得分99.53%、99.91%和100%
  12. pythonlocust使用技巧_python locust 性能测试:HOOKS钩子方法
  13. C++ Opencv安装学习笔记
  14. Python PTA实验课 输出星期名缩写+字典的创建
  15. loadlibrary函数失败,错误码:126
  16. Python的Profile概述
  17. git 新建分支 推送到远程 首次pull代码报错 git branch --set-upstream-to=origin/<branch>
  18. html表白程序源码_表白程序源码html_程序员表白代码html
  19. 【LOJ #6617】「THUPC 2019」摆家具 / furniture(DP / BSGS / 矩阵快速幂)
  20. 微信小程序 —— 苹果机的兼容总结

热门文章

  1. Vue整合Rtmp流实现无Flash播放[flv+websocket篇]
  2. 数学学术资源站点(zz)
  3. 通俗易懂hadoop fs、hadoop dfs、hdfs fs、hdfs dfs区别
  4. 《动手搭建智能家居系统》——2.5 遥控设备
  5. 解决引入的源文件为乱码的问题
  6. 麦肯锡:2020中国消费者季刊
  7. 类封装继承接口抽象类综合测试
  8. 和姚明的本科比起来,翟天临的博士,差了些。
  9. 如何搭建企业知识库?看完这篇文章你就懂了
  10. Ubuntu 16.04 开机运行程序或脚本