【问题标题】:Adding custom labels in NSIS dialog pages, showing and hiding labels in NSIS MUI Directory pages conditionally, how to get the ids of labels在 NSIS 对话框页面中添加自定义标签,有条件地在 NSIS MUI 目录页面中显示和隐藏标签,如何获取标签的 id
【发布时间】:2011-04-29 12:18:59
【问题描述】:

如何隐藏在 NSIS 安装程序的目录页面对话框中添加的自定义标签。 LABEL 是使用 Resource Hacker 添加的,它的 id 是 1300

如何有条件地改变LABEL的文字?

如果用户选择安装DEMO,那么标签文字应该是“DEMO”,如果用户选择安装UPDATE,那么标签文字应该是“UPDATE”

我添加了 2 个标签,现在我相应地隐藏和显示它们。Label1 ID 是 1300 ,Label2 ID 是 1301。

# Occurs on Directory page show.
Function DirectoryShow

   ${If} $InstallType == DEMO

    GetDlgItem $5 $HWNDPARENT 1300
MessageBox MB_OK "ID of First Label is $5"  ----IT SHOWS '0' INSTEAD OF SHOWING 1300

 ${NSD_SetText} $5 "INSTALLING DEMO OF SOFTWARE!!!!!!!!!!!!!!!!!" 

GetDlgItem $6 $HWNDPARENT 1301
ShowWindow $6 ${SW_HIDE}

;GetDlgItem $1 $HWNDPARENT 2
;ShowWindow $0 ${SW_SHOW}
;ShowWindow $1 ${SW_HIDE}

 ${Else}

GetDlgItem $7 $HWNDPARENT 1300
ShowWindow $7 ${SW_HIDE}

GetDlgItem $8 $HWNDPARENT 1301
 ${NSD_SetText} $8 "UPDATING EXISTING SOFTWARE !!!!!!!!!!!!!!!!!" 

${EndIf}
FunctionEnd 

如何获得这些标签的 ID?

【问题讨论】:

  • 您需要标签句柄,而不是 id。 1300是控件id,GetDlgItem会给你(窗口)句柄,也称为HWND。

标签: installation label custom-controls nsis nsis-mui


【解决方案1】:

NSIS 使用子对话框来托管实际页面:

你首先需要获取内部对话框的句柄,然后你可以找到标签:

FindWindow $0 "#32770" "" $HWNDPARENT ;(This is documented under section 4.9.14.6 in the help file)
GetDlgItem $5 $0 1300

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多