首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSD_GetState总是返回0: NSIS

NSD_GetState总是返回0: NSIS
EN

Stack Overflow用户
提问于 2015-09-24 16:48:39
回答 1查看 378关注 0票数 0

我试图在卸载程序中包含一个复选框。我把复选框放好了。但是,当我尝试获得状态复选框时,即使选中了复选框,它也始终返回0。这是我正在使用的代码

代码语言:javascript
复制
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ModifyUnWelcome
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_INSTFILES
!define MUI_FINISHPAGE_TITLE_3LINES
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.LeaveUnWelcome
!insertmacro MUI_UNPAGE_FINISH

Function un.ModifyUnWelcome
${NSD_CreateCheckbox} 120u -18u 50% 25u "Do something special"
Pop $mycheckbox
SetCtlColors $mycheckbox "" ${MUI_BGCOLOR}
${NSD_Check} $mycheckbox ; Check it by default
FunctionEnd

Function un.LeaveUnWelcome
${NSD_GetState} $mycheckbox $0
MessageBox MB_OK "On Leave mycheckbox = $mycheckbox $\n $$0 = $0"
${If} $0 <> 0
    MessageBox mb_ok "I'm special"
${EndIf}
FunctionEnd

因此,我无法验证是否选中了复选框。我的代码有什么问题,我如何修复它?

我甚至尝试了下面这样的方法

代码语言:javascript
复制
${NSD_Check} $mycheckbox ; Check it by default
${NSD_SetState} $mycheckbox ${BST_CHECKED}

我从Adding a checkbox to the NSIS Uninstaller Welcome Page获得了上面的代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-25 06:24:01

您的自定义函数引用两个不同的页面。ModifyUnWelcome在创建MUI_UNPAGE_WELCOME页面时调用LeaveUnWelcome --当用户离开最后一个MUI_UNPAGE_FINISH页面时。控件,该控件由ModifyUnWelcome的句柄拥有,在调用${NSD_GetState}时将被销毁。您应该将自定义函数定义放在彼此之间的附近,并将放在引用页面声明之前。

代码语言:javascript
复制
!define MUI_WELCOMEPAGE_TITLE_3LINES
!define MUI_PAGE_CUSTOMFUNCTION_SHOW un.ModifyUnWelcome
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE un.LeaveUnWelcome
!insertmacro MUI_UNPAGE_WELCOME
!insertmacro MUI_UNPAGE_INSTFILES
!define MUI_FINISHPAGE_TITLE_3LINES
!insertmacro MUI_UNPAGE_FINISH
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32766832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档