2017-08-03 69 views
0

中單擊後退我有一個複選框上的我的客戶安裝的網頁記住複選框的狀態時,NSIS安裝

${NSD_CreateCheckbox} 0 0 100% 15 "Check to run" 
Pop $SvcCheckBox 
CreateFont $0 "$(^Font)" "10" 
SendMessage $SvcCheckBox ${WM_SETFONT} $0 1 
GetFunctionAddress $0 OnCheckbox 
nsDialogs::OnClick $SvcCheckBox $0 

我要記住這一點,如果用戶回來此網頁之一。

我用下面的代碼來嘗試這個

${NSD_OnBack} "pageLeave" 

FunctionEnd 


Function pageLeave 
    ${NSD_GetState} $SvcCheckBoxState $SvcCheckBox 
FunctionEnd 

然而,如果用戶未檢查框,進入下一個頁面,回來到這個頁面,該複選框被再次檢查。我需要它保持不受檢查。

如何在頁面加載時實現我的pageLeave複選框狀態?

回答

2

您需要在創建頁面時初始化複選框狀態。除非您想在複選框更改時更新頁面上的其他內容,否則不需要On *處理程序。

!include nsDialogs.nsh 

Var CheckboxState 
Var hCheckbox 

Function .onInit 
StrCpy $CheckboxState ${BST_CHECKED} ; Set initial/default state 
FunctionEnd 

Page Components 
Page Custom MyPageCreate MyPageLeave 
Page Components 
Page InstFiles 

Function MyPageCreate 
nsDialogs::Create 1018 
Pop $0 

${NSD_CreateCheckbox} 0 0 100% 15 "Check to run" 
Pop $hCheckbox 
${NSD_SetState} $hCheckbox $CheckboxState 

nsDialogs::Show 
FunctionEnd 

Function MyPageLeave 
${NSD_GetState} $hCheckbox $CheckboxState 
FunctionEnd 

Section 
DetailPrint State=$CheckboxState 
SectionEnd