1

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

4

1 回答 1

1

NSIS 真的不是为处理可调整大小的对话框而设计的。

捕获大小事件的唯一方法是使用插件。您可以编写自己的自定义插件或尝试实验性的WndSubclass 插件,无论哪种方式,您都非常需要了解 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
于 2013-03-18T17:39:02.377 回答