SkinMagic使用方法完美总结

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

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


使用步骤:


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"。


http://www.pediy.com/bbshtml/BBS6/pediy6615.htm

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();


相关文章
|
机器学习/深度学习 网络协议 算法
【HCIE】01.IGP高级特性
【HCIE】01.IGP高级特性
329 0
|
Ubuntu 开发工具
Ubuntu 18.04 软件源修改成国内源
Ubuntu 18.04 软件源修改成国内源
1105 0
|
4月前
|
XML 安全 C++
解决总是缺少dll文件,msvcp120,msvcp140,vcruntime140,d3d9,d3d11,0xC0000005,msvcp系列等报错信息?
本内容主要解决“运行库”、“dll缺少”等问题,提供免费修复方案。介绍DLL缺失原因及一键安装工具,涵盖VC++运行库、DirectX修复工具等,适用于游戏和软件运行异常问题。
438 0
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
3143 0
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
Web App开发 JavaScript 前端开发
Node.js的优缺点是?
【8月更文挑战第4天】Node.js的优缺点是?
578 4
Python 实现语句中提取人名(附代码) | Python工具
Python 实现语句中提取人名(附代码) | Python工具
Python 实现语句中提取人名(附代码) | Python工具