jiake
16th October 2010 20:56 UTC
DlgProc plugin by gfm688 - Set call back functions for dialogs
The member named gfm688 from the Chinese NSIS forum "Dreams8" writes a plugin.
It allows you to add callback funtions for dialogs in your script.
example code:
FunctionEnd
>
It can be also used for custom control, and you can handle the page the pages and controls more easily.
Animaether
17th October 2010 00:28 UTC
sounds similar-ish to...
http://nsis.sourceforge.net/WndSubclass_plug-in
...?
jiake
17th October 2010 09:20 UTC
I don't know the plugin you said before, now I just know there is such one, and the author may not know. In 2004, bluenet compile a Chinese (Simplified) version of NSIS 2.14. It is called a classic version of NSIS, because the dialog call back funtions support feature was built-in. Here is some example script that can be compiled directly using the version, but do not need any plugin:
define IDC_ABOUT 1300
>!define IDC_LINK 1301
>!define IDM_ABOUT 1
>Function .onPageCallback
${If} $MSG = ${WM_INITDIALOG}
Push $0
Push$1
Push$2
Push$3
${GetDlgItemRect} $0 $1 $2 $3 $HWNDPARENT ${IDC_CANCEL}
IntOp $0 $2 - $0
IntOp$2 $3 - $1
${CreateButton} "关于(&A)" 20 $1 $0 $2 $HWNDPARENT ${IDC_ABOUT}
IntOp $3 $0 + 30
IntOp$1 $1 + 3
IntOp$2 $2 - 2
${CreateLink} $3 $1 130 $2 $HWNDPARENT ${IDC_LINK}
${
GetSystemMenu} $0 $HWNDPARENT
${AppendMenu} $0 ${MF_SEPARATOR} 0 0
${AppendMenu} $0 ${MF_STRING} ${IDM_ABOUT} "关于(&A)"
Pop $3
Pop$2
Pop$1
Pop$0
${ElseIf} $MSG = ${WM_COMMAND}
${If}$WPARAM = ${IDC_ABOUT}
${MessageBox2} `${PRODUCT_NAME}$\n版权所有 (C) ${PRODUCT_PUBLISHER}.$\n$\n我的主页:$\n${PRODUCT_WEB_SITE}` `关于` ${MB_OK}|${MB_ICONINFORMATION}
${ElseIf}$WPARAM = ${IDC_LINK}
ExecShell open `${PRODUCT_WEB_SITE}`
${EndIf}
${ElseIf}$MSG = ${WM_DRAWITEM}
${DrawLink} `访问 ${PRODUCT_PUBLISHER} 的网站` ${IDC_LINK} $LPARAM
${ElseIf} $MSG = ${WM_SYSCOMMAND}
${If}$WPARAM = ${IDM_ABOUT}
${MessageBox2} `${PRODUCT_NAME}$\n版权所有 (C) ${PRODUCT_PUBLISHER}.$\n$\n我的主页:$\n${PRODUCT_WEB_SITE}` `关于` ${MB_OK}|${MB_ICONINFORMATION}
${EndIf}
${EndIf}
>FunctionEnd
>
The script also needs the header "UsefulLib.nsh" (in the above attachment) written by bluenet.
The idea of author is to make the dialog call back funtion be independent of NSIS 2.14.