一个自定义 NSIS 页面中的多个 nsDialogs 图像图标
Multiple nsDialogs image-icons in one custom NSIS page
我正在尝试使用 nsDialogs 将各种图像(作为图标)放在一个自定义页面中。
我提供的这个例子就是这样做的,但它只显示了第一张图片。但是如果我comment/delete第一张图片的代码,显示第二张,如果我对第二张做同样的事情,它会显示第三张,依此类推。
截图:Custom page with the code provided:设置四个相同代码时只显示一个图标。
对我来说,我遗漏了一些东西,但我已经搜索了一个使用 NSD_CreateIcon/NSD_SetIcon 来帮助解决这个问题的例子,运气好的话。我也尝试使用 NSD_CreateBitmap/NSD_SetBitmap 代替,但我遇到了同样的问题(我希望图标更好,因为它们具有透明度)。
代码如下:
Name "Example NSD Icon Test"
Outfile "ExampleNSDiconsTest.exe"
RequestExecutionLevel user
Unicode True
XPStyle on
!include nsDialogs.nsh
!include LogicLib.nsh
Page Custom FirstCreate
Page Custom SecondCreate
Page instfiles
Function .onGuiInit
InitPluginsDir
File /oname=$PLUGINSDIR.ico "1.ico"
File /oname=$PLUGINSDIR.ico "2.ico"
File /oname=$PLUGINSDIR.ico "3.ico"
File /oname=$PLUGINSDIR.ico "4.ico"
FunctionEnd
Function FirstCreate
nsDialogs::Create 1018
${NSD_CreateIcon} 8u 12u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R1
${NSD_CreateIcon} 8u 47u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R2
${NSD_CreateIcon} 8u 60u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R3
${NSD_CreateIcon} 8u 84u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R4
nsDialogs::Show
FunctionEnd
Function SecondCreate
nsDialogs::Create 1018
nsDialogs::Show
FunctionEnd
Section
SectionEnd
可以下载带有图标和示例的完整包here(已更新)
谢谢!
编辑:
做更多的测试,我发现如果我在第一个页面之后使用 nsDialogs 创建第二个自定义页面,完全是空的,第一页只显示“1”,你可以转到第二页,返回第一个,它显示“1”和“2”。我用新示例更新了此页面中的所有内容。
- 您在 nsDialogs::Create 之后缺少 Pop。
- 没有px后缀。
- 您在创建控件时缺少最后一个参数。
RequestExecutionLevel User
!include nsDialogs.nsh
Page Custom FirstCreate
Function .onGUIInit
InitPluginsDir
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-blue.ico"
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-grey.ico"
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-install.ico"
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-uninstall.ico"
FunctionEnd
Function FirstCreate
nsDialogs::Create 1018
Pop [=10=]
${NSD_CreateIcon} 8u 12u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R1
${NSD_CreateIcon} 8u 47u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R2
${NSD_CreateIcon} 8u 60u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R3
${NSD_CreateIcon} 8u 84u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R4
nsDialogs::Show
${NSD_FreeIcon} $R1
${NSD_FreeIcon} $R2
${NSD_FreeIcon} $R3
${NSD_FreeIcon} $R4
FunctionEnd
Section
SectionEnd
我正在尝试使用 nsDialogs 将各种图像(作为图标)放在一个自定义页面中。
我提供的这个例子就是这样做的,但它只显示了第一张图片。但是如果我comment/delete第一张图片的代码,显示第二张,如果我对第二张做同样的事情,它会显示第三张,依此类推。
截图:Custom page with the code provided:设置四个相同代码时只显示一个图标。
对我来说,我遗漏了一些东西,但我已经搜索了一个使用 NSD_CreateIcon/NSD_SetIcon 来帮助解决这个问题的例子,运气好的话。我也尝试使用 NSD_CreateBitmap/NSD_SetBitmap 代替,但我遇到了同样的问题(我希望图标更好,因为它们具有透明度)。
代码如下:
Name "Example NSD Icon Test"
Outfile "ExampleNSDiconsTest.exe"
RequestExecutionLevel user
Unicode True
XPStyle on
!include nsDialogs.nsh
!include LogicLib.nsh
Page Custom FirstCreate
Page Custom SecondCreate
Page instfiles
Function .onGuiInit
InitPluginsDir
File /oname=$PLUGINSDIR.ico "1.ico"
File /oname=$PLUGINSDIR.ico "2.ico"
File /oname=$PLUGINSDIR.ico "3.ico"
File /oname=$PLUGINSDIR.ico "4.ico"
FunctionEnd
Function FirstCreate
nsDialogs::Create 1018
${NSD_CreateIcon} 8u 12u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R1
${NSD_CreateIcon} 8u 47u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R2
${NSD_CreateIcon} 8u 60u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R3
${NSD_CreateIcon} 8u 84u 32px 32px
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R4
nsDialogs::Show
FunctionEnd
Function SecondCreate
nsDialogs::Create 1018
nsDialogs::Show
FunctionEnd
Section
SectionEnd
可以下载带有图标和示例的完整包here(已更新)
谢谢!
编辑:
做更多的测试,我发现如果我在第一个页面之后使用 nsDialogs 创建第二个自定义页面,完全是空的,第一页只显示“1”,你可以转到第二页,返回第一个,它显示“1”和“2”。我用新示例更新了此页面中的所有内容。
- 您在 nsDialogs::Create 之后缺少 Pop。
- 没有px后缀。
- 您在创建控件时缺少最后一个参数。
RequestExecutionLevel User
!include nsDialogs.nsh
Page Custom FirstCreate
Function .onGUIInit
InitPluginsDir
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-blue.ico"
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-grey.ico"
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-install.ico"
File /oname=$PLUGINSDIR.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-uninstall.ico"
FunctionEnd
Function FirstCreate
nsDialogs::Create 1018
Pop [=10=]
${NSD_CreateIcon} 8u 12u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R1
${NSD_CreateIcon} 8u 47u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R2
${NSD_CreateIcon} 8u 60u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R3
${NSD_CreateIcon} 8u 84u 32 32 ""
Pop
${NSD_SetIcon} "$PLUGINSDIR.ico" $R4
nsDialogs::Show
${NSD_FreeIcon} $R1
${NSD_FreeIcon} $R2
${NSD_FreeIcon} $R3
${NSD_FreeIcon} $R4
FunctionEnd
Section
SectionEnd