我知道之前已经问过这个问题,发现有几个帖子他们说没有,但是我看到的最新帖子是2014年的,所以我想我会查看是否有任何我缺少的新功能。
有没有办法将消息框按钮更改为自定义文本?因此,我可以使用var labelHorMargin = titleLabel.Margin.Left + titleLabel.Margin.Right;
var blockHorMargin = titleBlock.Margin.Left + titleBlock.Margin.Right;
titleBlock.Width = canvas.Width - labelHorMargin - blockHorMargin;
代替YesNoCancel
。
我需要有几个消息框才能具备此功能。
如果该选项是写一些自定义插件,有人可以为我这样做,它会超出我的想法吗?
答案 0 :(得分:1)
NSIS只使用MessageBox Windows功能,但不允许您设置按钮文字。
最好的选择是自定义插件,但我怀疑是否有人愿意为你写一个,因为你问得很好。您可以在NSIS论坛上询问是否有人愿意支付少量费用。
作为一种解决方法,您可以使用内置页面上的DlgHost plug-in创建一个使用您自己的自定义设计的嵌套对话框:
!include nsDialogs.nsh
!include DlgHost.nsh
Page InstFiles
Function CloseDlgHostDialog
Pop $0
DlgHost::Close
FunctionEnd
Function DoSomethingElse
Pop $0
MessageBox mb_ok "Hello"
FunctionEnd
Function MyDlgBoxCallback
${Select} $0
${Case} ${DLGHOST_DLGBOXMSG_INITDLG}
nsDialogs::Create 1018
Pop $1
DlgHost::SetClient $1
${NSD_CreateLabel} 25% 20% 45% 15u "Hello from nsDialogs..."
Pop $1
${NSD_CreateButton} 10u 60% 50u 15u "&Close"
Pop $1
${NSD_OnClick} $1 CloseDlgHostDialog
${NSD_CreateButton} 70u 60% 80u 15u "&Do something else"
Pop $1
${NSD_OnClick} $1 DoSomethingElse
${Case} ${DLGHOST_DLGBOXMSG_SHOWDLG}
nsDialogs::Show
${EndSelect}
FunctionEnd
Function ShowNSDChildDlg
GetFunctionAddress $0 MyDlgBoxCallback
DlgHost::DlgBox "* $0 p 200u 120u Test Dialog"
FunctionEnd
Section
Call ShowNSDChildDlg
SectionEnd