2011-09-22 61 views
2

我正在使用NSIS安裝程序腳本語言編寫安裝腳本。我有幾個自定義頁面,我可以輕鬆加載,但我想知道是否可以動態插入頁面。我想要做的是有一個頁面上有其他配置選項,底部有一個複選框,指出「添加更多設置」或類似的東西。如果複選框被勾選,它將顯示另一個自定義頁面,它是第一個的精確副本。只要用戶不斷檢查複選框,應該顯示更多頁面。是否有一些方法一遍又一遍地重複使用同一頁?我真的不認爲我需要生成一個全新的頁面,因爲它只是一次又一次,但我不知道如何在運行時顯示同一頁面的新實例。快速的谷歌和stackoverflow搜索不保證任何結果。動態添加自定義頁面(運行時)

謝謝你們。

回答

1

頁數在編譯時是固定的。

如果您需要不同的「隱藏」頁面或僅僅是同一頁面的幾個實例,我會說你應該跳過頁面的時候通過調用abort來創建頁面的回調,但這不起作用如果頁數是無限的。

也可以直接轉到頁:

Outfile test.exe 
Requestexecutionlevel user 

!include nsDialogs.nsh 

Page Custom mypagecreate mypageleave 
Page Directory dirpagecreate 
Page Instfiles 

Function mypagecreate 
Var /Global MyCheckBox 
nsDialogs::Create /NOUNLOAD 1018 
Pop $0 
${NSD_CreateCheckBox} 10% 20u 80% 12u "Again?" 
Pop $MyCheckBox 
nsDialogs::Show 
FunctionEnd 

Function mypageleave 
${NSD_GetState} $MyCheckBox $0 
StrCpy $MyCheckBox $0 ; This is a bit of a hack, we reuse the HWND var to store the state 
FunctionEnd 

Function dirpagecreate 
${If} $MyCheckBox <> 0 ; Was the checkbox checked? 
    SendMessage $HWNDPARENT 0x408 -1 "" ; If so, go back 
${EndIf} 
FunctionEnd 

Section 
SectionEnd 
+0

這看起來真的對我好。我沒有考慮將窗口句柄存儲在以後重用。我會對此進行測試並對其進行編輯,以便讓您知道它是否按預期工作,但從這一點看,這對我來說看起來不錯。 –

+0

這對我來說效果很好。我能夠讓所有的東西都按我的意願工作。非常感謝你。 –

相關問題