NSIS:最大化/最小化按钮事件处理

时间:2013-03-18 07:53:15

标签: event-handling nsis

我想知道当我点击我的对话框中的最大化按钮(我已经启用它)时如何处理该事件。 我想在每次单击最大化按钮时执行一些其他对话框元素调整大小,并在最小化时恢复。 那么,我怎样才能实现呢??? 请帮忙。 提前致谢。

1 个答案:

答案 0 :(得分:1)

NSIS实际上并不是为处理可重复大小的对话而设计的。

捕获大小事件的唯一方法是使用插件。您可以编写自己的自定义插件或尝试实验WndSubclass plugin,无论哪种方式,您都需要了解一下Windows API才能执行此操作...

编辑:

!include nsDialogs.nsh
!include WinCore.nsh
!include WndSubclass.nsh
!macro _Win_HIWORD_FIXED _outvar _in
IntOp ${_outvar} "${_in}" >> 16 ;sign extended
${LOWORD} ${_outvar} ${_outvar} ;make sure we strip off the upper word
!macroend
!undef HIWORD
!define HIWORD "!insertmacro _Win_HIWORD_FIXED "

Var ParentSubProc
Function ParentSubProc
${If} $2 = ${WM_SIZE}
    ${LOWORD} $1 $4
    ${HIWORD} $2 $4
    ${NSD_SetText} $hwndparent "Size: $1 x $2"
${EndIf}
FunctionEnd

Function .onGuiInit
${NSD_AddStyle} $hwndparent 0x70000
${WndSubclass_Subclass} $hwndparent ParentSubProc $ParentSubProc $ParentSubProc
FunctionEnd