更换列表控件后NSIS安装器选韩语反复弹出语言选择框
NSIS多语言控件替换及Droplist尺寸问题解决方案
一、替换为ListBox/TreeView后韩语反复弹出语言选择框
可能原因
- TreeView/ListBox的通知事件逻辑与Droplist不一致,导致MultiLanguage插件未正确捕获韩语选中事件
- 韩语条目编码或语言ID在INI配置中存在异常
- 通知事件设为
ONDBLCLICK时,双击触发的语言选择流程与Droplist的单击提交逻辑不匹配
解决方案
- 调整通知事件类型
将ONDBLCLICK改为ONSELECT,让选中项立即触发语言确认:WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Notify" "ONSELECT" - 验证韩语语言条目配置
检查MultiLanguage.ini中韩语条目的Text和State值,确保语言ID(如KO)与MUI注册的语言宏一致:!insertmacro MUI_LANGUAGE "Korean" ; 确认此宏已正确注册 - 强制传递选中项状态
在lang_pre函数末尾添加代码,确保控件选中状态被MultiLanguage插件正确识别:; 触发确认逻辑,传递选中值 SendMessage $HWNDPARENT ${WM_COMMAND} ${IDOK} 0
二、Droplist设置Bottom属性无效导致超出边界
可能原因
InstallOptionsEx中Droplist控件的Bottom属性优先级低于Height和DropHeight,下拉列表高度默认由条目数量自动计算,会忽略手动设置的Bottom值。
解决方案
放弃使用Bottom,改用Height控制控件自身高度,DropHeight控制下拉列表的展开高度:
WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Left" "70" WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Top" "135" WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Width" "220" ; 自定义控件宽度 WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "Height" "32" ; 控件自身高度 WriteINIStr "$PLUGINSDIR\MultiLanguage.ini" "Field 4" "DropHeight" "160" ; 下拉列表最大展开高度
内容的提问来源于stack exchange,提问作者Endrit
相关产品推荐
相关产品推荐

