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