在我的MUI组件页面上,当用户试图离开该页面时,我会调用一个函数。在该函数中,我试图看到检查了至少1个组件。如果没有,那么我会显示一个MessageBox并中止(停止继续到下一页)。
我的问题:我的功能总是说即使某个组件没有,也会检查它。我做错了什么?
由于某种原因,程序总是认为第一个组件在没有时被检查/选择?
!include nsdialogs.nsh
!include MUI2.nsh
!define MUI_PAGE_CUSTOMFUNCTION_SHOW compshow
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE compleave
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_LANGUAGE "English"
OutFile "test.exe"
Function compshow
FunctionEnd
Function compleave
!insertmacro SectionFlagIsSet ${section1} ${SF_SELECTED} +1 +2
MessageBox MB_OK "Component Selected"
MessageBox MB_OK "Component NOT Selected"
FunctionEnd
Section "Dummy1"
SectionEnd
Section "Dummy2"
SectionEnd
答案 0 :(得分:1)
你的问题是相对跳跃。您应该使用一些标签,因为宏可能包含许多命令,而不仅仅是一个。
另外,认为执行将在第一次跳转后继续。别忘了跳过测试的其他分支。
修改后的compleave
回调按预期工作:
Function compleave
!insertmacro SectionFlagIsSet ${section1} ${SF_SELECTED} selected not_selected
selected:
MessageBox MB_OK "Component Selected"
goto end
not_selected:
MessageBox MB_OK "Component NOT Selected"
end:
FunctionEnd