Xokar
17th January 2009 15:45 UTC
nsDialogs IP Address Control
I'm trying to create an IP Address Control using nsDialogs and not having much luck.
No matter what I do I can't get a handle back other than 0, can someone let me know what I'm doing wrong?
Here's the code:
!define ICC_INTERNET_CLASSES 0x00000800
nsDialogs::Create 1018
Pop $Dialog
StrCmp $Dialog "error" 0 Start
Abort
Start:
System::Alloc 400
Pop $R0
StrLen $1 "${ICC_INTERNET_CLASSES}"
System::Call "*$R0(i r1, i ${ICC_INTERNET_CLASSES})"
System::Call 'comctl32::InitCommonControlsEx(iR0)i.R4'
nsDialogs::CreateControl "WC_IPADDRESS" "${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_CHILD}" "0" 5% 88% 40% 12u ""
Pop $1
messagebox mb_ok $1
System::Free $R0
nsDialogs::Show
Anders
17th January 2009 20:04 UTC
its not StrLen, but the size in bytes of the structure, try:
System::Call "*$R0(i 8, i ${ICC_INTERNET_CLASSES})"
also, WC_xxx is a define, so, make sure there is a define with that name and put ${ } around it, or just use "SysIPAddress32"
Xokar
20th January 2009 12:04 UTC
Thanks! It's working now :)
Animaether
19th April 2010 12:49 UTC
Just cross-referencing this thread to a recent thread that discusses a font problem that can occur when using the SysIPAddress32 control 'as is'. Short summary: you must create a new font and set it on the IP address control before use to prevent corruption of your installer font.
http://forums.winamp.com/showthread.php?t=318497 - Problem of NSD_CreateIPAddress.nsh