如何修改NSIS中MessageBox的標題(Caption)

在nsis中沒有提供修改MessageBox的標題的接口,例如,在我的軟件打包程序中調用下面的語句

MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "建議先卸載${PRODUCT_NAME},再安裝現有版本"  IDOK uninstall IDCANCEL next

窗口的標題顯示爲“名稱 安裝”,如下圖所示

 

所以爲了修改MessageBox的標題,應採用下面的方式,代碼如下:

!define MB_OKCANCEL 0x00000001
!define MB_ICONEXCLAMATION 0x00000030
System::Call 'USER32::MessageBox(i $hwndparent, t "建議先卸載${PRODUCT_NAME},再安裝現有版本", t "警告", i ${MB_OKCANCEL}|${MB_ICONEXCLAMATION})i .r1'

注:“.r1”表示將MessageBox的返回值賦值給$1,如果點擊了OK,$1賦值爲1,如果點擊了CANCEL,$1被賦值爲2。所以根據$1的值就可以控制後續的邏輯流程了。

這樣修改後,窗口的標題顯示爲“警告”,如下圖所示:

 

對話框窗口的返回值,如何使用呢?代碼如下:

# $1=1 確定; $1=2 取消

StrCmp $1 2 next 0

MB_OKCANCEL,MB_ICONEXCLAMATION 的值可參考微軟API

https://docs.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-messagebox?redirectedfrom=MSDN

借鑑網址:https://nsis-dev.github.io/NSIS-Forums/html/t-252587.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章