如何移除NSIS安装程序中消息框标题栏的图标?
移除NSIS消息框标题栏图标的可行方法
以下几种方案可以实现移除消息框标题栏图标的效果:
通过系统API修改默认MessageBox样式
利用Windows API定位弹出的消息框窗口,修改其窗口样式以移除图标。代码示例:Function .onGUIInit MessageBox MB_OK "Hello, world!" /SD IDOK $0 ; 定位消息框窗口 FindWindow $1 "#32770" "" $HWNDPARENT ; 移除标题栏图标(清除WS_SYSMENU中的图标相关标志) System::Call "user32::SetWindowLongPtr(i $1, i -16, i (${GetWindowLongPtr} $1 -16) & ~0x800000) i .r2" FunctionEnd注:
~0x800000用于剔除窗口样式中显示图标的位,SetWindowLongPtr负责更新窗口属性。自定义无图标对话框
直接创建完全自定义的对话框,从根源避免默认图标。借助NSIS内置的Dialogs.nsh实现:!include "Dialogs.nsh" Function CustomMessageBox ; 创建无图标对话框(0x1008样式不含标题栏图标) Dialog::Create 0x1008 0 0 200 100 "Hello, world!" "" Dialog::AddButton 0x50000001 120 70 60 20 "确定" Dialog::Show Pop $0 FunctionEnd Function .onGUIInit Call CustomMessageBox FunctionEnd使用nsDialogs插件创建自定义窗口
借助NSIS的nsDialogs插件构建更灵活的无图标消息框:!include "nsDialogs.nsh" Function nsDialogsCustomMsgBox nsDialogs::Create 0x1008 Pop $0 ${If} $0 == error Abort ${EndIf} nsDialogs::SetText "Hello, world!" nsDialogs::AddButton 0x50000001 120 70 60 20 "确定" nsDialogs::Show FunctionEnd Function .onGUIInit Call nsDialogsCustomMsgBox FunctionEnd
内容的提问来源于stack exchange,提问作者Boramae
相关产品推荐
相关产品推荐

