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
如果想獲取更多內容,請關注本人微信公衆號:
公衆號二維碼: