!ifndef NULLSOFT_NX_WINDOW_RECT_NSIS_HEADER !define NULLSOFT_NX_WINDOW_RECT_NSIS_HEADER !include "util.nsh" !include "logicLib.nsh" !include "system.nsh" !macro NX_GetWindowRectInternal Exch $0 Push $2 Push $3 Push $4 Push $5 Push $1 System::Call "*${stRECT} .r1" System::Call "${fnGetWindowRect}($0, $1)" System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)" System::Free $1 Pop $1 Exch 4 Pop $0 Exch $5 Exch 3 Exch $2 Exch Exch $4 Exch 2 Exch $3 Exch !macroend !macro NX_GetWindowRect __hwnd __left __top __right __bottom Push "${__hwnd}" ${CallArtificialFunction} NX_GetWindowRectInternal Pop "${__left}" Pop "${__top}" Pop "${__right}" Pop "${__bottom}" !macroend !define NX_GetWindowRect `!insertmacro NX_GetWindowRect` !macro NX_GetMappedWindowRectInternal Exch $0 Exch Exch $2 Push $3 Push $4 Push $5 Push $1 System::Call "*${stRECT} .r1" System::Call "${fnGetWindowRect}(r0, r1)" System::Call '${fnMapWindowPoints}(0, r2, r1, 2)' System::Call "*$1${stRECT} (.r5, .r2, .r3, .r4)" System::Free $1 Pop $1 Exch 4 Pop $0 Exch $4 Exch 3 Exch $5 Exch Exch $3 Exch 2 Exch $2 Exch !macroend !macro NX_GetMappedWindowRect __hwnd __hwndParent __left __top __right __bottom Push "${__hwndParent}" Push "${__hwnd}" ${CallArtificialFunction} NX_GetMappedWindowRectInternal Pop "${__left}" Pop "${__top}" Pop "${__right}" Pop "${__bottom}" !macroend !define NX_GetMappedWindowRect `!insertmacro NX_GetMappedWindowRect` !macro NX_GetWindowSizeInternal Exch $0 Push $2 Push $3 Push $4 Push $5 Push $1 System::Call "*${stRECT} .r1" System::Call "${fnGetWindowRect} ($0, $1)" System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)" System::Free $1 Pop $1 IntOp $0 $4 - $2 IntOp $2 $5 - $3 Pop $5 Pop $4 Pop $3 Exch $2 Exch Exch $0 !macroend !macro NX_GetWindowSize __hwnd __width __height Push "${__hwnd}" ${CallArtificialFunction} NX_GetWindowSizeInternal Pop "${__width}" Pop "${__height}" !macroend !define NX_GetWindowSize `!insertmacro NX_GetWindowSize` !macro NX_GetWindowPosInternal Exch $0 Push $2 Push $3 Push $4 Push $5 Push $1 System::Call "*${stRECT} .r1" System::Call "${fnGetWindowRect}($0, $1)" System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)" System::Free $1 Pop $1 StrCpy $0 $3 Pop $5 Pop $4 Pop $3 Exch $2 Exch Exch $0 Exch !macroend !macro NX_GetWindowPos __hwnd __left __top Push "${__hwnd}" ${CallArtificialFunction} NX_GetWindowPosInternal Pop "${__left}" Pop "${__top}" !macroend !define NX_GetWindowPos `!insertmacro NX_GetWindowPos` !macro NX_GetMappedWindowPosInternal Exch $0 Exch Exch $2 Push $3 Push $4 Push $5 Push $1 System::Call "*${stRECT} .r1" System::Call "${fnGetWindowRect}($0, $1)" System::Call "${fnMapWindowPoints}(0, $2, r1, 1)" System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)" System::Free $1 Pop $1 StrCpy $0 $3 Pop $5 Pop $4 Pop $3 Exch $2 Exch Exch $0 Exch !macroend !macro NX_GetMappedWindowPos __hwnd __hwndParent __left __top Push "${__hwndParent}" Push "${__hwnd}" ${CallArtificialFunction} NX_GetMappedWindowPosInternal Pop "${__left}" Pop "${__top}" !macroend !define NX_GetMappedWindowPos `!insertmacro NX_GetMappedWindowPos` !macro NX_SetWindowPos __hwnd __left __top System::Call "${fnSetWindowPos} \ (${__hwnd}, 0, ${__left}, ${__top}, 0, 0, \ ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOSIZE})" !macroend !define NX_SetWindowPos `!insertmacro NX_SetWindowPos` !macro NX_SetWindowSize __hwnd __width __height System::Call "${fnSetWindowPos} \ (${__hwnd}, 0, 0, 0, ${__width}, ${__height}, \ ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOMOVE})" !macroend !define NX_SetWindowSize `!insertmacro NX_SetWindowSize` !macro NX_SetWindowPosAndSize __hwnd __left __top __width __height System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) b \ (${__hwnd}, 0, ${__left}, ${__top}, ${__width}, ${__height},\ ${SWP_NOACTIVATE}|${SWP_NOZORDER})" !macroend !define NX_SetWindowPosAndSize `!insertmacro NX_SetWindowPosAndSize` !macro NX_SetWindowOrder __hwnd __insertAfterWindow System::Call "${fnSetWindowPos} \ (${__hwnd}, ${__insertAfterWindow}, 0, 0, 0, 0, \ ${SWP_NOACTIVATE}|${SWP_NOSIZE}|${SWP_NOMOVE})" !macroend !define NX_SetWindowOrder `!insertmacro NX_SetWindowOrder` !macro NX_OffsetWindowPosInternal !define hwnd_ $R0 !define offsetX_ $R1 !define offsetY_ $R2 Exch ${offsetY_} Exch Exch ${offsetX_} Exch 2 Exch ${hwnd_} Push $0 Push $1 Push $2 Push $3 Push $4 System::Call "*${stRECT} .r4" System::Call "${fnGetWindowRect} (${hwnd_}, r4)" System::Call "${fnGetAncestor} (${hwnd_}, ${GA_PARENT}).r0" ${If} $R0 != 0 System::Call "${fnMapWindowPoints} (0, r0, r4, 2)" ${EndIf} System::Call "*$4${stRECT} (.r0, .r1, .r2, .r3)" System::Free $4 IntOp $0 $0 + ${offsetX_} IntOp $1 $1 + ${offsetY_} System::Call "${fnSetWindowPos} \ (${hwnd_}, 0, $0, $1, 0, 0, \ ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOSIZE})" Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 Pop ${hwnd_} Pop ${offsetY_} Pop ${offsetX_} !undef hwnd_ !undef offsetX_ !undef offsetY_ !macroend !macro NX_OffsetWindowPos __hwnd __offset_x __offset_y Push "${__hwnd}" Push "${__offset_x}" Push "${__offset_y}" ${CallArtificialFunction} NX_OffsetWindowPosInternal !macroend !define NX_OffsetWindowPos "!insertmacro 'NX_OffsetWindowPos'" !macro NX_IncreaseWindowSizeInternal !define hwnd_ $R0 !define deltaCX_ $R1 !define deltaCY_ $R2 Exch ${deltaCY_} Exch Exch ${deltaCX_} Exch 2 Exch ${hwnd_} Push $0 Push $1 Push $2 Push $3 Push $4 System::Call "*${stRECT} .r4" System::Call "${fnGetWindowRect}(${hwnd_}, r4)" System::Call "*$4${stRECT} (.r0, .r1, .r2, .r3)" System::Free $4 IntOp $0 $2 - $0 IntOp $1 $3 - $1 IntOp $0 $0 + ${deltaCX_} IntOp $1 $1 + ${deltaCY_} System::Call "${fnSetWindowPos}\ (${__hwnd}, 0, 0, 0, $0, $1, \ ${SWP_NOACTIVATE}|${SWP_NOZORDER}|${SWP_NOMOVE})" Pop $4 Pop $3 Pop $2 Pop $1 Pop $0 Pop ${hwnd_} Pop ${deltaCY_} Pop ${deltaCX_} !undef hwnd_ !undef deltaCX_ !undef deltaCY_ !macroend !macro NX_IncreaseWindowSize __hwnd __delta_cx __delta_cy Push "${__hwnd}" Push "${__delta_cx}" Push "${__delta_cy}" ${CallArtificialFunction} NX_IncreaseWindowSizeInternal !macroend !define NX_IncreaseWindowSize "!insertmacro 'NX_IncreaseWindowSize'" !macro NX_ConvertHorzDLUInternal Exch $1 ; dlu Exch Exch $0 ; hwnd Push $2 System::Call "*${stRECT}($1, 0, 0, 0) .r2" System::Call "${fnMapDialogRect}($0, $2).s" Pop $1 ${If} $1 != 0 System::Call "*$2${stRECT} (.r1, _)" ${EndIf} System::Free $2 Pop $2 Pop $0 Exch $1 !macroend !macro NX_ConvertHorzDLU __hwnd __dlu __px Push "${__hwnd}" Push "${__dlu}" ${CallArtificialFunction} NX_ConvertHorzDLUInternal Pop "${__px}" !macroend !define NX_ConvertHorzDLU `!insertmacro NX_ConvertHorzDLU` !macro NX_ConvertVertDLUInternal Exch $1 ; dlu Exch Exch $0 ; hwnd Push $2 System::Call "*${stRECT}(0, $1, 0, 0) .r2" System::Call "${fnMapDialogRect}($0, $2).s" Pop $1 ${If} $1 != 0 System::Call "*$2${stRECT} (., .r1, _)" ${EndIf} System::Free $2 Pop $2 Pop $0 Exch $1 !macroend !macro NX_ConvertVertDLU __hwnd __dlu __px Push "${__hwnd}" Push "${__dlu}" ${CallArtificialFunction} NX_ConvertVertDLUInternal Pop "${__px}" !macroend !define NX_ConvertVertDLU `!insertmacro NX_ConvertVertDLU` !endif ; defined(NULLSOFT_NX_WINDOW_RECT_NSIS_HEADER)