1
在我的自定義頁面中,我在頁面加載時禁用了下一個按鈕...因爲有一些後臺進程需要完成,直到我們無法進入下一頁。所以我使用下面的代碼禁用了下一個按鈕。如何在NSIS中啓用禁用的「下一步」按鈕?
GetDlgItem $1 $HWNDPARENT 1
EnableWindow $1 0
但是我想在後臺進程完成後啓用下一個按鈕。我已經使用了follwoing代碼,以便
GetDlgItem $1 $HWNDPARENT 1
EnableWindow $1 1
,但它不是工作... CLDü請提出由我做了錯誤或NSIS如何實現這一目標?
以下是我的代碼
Function StartProgressPage
; Set dialog text:
!insertmacro MUI_HEADER_TEXT "$(STARTPRGDIA_TITLE)" "$(STARTPRGDIA_SUBTITLE)"
; Display the page:
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "StartPrgDia"
;Disable Next Button
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 0
nsDialogs::Create 1018
Pop $dialog
nsDialogs::CreateControl "msctls_progress32" \
${DEFAULT_STYLES}|${PBS_SMOOTH} \
${PB_EXSTYLE} \
0 30 100% 10% \
"Test" \
Pop $hwnd
${NSD_CreateTimer} NSD_Timer.CallStop 10
nsDialogs::Show
FunctionEnd
Function NSD_Timer.CallStop
${NSD_KillTimer} NSD_Timer.CallStop ; Kill the timer
SendMessage $hwnd ${PBM_SETRANGE32} 0 100
SendMessage $hwnd ${PBM_SETPOS} 25 0
Call <Some Process>
SendMessage $hwnd ${PBM_SETPOS} 50 0
Call ConfPropertyChanges
SendMessage $hwnd ${PBM_SETPOS} 100 0
${NSD_CreateLabel} 0 10 20% 10u Completed
;Enable Next Button
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 1
FunctionEnd
它應該工作。它爲我做。你如何啓動這個後臺進程?我使用'ThreadTimer :: Start'。 –
我用我的代碼編輯了我的問題..請看看那個和cld你請更新我正確的方式... –
你的函數NSD_Timer.CallStop從來沒有被調用過。設置進度條位置對你有用嗎?也許問題是EnableWindow是從不同於主GUI線程的線程調用的。 – Slappy