0

我正在尝试使用 nsDialogs 将各种图像(作为图标)放在单个自定义页面中。

我提供的这个例子就是这样做的,但它只显示了第一张图片。但是如果我评论/删除第一张图片的代码,显示第二张,如果我对第二张做同样的事情,它会显示第三张,依此类推。

屏幕截图:提供代码的自定义页面:当设置四个具有相同代码时,仅显示一个图标。

对我来说,我错过了一些东西,但我已经搜索了一个使用 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\1.ico "1.ico"
    File /oname=$PLUGINSDIR\2.ico "2.ico"
    File /oname=$PLUGINSDIR\3.ico "3.ico"
    File /oname=$PLUGINSDIR\4.ico "4.ico"
FunctionEnd

Function FirstCreate

    nsDialogs::Create 1018
    
    ${NSD_CreateIcon} 8u 12u 32px 32px
        Pop $1
        ${NSD_SetIcon} $1 "$PLUGINSDIR\1.ico" $R1
    
    ${NSD_CreateIcon} 8u 47u 32px 32px
        Pop $2
        ${NSD_SetIcon} $2 "$PLUGINSDIR\2.ico" $R2
    
    ${NSD_CreateIcon} 8u 60u 32px 32px
        Pop $3
        ${NSD_SetIcon} $3 "$PLUGINSDIR\3.ico" $R3
        
    ${NSD_CreateIcon} 8u 84u 32px 32px
        Pop $4
        ${NSD_SetIcon} $4 "$PLUGINSDIR\4.ico" $R4
    
    nsDialogs::Show
    
FunctionEnd

Function SecondCreate
    nsDialogs::Create 1018
    nsDialogs::Show
FunctionEnd

Section
    
SectionEnd

带有图标和示例的完整包可以在这里下载(更新)

谢谢!

编辑

做更多测试,我发现如果我在第一个页面之后使用nsDialogs创建第二个自定义页面,完全为空,第一页只显示“1”,你可以转到第二页,回到第一页,然后它显示“1”和“2”。我用新示例更新了此页面中的所有内容。

4

1 回答 1

0
  1. 您在 nsDialogs::Create 之后缺少一个 Pop。
  2. 没有 px 后缀。
  3. 创建控件时缺少最后一个参数。

RequestExecutionLevel User


!include nsDialogs.nsh

Page Custom FirstCreate

Function .onGUIInit
    InitPluginsDir
    File /oname=$PLUGINSDIR\1.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-blue.ico"
    File /oname=$PLUGINSDIR\2.ico "${NSISDIR}\Contrib\Graphics\Icons\llama-grey.ico"
    File /oname=$PLUGINSDIR\3.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-install.ico"
    File /oname=$PLUGINSDIR\4.ico "${NSISDIR}\Contrib\Graphics\Icons\nsis1-uninstall.ico"

FunctionEnd

Function FirstCreate

    nsDialogs::Create 1018
    Pop $0
    
    ${NSD_CreateIcon} 8u 12u 32 32 ""
    Pop $1
    ${NSD_SetIcon} $1 "$PLUGINSDIR\1.ico" $R1
    
    ${NSD_CreateIcon} 8u 47u 32 32 ""
    Pop $2
    ${NSD_SetIcon} $2 "$PLUGINSDIR\2.ico" $R2
    
    ${NSD_CreateIcon} 8u 60u 32 32 ""
    Pop $3
    ${NSD_SetIcon} $3 "$PLUGINSDIR\3.ico" $R3
        
    ${NSD_CreateIcon} 8u 84u 32 32 ""
    Pop $4
    ${NSD_SetIcon} $4 "$PLUGINSDIR\4.ico" $R4
    
    nsDialogs::Show
    ${NSD_FreeIcon} $R1
    ${NSD_FreeIcon} $R2
    ${NSD_FreeIcon} $R3
    ${NSD_FreeIcon} $R4
    
FunctionEnd


Section
SectionEnd
于 2021-12-20T00:04:37.083 回答