NSIS:如何删除 Label 或 nsDialogs 中可用的任何其他控件?
NSIS: How do I delete a Label or any other control that is available in nsDialogs?
场景:
我有一个复选框,使用 ${NSD_CreateCheckBox} 创建。使用 http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html#step-notify 中给出的方法,对于 ${NSD_OnClick},我使用 ${NSD_CreateLabel} 创建了一个标签,每当它被选中时就在复选框下方。
现在,当我取消选中复选框控件时,如何删除我在复选框下方创建的标签。
有没有类似${NSD_Delete*}的东西?
没有删除宏,但如果您真的需要它,您可以自己实现,但通常您只是 show/hide 一个控件。
!include nsDialogs.nsh
!include LogicLib.nsh
!ifndef NSD_DestroyControl
!define NSD_DestroyControl "!insertmacro NSD_DestroyControl "
!macro NSD_DestroyControl h
System::Call 'USER32::DestroyWindow(i${h})'
#Could also use: SendMessage ${h} ${WM_CLOSE} 0 0
!macroend
!endif
Page Custom MyPage
Page InstFiles
Var CheckShowHide
Var Lbl1
Var CheckDestroy
Var Lbl2
Function MyPage
nsDialogs::Create 1018
Pop [=10=]
${NSD_CreateCheckbox} 0 30u 100% 10u "Show/Hide"
Pop $CheckShowHide
${NSD_CreateLabel} 0 50u 100% 12u "Hello"
Pop $Lbl1
${NSD_OnClick} $CheckShowHide ShowHide
${NSD_Check} $CheckShowHide
${NSD_CreateCheckbox} 0 70u 100% 10u "Create/Destroy"
Pop $CheckDestroy
${NSD_OnClick} $CheckDestroy CreateDestroy
nsDialogs::Show
FunctionEnd
Function ShowHide
Pop [=10=]
${NSD_GetState} $CheckShowHide [=10=]
${If} [=10=] = ${BST_UNCHECKED}
ShowWindow $Lbl1 0
${Else}
ShowWindow $Lbl1 1
${EndIF}
FunctionEnd
Function CreateDestroy
Pop [=10=]
${NSD_GetState} $CheckDestroy [=10=]
${If} [=10=] = ${BST_UNCHECKED}
${NSD_DestroyControl} $Lbl2
${Else}
${NSD_CreateLabel} 0 90u 100% 12u "World"
Pop $Lbl2
${EndIF}
FunctionEnd
场景: 我有一个复选框,使用 ${NSD_CreateCheckBox} 创建。使用 http://nsis.sourceforge.net/Docs/nsDialogs/Readme.html#step-notify 中给出的方法,对于 ${NSD_OnClick},我使用 ${NSD_CreateLabel} 创建了一个标签,每当它被选中时就在复选框下方。
现在,当我取消选中复选框控件时,如何删除我在复选框下方创建的标签。
有没有类似${NSD_Delete*}的东西?
没有删除宏,但如果您真的需要它,您可以自己实现,但通常您只是 show/hide 一个控件。
!include nsDialogs.nsh
!include LogicLib.nsh
!ifndef NSD_DestroyControl
!define NSD_DestroyControl "!insertmacro NSD_DestroyControl "
!macro NSD_DestroyControl h
System::Call 'USER32::DestroyWindow(i${h})'
#Could also use: SendMessage ${h} ${WM_CLOSE} 0 0
!macroend
!endif
Page Custom MyPage
Page InstFiles
Var CheckShowHide
Var Lbl1
Var CheckDestroy
Var Lbl2
Function MyPage
nsDialogs::Create 1018
Pop [=10=]
${NSD_CreateCheckbox} 0 30u 100% 10u "Show/Hide"
Pop $CheckShowHide
${NSD_CreateLabel} 0 50u 100% 12u "Hello"
Pop $Lbl1
${NSD_OnClick} $CheckShowHide ShowHide
${NSD_Check} $CheckShowHide
${NSD_CreateCheckbox} 0 70u 100% 10u "Create/Destroy"
Pop $CheckDestroy
${NSD_OnClick} $CheckDestroy CreateDestroy
nsDialogs::Show
FunctionEnd
Function ShowHide
Pop [=10=]
${NSD_GetState} $CheckShowHide [=10=]
${If} [=10=] = ${BST_UNCHECKED}
ShowWindow $Lbl1 0
${Else}
ShowWindow $Lbl1 1
${EndIF}
FunctionEnd
Function CreateDestroy
Pop [=10=]
${NSD_GetState} $CheckDestroy [=10=]
${If} [=10=] = ${BST_UNCHECKED}
${NSD_DestroyControl} $Lbl2
${Else}
${NSD_CreateLabel} 0 90u 100% 12u "World"
Pop $Lbl2
${EndIF}
FunctionEnd