1、在开头申明Page custom WelcomePage,表示这个界面是自定义;
2、重写Function .onInit方法,包含初始化临时目录,以及释放资源等一系列需要初始化的事件;
3、重写Function onGUIInit 方法,隐藏相关的控件;
4、自定义页面的函数Function WelcomePage,里面定义控件,绑定事件处理;
以上步骤,就是对于相关内容的一个大体说明,当然,还有细节之类的需要特别注意,比如section段之类,相关语法等,这一块儿不做为特别的说明,在帮助文档里面都可以找到,以下代码是一个特别简单的自定义页面的实例,代码只是抽出来的一部分,重点说明的是自定义页面部分,并不能运行,请谅解!
Page custom WelcomePage
Function .onInit
InitPluginsDir
Call IsProgramRunning #检测程序是否正在运行
Call CompareVersion #检查程序的版本号
;显示动态的图片
File `/oname=$PLUGINSDIR\index.htm` `images\index.htm`
SkinBtn::Init "$PLUGINSDIR\btn_install.bmp"
FunctionEnd
;初始化的函数
Function onGUIInit
;消除边框
System::Call `user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0`
;隐藏一些既有控件
GetDlgItem $0 $HWNDPARENT 1034
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1035
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1036
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1037
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1038
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1039
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1256
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 1028
ShowWindow $0 ${SW_HIDE}
FunctionEnd
;处理无边框移动
Function onGUICallback
${If} $MSG = ${WM_LBUTTONDOWN}
SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
${EndIf}
FunctionEnd
Function onWarningGUICallback
${If} $MSG = ${WM_LBUTTONDOWN}
SendMessage $WarningForm ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
${EndIf}
FunctionEnd
;关闭函数
Function SkinBtn_Close
SkinBtn::Set /IMGID=$PLUGINSDIR\btn_close.bmp $1
FunctionEnd
;安装的函数
Function SkinBtn_Install
SkinBtn::Set /IMGID=$PLUGINSDIR\btn_install.bmp $1
FunctionEnd
;自定义的欢迎页面 (如果此页面为空,则会调用原来的默认的页面)
Function WelcomePage
GetDlgItem $0 $HWNDPARENT 1
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 2
ShowWindow $0 ${SW_HIDE}
GetDlgItem $0 $HWNDPARENT 3
ShowWindow $0 ${SW_HIDE}
;初始化的定义一个窗口
nsDialogs::Create 1044
Pop $0
${If} $0 == error
Abort
${EndIf}
SetCtlColors $0 "" transparent ;背景设成透明
;加入头文件"nsWindows.nsh"
${NSW_SetWindowSize} $HWNDPARENT 508 296 ;改变窗体大小
${NSW_SetWindowSize} $0 508 296 ;改变Page大小
;关闭按钮
${NSD_CreateButton} 490 5 15 15 ""
Pop $Btn_Close
StrCpy $1 $Btn_Close
Call SkinBtn_Close
GetFunctionAddress $3 onClose
SkinBtn::onClick $1 $3
;立即安装的按钮
${NSD_CreateButton} 183 225 153 39 ""
Pop $Btn_Install
StrCpy $1 $Btn_Install
Call SkinBtn_Install
EnableWindow $Btn_Install 1
;定义的一个Bool值,用于是否显示
;StrCpy $Bool_Install 1
GetFunctionAddress $3 OnClick_Install
SkinBtn::onClick $1 $3
;右下方更改安装路径的控件使用
${NSD_CreateButton} 400 280 95 15 ""
Pop $Btn_LoadPath
StrCpy $1 $Btn_LoadPath
Call SkinBtn_Modify
GetFunctionAddress $3 OnClick_Modify
SkinBtn::onClick $1 $3
;StrCpy $Bool_License 0 ;初始化值为0
;CheckBox选中项
${NSD_CreateButton} 23 280 15 15 ""
Pop $Ck_AgreeLicense
StrCpy $1 $Ck_AgreeLicense
Call SkinBtn_Checked
GetFunctionAddress $3 OnClick_CheckAgreeLicense
SkinBtn::onClick $1 $3
StrCpy $Bool_AgreeLicense 1
${NSD_CreateLabel} 43 280 100 15 "我已阅读并同意"
Pop $Lbl_AgreeLicense
SetCtlColors $Lbl_AgreeLicense "" transparent ;背景设成透明
;checkBox按钮右侧的许可协议按钮,点击这个按钮可以打开html连接,显示网页的效果
${NSD_CreateButton} 130 280 100 15 ""
Pop $Btn_LoadPath
StrCpy $1 $Btn_LoadPath
Call SkinBtn_HtmlLicense
GetFunctionAddress $3 onClickHtmlLicense
SkinBtn::onClick $1 $3
;界面的上方图片
${NSD_CreateBitmap} 0 0 520 230 ""
Pop $TopImage
${NSD_SetImage} $TopImage $PLUGINSDIR\welcome.bmp $ImageHandle
;贴背景大图
${NSD_CreateBitmap} 0 0 100% 100% ""
Pop $BGImage
;${NSD_SetImage} $BGImage $PLUGINSDIR\bg.bmp $ImageHandle
${NSD_SetImage} $BGImage $PLUGINSDIR\bg.bmp $ImageHandle
GetFunctionAddress $0 onGUICallback
WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
nsDialogs::Show
${NSD_FreeImage} $ImageHandle
;当加上以下的代码后,背景图片以及界面的上方图片显示出来
GetFunctionAddress $0 onGUICallback
WndProc::onCallback $BGImage $0 ;处理无边框窗体移动
nsDialogs::Show
;释放背景图片的语句
{NSD_FreeImage} $ImageHandle
FunctionEnd