16#define MINMAX_NOSWP (0x00010000)
18#define SWP_EX_NOCOPY 0x0001
19#define SWP_EX_PAINTSELF 0x0002
21#define SWP_AGG_NOGEOMETRYCHANGE \
22 (SWP_NOSIZE | SWP_NOCLIENTSIZE | SWP_NOZORDER)
23#define SWP_AGG_NOPOSCHANGE \
24 (SWP_NOSIZE | SWP_NOMOVE | SWP_NOCLIENTSIZE | SWP_NOCLIENTMOVE | SWP_NOZORDER)
25#define SWP_AGG_STATUSFLAGS \
26 (SWP_AGG_NOPOSCHANGE | SWP_FRAMECHANGED | SWP_HIDEWINDOW | SWP_SHOWWINDOW)
27#define SWP_AGG_NOCLIENTCHANGE \
28 (SWP_NOCLIENTSIZE | SWP_NOCLIENTMOVE)
30#define EMPTYPOINT(pt) ((pt).x == -1 && (pt).y == -1)
31#define PLACE_MIN 0x0001
32#define PLACE_MAX 0x0002
33#define PLACE_RECT 0x0004
126 if (!Wnd)
return FALSE;
147 BOOL mirror_from, mirror_to;
154 mirror_from = mirror_to =
FALSE;
182 for (
i = 0;
i != cPoints;
i++)
185 lpPoints[
i].
x *= Change;
189 if ((mirror_from || mirror_to) && cPoints == 2)
191 int tmp =
min(lpPoints[0].
x, lpPoints[1].
x);
192 lpPoints[1].
x =
max(lpPoints[0].
x, lpPoints[1].
x);
279 Window->hrgnClip = hRgnClip;
288 BOOL ActivePrev, FindTopWnd;
289 PWND pWndTopMost, pWndChild, pWndSetActive, pWndTemp, pWndDesk;
307 pWndSetActive = pWndChild;
327 if (!pWndTemp ) pWndTemp = pWndSetActive;
332 pWndSetActive = pWndChild;
335 pWndSetActive = pWndSetActive->
spwndNext;
338 if ( !FindTopWnd )
break;
355 if ((pWndSetActive = pWndTemp))
378 if (!Wnd)
return FALSE;
415 TRACE(
"WPAOW Popup with Owner\n");
435 WndTo = Wnd->
head.pti->MessageQueue->spwndActivePrev;
533 WorkArea = pmonitor->
rcWork;
562 if (!Wnd)
return FALSE;
630 if (!pmonitor)
return;
736 INT x,
y, xspacing, yspacing, sx, sy;
760 Child->InternalPos.IconPos.x = sx;
761 Child->InternalPos.IconPos.y = sy;
768 if (
x <= rectParent.
right - xspacing)
785 PWND pwndChild, pwndParent;
786 int x,
y, xspacing, yspacing;
788 pwndParent =
Window->spwndParent;
791 ERR(
"FIXME: Parent is Desktop, Min off screen!\n");
815 if (pwndChild ==
Window)
continue;
826 if (
x <= rectParent.
right - xspacing)
840 TRACE(
"Position is set! X:%d Y:%d\n",
Pos->x,
Pos->y);
956 adjustedStyle =
style & ~WS_BORDER;
958 adjustedStyle =
style;
969 xinc = yinc = adjust;
1015 rc_work = monitor->
rcWork;
1035 Window->state &= ~WNDS_MAXIMIZESTOMONITOR;
1084 if (ClientRect->
left < WindowRect->
left)
1086 ClientRect->
left = WindowRect->
left;
1088 else if (WindowRect->
right < ClientRect->
left)
1092 if (ClientRect->
right < WindowRect->
left)
1096 else if (WindowRect->
right < ClientRect->
right)
1100 if (ClientRect->
top < WindowRect->
top)
1102 ClientRect->
top = WindowRect->
top;
1104 else if (WindowRect->
bottom < ClientRect->
top)
1108 if (ClientRect->
bottom < WindowRect->
top)
1149 valid[0] = *new_client;
1150 valid[1] = *old_client;
1194 params.rgrc[0] = *WindowRect;
1206 params.lppos = &winposCopy;
1207 winposCopy = *WinPos;
1215 *ClientRect =
params.rgrc[0];
1223 if (ClientRect->
left !=
Window->rcClient.left ||
1224 ClientRect->
top !=
Window->rcClient.top)
1226 WinPos->
flags &= ~SWP_NOCLIENTMOVE;
1231 WinPos->
flags &= ~SWP_NOCLIENTSIZE;
1234 wvrFlags &= ~WVR_HREDRAW;
1238 WinPos->
flags &= ~SWP_NOCLIENTSIZE;
1241 wvrFlags &= ~WVR_VREDRAW;
1243 validRects[0] =
params.rgrc[1];
1244 validRects[1] =
params.rgrc[2];
1249 (ClientRect->
left !=
Window->rcClient.left ||
1250 ClientRect->
top !=
Window->rcClient.top))
1252 WinPos->
flags &= ~SWP_NOCLIENTMOVE;
1280 TRACE(
"Sending WM_WINDOWPOSCHANGING to hwnd %p flags %04x.\n",
Window->head.h,WinPos->
flags);
1286 *WindowRect =
Window->rcWindow;
1298 WindowRect->
right = WindowRect->
left + WinPos->
cx;
1299 WindowRect->
bottom = WindowRect->
top + WinPos->
cy;
1317 TRACE(
"Not SWP_NOMOVE 1 Parent client offset X %d Y %d\n",
X,
Y);
1320 TRACE(
"Not SWP_NOMOVE 2 Parent client offset X %d Y %d\n",
X,
Y);
1323 WindowRect->
left =
X;
1324 WindowRect->
top =
Y;
1333 TRACE(
"hwnd %p, after %p, swp %d,%d %dx%d flags %08x\n",
1335 WinPos->
cx, WinPos->
cy, WinPos->
flags );
1364 TRACE(
"(%p) hInsertAfter = %p\n",
Window, hWndInsertAfter );
1370 TRACE(
"Window is child\n");
1371 return hWndInsertAfter;
1413 hWndInsertAfter =
List[
i - 1];
1420 return hWndInsertAfter;
1432 if (!topmost)
break;
1434 else if (
List[
i] == hWndInsertAfter)
break;
1438 return hWndInsertAfter;
1444 ERR(
"Window is HWND_BOTTOM hwnd %p\n",hWndInsertAfter);
1463 TRACE(
"skip all the topmost windows\n");
1475 if (
List[
i] == hWndInsertAfter)
break;
1505 hWndInsertAfter =
List[
i];
1510 return hWndInsertAfter;
1527 TRACE(
"InternalMoveWin X %d Y %d\n", MoveX, MoveY);
1529 Window->rcWindow.left += MoveX;
1530 Window->rcWindow.right += MoveX;
1531 Window->rcWindow.top += MoveY;
1532 Window->rcWindow.bottom += MoveY;
1534 Window->rcClient.left += MoveX;
1535 Window->rcClient.right += MoveX;
1536 Window->rcClient.top += MoveY;
1537 Window->rcClient.bottom += MoveY;
1558 if (WinPos->
x < -32768) WinPos->
x = -32768;
1559 else if (WinPos->
x > 32767) WinPos->
x = 32767;
1560 if (WinPos->
y < -32768) WinPos->
y = -32768;
1561 else if (WinPos->
y > 32767) WinPos->
y = 32767;
1563 WinPos->
cx =
max(WinPos->
cx, 0);
1564 WinPos->
cy =
max(WinPos->
cy, 0);
1574 WinPos->
flags &= ~SWP_HIDEWINDOW;
1588 TRACE(
"WPFU C2S wpx %d wpy %d ptx %d pty %d\n",WinPos->
x,WinPos->
y,
pt.x,
pt.y);
1603 WinPos->
flags &= ~SWP_NOZORDER;
1769 if (pwndNode ==
NULL ||
1789 HWND WndInsertAfter,
1798 RECTL NewWindowRect;
1799 RECTL NewClientRect;
1800 RECTL valid_rects[2];
1806 RECTL OldWindowRect, OldClientRect;
1811 BOOL bPointerInWindow, PosChanged =
FALSE;
1816 TRACE(
"pwnd %p, after %p, %d,%d (%dx%d), flags 0x%x\n",
1819 dump_winpos_flags(
flags);
1840 WinPos.
flags &= ~SWP_ASYNCWINDOWPOS;
1860 TRACE(
"WinPosSetWindowPos: Invalid handle 0x%p!\n",WinPos.
hwnd);
1890 if ( VisBefore !=
NULL &&
1907 if ( VisBeforeJustClient !=
NULL &&
1911 VisBeforeJustClient =
NULL;
1913 else if(VisBeforeJustClient)
1922 if (
Window->hrgnNewFrame)
1940 OldWindowRect =
Window->rcWindow;
1941 OldClientRect =
Window->rcClient;
1943 if (NewClientRect.
left != OldClientRect.
left ||
1944 NewClientRect.
top != OldClientRect.
top)
1948 NewClientRect.
left - OldClientRect.
left,
1949 NewClientRect.
top - OldClientRect.
top);
1953 Window->rcWindow = NewWindowRect;
1954 Window->rcClient = NewClientRect;
1968 Window->style &= ~WS_VISIBLE;
1969 Window->head.pti->cVisWindows--;
1996 Window->head.pti->cVisWindows++;
2007 NewWindowRect.
left - OldWindowRect.
left,
2008 NewWindowRect.
top - OldWindowRect.
top);
2027 if ( VisAfter !=
NULL &&
2045 if ( ( VisBefore !=
NULL &&
2064 else if (VisBeforeJustClient !=
NULL)
2069 if (VisBeforeJustClient !=
NULL)
2098 else if ( OldWindowRect.
left != NewWindowRect.
left ||
2099 OldWindowRect.
top != NewWindowRect.
top ||
2142 if (VisAfter !=
NULL)
2189 TRACE(
"SWP_FRAMECHANGED win child %p Parent %p\n",pwnd,
Parent);
2208 TRACE(
"SWP_FRAMECHANGED win %p hRgn %p\n",pwnd, DcRgn);
2227 if ( VisBefore !=
NULL )
2234 OldWindowRect.
left - NewWindowRect.
left,
2235 OldWindowRect.
top - NewWindowRect.
top);
2237 if ( VisAfter !=
NULL )
2249 if (VisAfter !=
NULL)
2290 if ( VisBefore ==
NULL &&
2291 VisBeforeJustClient ==
NULL &&
2295 TRACE(
"No drawing, set no Z order and no redraw!\n");
2329 WinPos.
x = NewWindowRect.
left;
2330 WinPos.
y = NewWindowRect.
top;
2331 WinPos.
cx = NewWindowRect.
right - NewWindowRect.
left;
2332 WinPos.
cy = NewWindowRect.
bottom - NewWindowRect.
top;
2333 TRACE(
"WM_WINDOWPOSCHANGED hwnd %p Flags %04x\n",WinPos.
hwnd,WinPos.
flags);
2373 *ClientRect = *WindowRect;
2391 Wnd->
state &= ~WNDS_SENDSIZEMOVEMSGS;
2425 wpl.
length =
sizeof(wpl);
2430 ERR(
"WinPosMinMaximize WH_CBT Call Hook return!\n");
2463 Wnd->
InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
2515 Wnd->
InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
2551 Wnd->
InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
2570 UINT Swp = 0, EventMsg = 0;
2571 RECTL NewPos = {0, 0, 0, 0};
2585 TRACE(
"co_WinPosShowWindow START hwnd %p Cmd %d usicmd %u\n",
2601 TRACE(
"co_WPSW FT 1\n");
2613 TRACE(
"co_WPSW FT 2\n");
2661 EventMsg = EVENT_SYSTEM_MINIMIZESTART;
2684 EventMsg = EVENT_SYSTEM_MINIMIZEEND;
2703 if (WasVisible)
return(
TRUE);
2768 ERR(
"WinPosShowWindow Set active\n");
2777 TRACE(
"Child is Vis %s or State changed %s. ShowFlag %s Swp %04x\n",
2779 (ShowFlag ?
"TRUE" :
"FALSE"),
LOWORD(Swp));
2790 TRACE(
"Parent Vis?\n");
2894 for (phWnd =
List; *phWnd; ++phWnd)
2903 if (pwndChild !=
NULL)
2944 if( ScopeWin ==
NULL )
2947 if(ScopeWin ==
NULL)
2979 Pt.
x +=
Parent->rcClient.left;
2987 for (phWnd =
List; *phWnd; phWnd++)
3006 return pwndHit ? pwndHit :
Parent;
3023 Pt.
x =
Parent->rcClient.right - Pt.
x;
3025 Pt.
x +=
Parent->rcClient.left;
3033 for (phWnd =
List; *phWnd; phWnd++)
3058 return pwndHit ? pwndHit :
Parent;
3075 HDWP retvalue = hdwp;
3077 TRACE(
"hdwp %p, hwnd %p, after %p, %d,%d (%dx%d), flags %08x\n",
3096 for (
i = 0;
i < pDWP->
ccvr;
i++)
3136 pDWP->
acvr = newpos;
3160 TRACE(
"%p\n", hdwp);
3168 for (
i = 0, winpos = pDWP->
acvr;
res && i < pDWP->ccvr;
i++, winpos++)
3173 TRACE(
"hwnd %p, after %p, %d,%d (%dx%d), flags %08x\n",
3189 *ppos = winpos->
pos;
3231 TRACE(
"Enter NtUserChildWindowFromPointEx\n");
3238 TRACE(
"Leave NtUserChildWindowFromPointEx\n");
3250 TRACE(
"Enter NtUserEndDeferWindowPosEx\n");
3253 TRACE(
"Leave NtUserEndDeferWindowPosEx, ret=%i\n", Ret);
3264 HWND WndInsertAfter,
3277 TRACE(
"Enter NtUserDeferWindowPos\n");
3292 if ( WndInsertAfter &&
3307 TRACE(
"Leave NtUserDeferWindowPos, ret=%p\n", Ret);
3379 if (!Hit) Ret = wndpl.
showCmd;
3398 TRACE(
"Enter NtUserGetWindowPlacement\n");
3427 TRACE(
"Leave NtUserGetWindowPlacement, ret=%i\n",_ret_);
3441 TRACE(
"Enter NtUserMinMaximize\n");
3461 TRACE(
"Leave NtUserMinMaximize\n");
3492 TRACE(
"Enter NtUserRealChildWindowFromPoint\n");
3499 TRACE(
"Leave NtUserRealChildWindowFromPoint\n");
3509 HWND hWndInsertAfter,
3521 TRACE(
"Enter NtUserSetWindowPos\n");
3527 ERR(
"NtUserSetWindowPos bad window handle!\n");
3531 if ( hWndInsertAfter !=
HWND_TOP &&
3539 ERR(
"NtUserSetWindowPos bad insert window handle!\n");
3547 if (
X < -32768)
X = -32768;
3548 else if (
X > 32767)
X = 32767;
3549 if (
Y < -32768)
Y = -32768;
3550 else if (
Y > 32767)
Y = 32767;
3555 else if (
cx > 32767)
cx = 32767;
3557 else if (
cy > 32767)
cy = 32767;
3567 TRACE(
"Leave NtUserSetWindowPos, ret=%i\n",_ret_);
3581 HRGN hrgnCopy =
NULL;
3587 TRACE(
"Enter NtUserSetWindowRgn\n");
3612 Window->hrgnNewFrame = hrgnCopy;
3624 TRACE(
"Leave NtUserSetWindowRgn, ret=%i\n",_ret_);
3647 TRACE(
"Enter NtUserSetWindowPlacement\n");
3676 wndpl.
length =
sizeof(wndpl);
3698 TRACE(
"Leave NtUserSetWindowPlacement, ret=%i\n",_ret_);
3716 TRACE(
"Enter NtUserSetWindowPlacement\n");
3750 TRACE(
"Leave NtUserSetWindowPlacement, ret=%i\n",_ret_);
3766 TRACE(
"Enter NtUserShowWindowAsync\n");
3789 TRACE(
"Leave NtUserShowWindowAsync, ret=%i\n",_ret_);
3805 TRACE(
"Enter NtUserShowWindow hWnd %p SW_ %d\n",
hWnd, nCmdShow);
3827 TRACE(
"Leave NtUserShowWindow, ret=%i\n",_ret_);
3846 TRACE(
"Enter NtUserWindowFromPoint\n");
3876 TRACE(
"Leave NtUserWindowFromPoint, ret=%p\n", _ret_);
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE Parent
#define DBG_DEFAULT_CHANNEL(ch)
VOID FASTCALL DceResetActiveDCEs(PWND Window)
#define NT_SUCCESS(StatCode)
#define ERROR_INVALID_PARAMETER
#define ValidateHwndNoErr(hwnd)
VOID FASTCALL IntEngWindowChanged(_In_ struct _WND *Window, _In_ FLONG flChanged)
#define ExAllocatePoolWithTag(hernya, size, tag)
VOID NTAPI ProbeForRead(IN CONST VOID *Address, IN SIZE_T Length, IN ULONG Alignment)
VOID NTAPI ProbeForWrite(IN PVOID Address, IN SIZE_T Length, IN ULONG Alignment)
HWND FASTCALL co_UserSetFocus(PWND Window)
BOOL FASTCALL IntCheckFullscreen(PWND Window)
BOOL FASTCALL UserSetActiveWindow(_In_opt_ PWND Wnd)
PUSER_MESSAGE_QUEUE gpqForeground
VOID FASTCALL UpdateShellHook(PWND Window)
BOOL FASTCALL co_IntSetForegroundWindow(PWND Window)
HWND FASTCALL UserGetForegroundWindow(VOID)
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLdouble GLdouble GLdouble GLdouble top
GLenum const GLfloat * params
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
#define WNDS2_WIN31COMPAT
#define WNDS_BEINGACTIVATED
#define UserHMGetHandle(obj)
#define WNDS_MAXIMIZESTOMONITOR
#define WNDS_ERASEBACKGROUND
#define WNDS_SENDSIZEMOVEMSGS
#define WNDS_SENDERASEBACKGROUND
#define MmCopyToCaller(x, y, z)
#define ExFreePoolWithTag(_P, _T)
VOID FASTCALL co_MsqInsertMouseMessage(MSG *Msg, DWORD flags, ULONG_PTR dwExtraInfo, BOOL Hook)
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
__kernel_entry W32KAPI INT APIENTRY NtGdiCombineRgn(_In_ HRGN hrgnDst, _In_ HRGN hrgnSrc1, _In_opt_ HRGN hrgnSrc2, _In_ INT iMode)
__kernel_entry W32KAPI BOOL APIENTRY NtGdiBitBlt(_In_ HDC hdcDst, _In_ INT x, _In_ INT y, _In_ INT cx, _In_ INT cy, _In_opt_ HDC hdcSrc, _In_ INT xSrc, _In_ INT ySrc, _In_ DWORD rop4, _In_ DWORD crBackColor, _In_ FLONG fl)
__kernel_entry W32KAPI HRGN APIENTRY NtGdiCreateRectRgn(_In_ INT xLeft, _In_ INT yTop, _In_ INT xRight, _In_ INT yBottom)
__kernel_entry W32KAPI INT APIENTRY NtGdiOffsetRgn(_In_ HRGN hrgn, _In_ INT cx, _In_ INT cy)
#define GDI_OBJ_HMGR_POWNED
#define GDI_OBJ_HMGR_PUBLIC
PVOID NTAPI PsGetCurrentThreadWin32Thread(VOID)
LRESULT APIENTRY co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam)
BOOL FASTCALL IntClientToScreen(PWND Wnd, LPPOINT lpPoint)
UINT FASTCALL co_WinPosMinMaximize(PWND Wnd, UINT ShowFlag, RECT *NewPos)
INT APIENTRY NtUserSetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw)
BOOL APIENTRY NtUserSetWindowPlacement(HWND hWnd, WINDOWPLACEMENT *lpwndpl)
DWORD APIENTRY NtUserMinMaximize(HWND hWnd, UINT cmd, BOOL Hide)
UINT FASTCALL co_WinPosArrangeIconicWindows(PWND parent)
static VOID FASTCALL FixClientRect(PRECTL ClientRect, PRECTL WindowRect)
BOOL FASTCALL IntSetWindowPlacement(PWND Wnd, WINDOWPLACEMENT *wpl, UINT Flags)
static BOOL FASTCALL co_WinPosDoWinPosChanging(PWND Window, PWINDOWPOS WinPos, PRECTL WindowRect, PRECTL ClientRect)
VOID FASTCALL co_WinPosActivateOtherWindow(PWND Wnd)
BOOLEAN FASTCALL co_WinPosSetWindowPos(PWND Window, HWND WndInsertAfter, INT x, INT y, INT cx, INT cy, UINT flags)
static BOOL FASTCALL WinPosFixupFlags(WINDOWPOS *WinPos, PWND Wnd)
BOOL APIENTRY NtUserMoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)
INT FASTCALL IntMapWindowPoints(PWND FromWnd, PWND ToWnd, LPPOINT lpPoints, UINT cPoints)
BOOL FASTCALL IsChildVisible(PWND pWnd)
PWND FASTCALL IntGetLastTopMostWindow(VOID)
BOOL APIENTRY NtUserSetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags)
VOID ForceNCPaintErase(PWND Wnd, HRGN hRgn, PREGION pRgn)
DWORD APIENTRY NtUserGetInternalWindowPos(HWND hWnd, LPRECT rectWnd, LPPOINT ptIcon)
static void make_point_onscreen(POINT *pt)
DWORD IntGetWindowBorders(DWORD Style, DWORD ExStyle)
VOID FASTCALL WinPosInitInternalPos(PWND Wnd, RECTL *RestoreRect)
DWORD APIENTRY NtUserSetInternalWindowPos(HWND hwnd, UINT showCmd, LPRECT lprect, LPPOINT lppt)
BOOL FASTCALL IntGetWindowPlacement(PWND Wnd, WINDOWPLACEMENT *lpwndpl)
static PWND co_WinPosSearchChildren(IN PWND ScopeWin, IN POINT *Point, IN OUT USHORT *HitTest, IN BOOL Ignore)
static VOID FASTCALL get_valid_rects(RECTL *old_client, RECTL *new_client, UINT flags, RECTL *valid)
BOOL FASTCALL ActivateOtherWindowMin(PWND Wnd)
static void make_rect_onscreen(RECT *rect)
PWND APIENTRY co_WinPosWindowFromPoint(IN PWND ScopeWin, IN POINT *WinPoint, IN OUT USHORT *HitTest, IN BOOL Ignore)
#define SWP_AGG_STATUSFLAGS
static VOID FASTCALL WinPosFindIconPos(PWND Window, POINT *Pos)
BOOL APIENTRY NtUserShowWindow(HWND hWnd, LONG nCmdShow)
HWND APIENTRY NtUserRealChildWindowFromPoint(HWND Parent, LONG x, LONG y)
LRESULT FASTCALL co_WinPosGetNonClientSize(PWND Window, RECT *WindowRect, RECT *ClientRect)
static VOID FASTCALL WinPosInternalMoveWindow(PWND Window, INT MoveX, INT MoveY)
VOID FASTCALL IntGetClientRect(PWND Wnd, RECTL *Rect)
BOOL APIENTRY NtUserShowWindowAsync(HWND hWnd, LONG nCmdShow)
static BOOL IntValidateParent(PWND Child, PREGION ValidateRgn)
BOOL FASTCALL IntGetWindowRect(PWND Wnd, RECTL *Rect)
#define SWP_AGG_NOCLIENTCHANGE
UINT FASTCALL co_WinPosGetMinMaxInfo(PWND Window, POINT *MaxSize, POINT *MaxPos, POINT *MinTrack, POINT *MaxTrack)
static HWND FASTCALL WinPosDoOwnedPopups(PWND Window, HWND hWndInsertAfter)
BOOL FASTCALL IntScreenToClient(PWND Wnd, LPPOINT lpPoint)
PWND APIENTRY IntChildWindowFromPointEx(PWND Parent, LONG x, LONG y, UINT uiFlags)
BOOL APIENTRY NtUserGetWindowPlacement(HWND hWnd, WINDOWPLACEMENT *lpwndpl)
static BOOL FASTCALL can_activate_window(PWND Wnd OPTIONAL)
void FASTCALL co_WinPosSendSizeMove(PWND Wnd)
BOOL UserHasWindowEdge(DWORD Style, DWORD ExStyle)
HWND APIENTRY NtUserWindowFromPoint(LONG X, LONG Y)
HDWP APIENTRY NtUserDeferWindowPos(HDWP WinPosInfo, HWND Wnd, HWND WndInsertAfter, int x, int y, int cx, int cy, UINT Flags)
HWND APIENTRY NtUserChildWindowFromPointEx(HWND hwndParent, LONG x, LONG y, UINT uiFlags)
BOOLEAN FASTCALL co_WinPosShowWindow(PWND Wnd, INT Cmd)
BOOL FASTCALL IntGetClientOrigin(PWND Window OPTIONAL, LPPOINT Point)
#define SWP_AGG_NOGEOMETRYCHANGE
VOID UserGetWindowBorders(DWORD Style, DWORD ExStyle, SIZE *Size, BOOL WithClient)
#define SWP_AGG_NOPOSCHANGE
VOID FASTCALL IntGetWindowBorderMeasures(PWND Wnd, UINT *cx, UINT *cy)
VOID SelectWindowRgn(PWND Window, HRGN hRgnClip)
PWND FASTCALL IntRealChildWindowFromPoint(PWND Parent, LONG x, LONG y)
HDWP FASTCALL IntDeferWindowPos(HDWP hdwp, HWND hwnd, HWND hwndAfter, INT x, INT y, INT cx, INT cy, UINT flags)
BOOL APIENTRY NtUserEndDeferWindowPosEx(HDWP WinPosInfo, BOOL bAsync)
BOOL FASTCALL IntEndDeferWindowPosEx(HDWP hdwp, BOOL bAsync)
static LONG FASTCALL co_WinPosDoNCCALCSize(PWND Window, PWINDOWPOS WinPos, RECTL *WindowRect, RECTL *ClientRect, RECTL *validRects)
static VOID FASTCALL IntImeWindowPosChanged(VOID)
VOID FASTCALL UserLeave(VOID)
VOID FASTCALL UserEnterShared(VOID)
VOID FASTCALL UserEnterExclusive(VOID)
static __inline VOID UserDerefObjectCo(PVOID obj)
static __inline VOID UserRefObjectCo(PVOID obj, PUSER_REFERENCE_ENTRY UserReferenceEntry)
#define WS_EX_DLGMODALFRAME
#define WS_EX_TRANSPARENT
_Out_opt_ int _Out_opt_ int * cy
#define _SEH2_GetExceptionCode()
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
PULONG MinorVersion OPTIONAL
Implementation of the Explorer desktop window.