MFC 程序打包换皮肤!
来源:互联网 发布:java基础入门培训费用 编辑:程序博客网 时间:2024/04/23 16:20
1.首先 这是皮肤代码
!addplugindir .
!include "MUI2.nsh"
Name "ISSkin"
OutFile "ISSkin.exe"
InstallDir "$LOCALAPPDATA\ISSkin"
RequestExecutionLevel user
!define MUI_ABORTWARNING
!define MUI_CUSTOMFUNCTION_GUIINIT ISSkinGUIInit
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "English"
Function ISSkinGUIInit
InitPluginsDir
File "/oname=$PLUGINSDIR\skin.dat" "skin.dat"
ISSkinEx::nsLoadSkin /NOUNLOAD "$PLUGINSDIR\skin.dat" "NormalSkin.ini"
FunctionEnd
Function .onGUIEnd
ISSkinEx::nsUnloadSkin
FunctionEnd
Section SecDummy
SectionEnd
2.准备NSIS打包软件的.dll链接库如:ISSkinEx.dll
把dll文件放在这个路径下:C:\Program Files\NSIS\Plugins\ISSkinEx.dll
3.这时候 编译运行如果不出错 皮肤将会改变如下图:
4,但是我安装的时候报错了 原因是因为已经存在了同名的安装皮肤函数
错误如下:onFUIEnd 函数重复
那这时候加入的时候要注意。如果你的代码里有:
!define MUI_CUSTOMFUNCTION_GUIINIT XXXXXX
你则只需要把 Function ISSkinGUIInit 里的代码考到你的:
Function XXXXXX
函数中,即追加到这个函数里面去。
!define MUI_CUSTOMFUNCTION_GUIINIT XXXXXX
Function XXXXXX
和
!define MUI_CUSTOMFUNCTION_GUIINIT ISSkinGUIInit
Function ISSkinGUIInit
就是一样的,只不过换了个名字而已。
对于这情况。比如我提供的叫本有这个:
!define MUI_CUSTOMFUNCTION_GUIINIT ISSkinGUIInit
Function ISSkinGUIInit
;皮肤相关代码
FunctionEnd
你只需要把 ISSkinGUIInit 里的内容移动到你原脚本:
!define MUI_CUSTOMFUNCTION_GUIINIT XXXXXX
Function XXXXXX
;原有代码
FunctionEnd
增加为:
!define MUI_CUSTOMFUNCTION_GUIINIT XXXXXX
Function XXXXXX
;原有代码
;皮肤相关代码
FunctionEnd
如果没有的话,那你自然要创建一个函数了。最简单的就是把:
!define MUI_CUSTOMFUNCTION_GUIINIT ISSkinGUIInit
Function ISSkinGUIInit
;皮肤相关代码
FunctionEnd
整个复制过去就行了。
5.参考整个代码见 http://blog.csdn.net/dyllove98/article/details/8762519
6.注意一个小问题,NSIS 自身可以定义界面的图片
wiz_is.bmp 图片尺寸164×290比较适合
- MFC 程序打包换皮肤!
- mfc 对话框换皮肤
- 给程序换皮肤
- MFC--用SkinMagicSDK换皮肤
- 给VC程序换皮肤
- android程序换皮肤之一
- 给VC程序换皮肤
- 用SkinMagic工具包创建换皮肤程序
- 用SkinMagic工具包创建换皮肤程序
- 为你的程序换个皮肤
- 给Winform程序换个皮肤
- android程序换皮肤之二
- Skin++ VC6下给程序换皮肤
- MFC程序更换XP皮肤
- 换皮肤
- 换皮肤
- MFC应用SkinMagic皮肤可视化包更换程序外观皮肤
- InstallShield 打包MFC程序
- php遍历目录
- Drainage Ditches (最大流问题)
- 获取鼠标在屏幕上的坐标和颜色值(RGB)
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 常见的目标检测中的背景建模方法漫谈
- MFC 程序打包换皮肤!
- 在android C/C++ native编程(ndk)中使用logCat
- SQL将datetime转化为字符串并截取字符串
- Ubuntu下卸载VMware
- 珍藏多年的免费资源第二轮共享:大量android资源以及一些珍藏资源
- JavaScript基础学习
- dashboard 4.0 cannot connect a prompt to spreadsheet in query browser
- Axis 发布wsdl
- 推荐数据库连接池Druid