Skip to content
⌘ NSIS Forum Archive

Problem of NSD_CreateIPAddress.nsh

6 posts

jiake#edited

Problem of NSD_CreateIPAddress.nsh

!include "MUI2.nsh"
!include "CreateIPaddress.nsh"
Name "Program"
OutFile Program.exe
InstallDir $Temp
!insertmacro MUI_PAGE_DIRECTORY
Page custom CreatePage
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
Section Install
SectionEnd
Function CreatePage
    !insertmacro MUI_HEADER_TEXT "Set IP address" "Please input the IP address you want to set"
    nsDialogs::Create 1018
    Pop $0
    ${If} $0 == error
        Abort
    ${EndIf}
    ${NSD_CreateLabel} 0u 2u 64u 8u "Input IP address:"
    ${NSD_CreateIPaddress} 70u 0u 80u 12u ""
    nsDialogs::Show
FunctionEnd 
On the custom page, click back, then the font of directory selection page turns large:
Click image for larger version

Name:	pic1.png
Views:	1
Size:	16.4 KB
ID:	4479314
Click next, the font of the custom page also changes, not the former one.
Click image for larger version

Name:	pic2.png
Views:	1
Size:	11.8 KB
ID:	4479315
Animaether#
huh.. never noticed that before - but confirmed anyway (no idea if it's related to installing XP SP3). That's a weird bug.

'fraid that might (depending on whether a cause can be found and addressed) leave you with the alternative options of creating 4 text controls, or using 1 text control and validating input, etc.

Edit: looks like this is a known problem with SysIPAddress32. It disposes of the font that's used to create it, originally.
Animaether#
okay, solved thusly... create a new font and set that on the control before display. E.g.

    ${NSD_CreateLabel} 0u 0 20% 10% "Input IP address:"
        Pop $0
    ${NSD_CreateIPaddress} 20% 0 80% 10% "127.0.0.1"
        Pop $1
    CreateFont $R0 "$(^Font)" "$(^FontSize)"
    SendMessage $1 ${WM_SETFONT} $R0 1 
I'll adjust the header in the wiki after grabbing the font info elegantly somewhere.
Edit: adjusted post with the proper font langstrings.
Animaether#
Header file in the wiki ( http://nsis.sourceforge.net/NsDialogs_CreateIPaddress ) is now updated.

End-users: download the new version and your scripts using NSD_CreateIPAddress should continue to work just fine - and the installer font should no longer corrupt.

Developers: nsDialogs' framework doesn't allow for any particular post-fixing of its defines. The original define is renamed to NSD_CreateIPAddressControl. The original NSD_CreateIPAddress define is then re-defined to insert a macro which calls the renamed original and applies the font corruption fix and then pushes the control's handle back onto the stack.
jiake#
I tried the fixed header file, it works well. Neither click back or the next button, the font is right.