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