14#define MINMAX_NOSWP (0x00010000)
16#define SWP_EX_NOCOPY 0x0001
17#define SWP_EX_PAINTSELF 0x0002
19#define SWP_AGG_NOGEOMETRYCHANGE \
20 (SWP_NOSIZE | SWP_NOCLIENTSIZE | SWP_NOZORDER)
21#define SWP_AGG_NOPOSCHANGE \
22 (SWP_NOSIZE | SWP_NOMOVE | SWP_NOCLIENTSIZE | SWP_NOCLIENTMOVE | SWP_NOZORDER)
23#define SWP_AGG_STATUSFLAGS \
24 (SWP_AGG_NOPOSCHANGE | SWP_FRAMECHANGED | SWP_HIDEWINDOW | SWP_SHOWWINDOW)
25#define SWP_AGG_NOCLIENTCHANGE \
26 (SWP_NOCLIENTSIZE | SWP_NOCLIENTMOVE)
28#define EMPTYPOINT(pt) ((pt).x == -1 && (pt).y == -1)
29#define PLACE_MIN 0x0001
30#define PLACE_MAX 0x0002
31#define PLACE_RECT 0x0004
124 if (!Wnd)
return FALSE;
145 BOOL mirror_from, mirror_to;
152 mirror_from = mirror_to =
FALSE;
180 for (
i = 0;
i != cPoints;
i++)
183 lpPoints[
i].
x *= Change;
187 if ((mirror_from || mirror_to) && cPoints == 2)
189 int tmp =
min(lpPoints[0].
x, lpPoints[1].
x);
190 lpPoints[1].
x =
max(lpPoints[0].
x, lpPoints[1].
x);
277 Window->hrgnClip = hRgnClip;
286 BOOL ActivePrev, FindTopWnd;
287 PWND pWndTopMost, pWndChild, pWndSetActive, pWndTemp, pWndDesk;
305 pWndSetActive = pWndChild;
325 if (!pWndTemp ) pWndTemp = pWndSetActive;
330 pWndSetActive = pWndChild;
333 pWndSetActive = pWndSetActive->
spwndNext;
336 if ( !FindTopWnd )
break;
353 if ((pWndSetActive = pWndTemp))
376 if (!Wnd)
return FALSE;
413 TRACE(
"WPAOW Popup with Owner\n");
433 WndTo = Wnd->
head.pti->MessageQueue->spwndActivePrev;
531 WorkArea = pmonitor->
rcWork;
560 if (!Wnd)
return FALSE;
628 if (!pmonitor)
return;
734 INT x,
y, xspacing, yspacing, sx, sy;
758 Child->InternalPos.IconPos.x = sx;
759 Child->InternalPos.IconPos.y = sy;
766 if (
x <= rectParent.
right - xspacing)
783 PWND pwndChild, pwndParent;
784 int x,
y, xspacing, yspacing;
786 pwndParent =
Window->spwndParent;
789 ERR(
"FIXME: Parent is Desktop, Min off screen!\n");
813 if (pwndChild ==
Window)
continue;
824 if (
x <= rectParent.
right - xspacing)
838 TRACE(
"Position is set! X:%d Y:%d\n",
Pos->x,
Pos->y);
954 adjustedStyle =
style & ~WS_BORDER;
956 adjustedStyle =
style;
967 xinc = yinc = adjust;
1013 rc_work = monitor->
rcWork;
1033 Window->state &= ~WNDS_MAXIMIZESTOMONITOR;
1082 if (ClientRect->
left < WindowRect->
left)
1084 ClientRect->
left = WindowRect->
left;
1086 else if (WindowRect->
right < ClientRect->
left)
1090 if (ClientRect->
right < WindowRect->
left)
1094 else if (WindowRect->
right < ClientRect->
right)
1098 if (ClientRect->
top < WindowRect->
top)
1100 ClientRect->
top = WindowRect->
top;
1102 else if (WindowRect->
bottom < ClientRect->
top)
1106 if (ClientRect->
bottom < WindowRect->
top)
1147 valid[0] = *new_client;
1148 valid[1] = *old_client;
1192 params.rgrc[0] = *WindowRect;
1204 params.lppos = &winposCopy;
1205 winposCopy = *WinPos;
1213 *ClientRect =
params.rgrc[0];
1221 if (ClientRect->
left !=
Window->rcClient.left ||
1222 ClientRect->
top !=
Window->rcClient.top)
1224 WinPos->
flags &= ~SWP_NOCLIENTMOVE;
1229 WinPos->
flags &= ~SWP_NOCLIENTSIZE;
1232 wvrFlags &= ~WVR_HREDRAW;
1236 WinPos->
flags &= ~SWP_NOCLIENTSIZE;
1239 wvrFlags &= ~WVR_VREDRAW;
1241 validRects[0] =
params.rgrc[1];
1242 validRects[1] =
params.rgrc[2];
1247 (ClientRect->
left !=
Window->rcClient.left ||
1248 ClientRect->
top !=
Window->rcClient.top))
1250 WinPos->
flags &= ~SWP_NOCLIENTMOVE;
1278 TRACE(
"Sending WM_WINDOWPOSCHANGING to hwnd %p flags %04x.\n",
Window->head.h,WinPos->
flags);
1284 *WindowRect =
Window->rcWindow;
1296 WindowRect->
right = WindowRect->
left + WinPos->
cx;
1297 WindowRect->
bottom = WindowRect->
top + WinPos->
cy;
1315 TRACE(
"Not SWP_NOMOVE 1 Parent client offset X %d Y %d\n",
X,
Y);
1318 TRACE(
"Not SWP_NOMOVE 2 Parent client offset X %d Y %d\n",
X,
Y);
1321 WindowRect->
left =
X;
1322 WindowRect->
top =
Y;
1331 TRACE(
"hwnd %p, after %p, swp %d,%d %dx%d flags %08x\n",
1333 WinPos->
cx, WinPos->
cy, WinPos->
flags );
1362 TRACE(
"(%p) hInsertAfter = %p\n",
Window, hWndInsertAfter );
1368 TRACE(
"Window is child\n");
1369 return hWndInsertAfter;
1411 hWndInsertAfter =
List[
i - 1];
1418 return hWndInsertAfter;
1430 if (!topmost)
break;
1432 else if (
List[
i] == hWndInsertAfter)
break;
1436 return hWndInsertAfter;
1442 ERR(
"Window is HWND_BOTTOM hwnd %p\n",hWndInsertAfter);
1461 TRACE(
"skip all the topmost windows\n");
1473 if (
List[
i] == hWndInsertAfter)
break;
1503 hWndInsertAfter =
List[
i];
1508 return hWndInsertAfter;
1525 TRACE(
"InternalMoveWin X %d Y %d\n", MoveX, MoveY);
1527 Window->rcWindow.left += MoveX;
1528 Window->rcWindow.right += MoveX;
1529 Window->rcWindow.top += MoveY;
1530 Window->rcWindow.bottom += MoveY;
1532 Window->rcClient.left += MoveX;
1533 Window->rcClient.right += MoveX;
1534 Window->rcClient.top += MoveY;
1535 Window->rcClient.bottom += MoveY;
1556 if (WinPos->
x < -32768) WinPos->
x = -32768;
1557 else if (WinPos->
x > 32767) WinPos->
x = 32767;
1558 if (WinPos->
y < -32768) WinPos->
y = -32768;
1559 else if (WinPos->
y > 32767) WinPos->
y = 32767;
1561 WinPos->
cx =
max(WinPos->
cx, 0);
1562 WinPos->
cy =
max(WinPos->
cy, 0);
1572 WinPos->
flags &= ~SWP_HIDEWINDOW;
1586 TRACE(
"WPFU C2S wpx %d wpy %d ptx %d pty %d\n",WinPos->
x,WinPos->
y,
pt.x,
pt.y);
1601 WinPos->
flags &= ~SWP_NOZORDER;
1750 HWND WndInsertAfter,
1759 RECTL NewWindowRect;
1760 RECTL NewClientRect;
1761 RECTL valid_rects[2];
1767 RECTL OldWindowRect, OldClientRect;
1772 BOOL bPointerInWindow, PosChanged =
FALSE;
1777 TRACE(
"pwnd %p, after %p, %d,%d (%dx%d), flags 0x%x\n",
1780 dump_winpos_flags(
flags);
1801 WinPos.
flags &= ~SWP_ASYNCWINDOWPOS;
1821 TRACE(
"WinPosSetWindowPos: Invalid handle 0x%p!\n",WinPos.
hwnd);
1851 if ( VisBefore !=
NULL &&
1868 if ( VisBeforeJustClient !=
NULL &&
1872 VisBeforeJustClient =
NULL;
1874 else if(VisBeforeJustClient)
1883 if (
Window->hrgnNewFrame)
1901 OldWindowRect =
Window->rcWindow;
1902 OldClientRect =
Window->rcClient;
1904 if (NewClientRect.
left != OldClientRect.
left ||
1905 NewClientRect.
top != OldClientRect.
top)
1909 NewClientRect.
left - OldClientRect.
left,
1910 NewClientRect.
top - OldClientRect.
top);
1914 Window->rcWindow = NewWindowRect;
1915 Window->rcClient = NewClientRect;
1929 Window->style &= ~WS_VISIBLE;
1930 Window->head.pti->cVisWindows--;
1957 Window->head.pti->cVisWindows++;
1968 NewWindowRect.
left - OldWindowRect.
left,
1969 NewWindowRect.
top - OldWindowRect.
top);
1988 if ( VisAfter !=
NULL &&
2006 if ( ( VisBefore !=
NULL &&
2025 else if (VisBeforeJustClient !=
NULL)
2030 if (VisBeforeJustClient !=
NULL)
2059 else if ( OldWindowRect.
left != NewWindowRect.
left ||
2060 OldWindowRect.
top != NewWindowRect.
top ||
2151 TRACE(
"SWP_FRAMECHANGED win child %p Parent %p\n",pwnd,
Parent);
2170 TRACE(
"SWP_FRAMECHANGED win %p hRgn %p\n",pwnd, DcRgn);
2189 if ( VisBefore !=
NULL )
2196 OldWindowRect.
left - NewWindowRect.
left,
2197 OldWindowRect.
top - NewWindowRect.
top);
2199 if ( VisAfter !=
NULL )
2211 if (VisAfter !=
NULL)
2252 if ( VisBefore ==
NULL &&
2253 VisBeforeJustClient ==
NULL &&
2257 TRACE(
"No drawing, set no Z order and no redraw!\n");
2291 WinPos.
x = NewWindowRect.
left;
2292 WinPos.
y = NewWindowRect.
top;
2293 WinPos.
cx = NewWindowRect.
right - NewWindowRect.
left;
2294 WinPos.
cy = NewWindowRect.
bottom - NewWindowRect.
top;
2295 TRACE(
"WM_WINDOWPOSCHANGED hwnd %p Flags %04x\n",WinPos.
hwnd,WinPos.
flags);
2328 *ClientRect = *WindowRect;
2346 Wnd->
state &= ~WNDS_SENDSIZEMOVEMSGS;
2380 wpl.
length =
sizeof(wpl);
2385 ERR(
"WinPosMinMaximize WH_CBT Call Hook return!\n");
2418 Wnd->
InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
2470 Wnd->
InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
2506 Wnd->
InternalPos.flags &= ~WPF_RESTORETOMAXIMIZED;
2525 UINT Swp = 0, EventMsg = 0;
2526 RECTL NewPos = {0, 0, 0, 0};
2540 TRACE(
"co_WinPosShowWindow START hwnd %p Cmd %d usicmd %u\n",
2556 TRACE(
"co_WPSW FT 1\n");
2568 TRACE(
"co_WPSW FT 2\n");
2616 EventMsg = EVENT_SYSTEM_MINIMIZESTART;
2639 EventMsg = EVENT_SYSTEM_MINIMIZEEND;
2658 if (WasVisible)
return(
TRUE);
2723 ERR(
"WinPosShowWindow Set active\n");
2732 TRACE(
"Child is Vis %s or State changed %s. ShowFlag %s Swp %04x\n",
2734 (ShowFlag ?
"TRUE" :
"FALSE"),
LOWORD(Swp));
2745 TRACE(
"Parent Vis?\n");
2849 for (phWnd =
List; *phWnd; ++phWnd)
2858 if (pwndChild !=
NULL)
2899 if( ScopeWin ==
NULL )
2902 if(ScopeWin ==
NULL)
2933 Pt.
x +=
Parent->rcClient.left;
2941 for (phWnd =
List; *phWnd; phWnd++)
2960 return pwndHit ? pwndHit :
Parent;
2976 Pt.
x =
Parent->rcClient.right - Pt.
x;
2978 Pt.
x +=
Parent->rcClient.left;
2986 for (phWnd =
List; *phWnd; phWnd++)
3011 return pwndHit ? pwndHit :
Parent;
3027 HDWP retvalue = hdwp;
3029 TRACE(
"hdwp %p, hwnd %p, after %p, %d,%d (%dx%d), flags %08x\n",
3048 for (
i = 0;
i < pDWP->
ccvr;
i++)
3088 pDWP->
acvr = newpos;
3111 TRACE(
"%p\n", hdwp);
3119 for (
i = 0, winpos = pDWP->
acvr;
res && i < pDWP->ccvr;
i++, winpos++)
3124 TRACE(
"hwnd %p, after %p, %d,%d (%dx%d), flags %08x\n",
3140 *ppos = winpos->
pos;
3181 TRACE(
"Enter NtUserChildWindowFromPointEx\n");
3188 TRACE(
"Leave NtUserChildWindowFromPointEx\n");
3200 TRACE(
"Enter NtUserEndDeferWindowPosEx\n");
3203 TRACE(
"Leave NtUserEndDeferWindowPosEx, ret=%i\n", Ret);
3214 HWND WndInsertAfter,
3227 TRACE(
"Enter NtUserDeferWindowPos\n");
3242 if ( WndInsertAfter &&
3257 TRACE(
"Leave NtUserDeferWindowPos, ret=%p\n", Ret);
3329 if (!Hit) Ret = wndpl.
showCmd;
3348 TRACE(
"Enter NtUserGetWindowPlacement\n");
3377 TRACE(
"Leave NtUserGetWindowPlacement, ret=%i\n",_ret_);
3391 TRACE(
"Enter NtUserMinMaximize\n");
3411 TRACE(
"Leave NtUserMinMaximize\n");
3442 TRACE(
"Enter NtUserRealChildWindowFromPoint\n");
3449 TRACE(
"Leave NtUserRealChildWindowFromPoint\n");
3459 HWND hWndInsertAfter,
3471 TRACE(
"Enter NtUserSetWindowPos\n");
3477 ERR(
"NtUserSetWindowPos bad window handle!\n");
3481 if ( hWndInsertAfter !=
HWND_TOP &&
3489 ERR(
"NtUserSetWindowPos bad insert window handle!\n");
3497 if (
X < -32768)
X = -32768;
3498 else if (
X > 32767)
X = 32767;
3499 if (
Y < -32768)
Y = -32768;
3500 else if (
Y > 32767)
Y = 32767;
3505 else if (
cx > 32767)
cx = 32767;
3507 else if (
cy > 32767)
cy = 32767;
3517 TRACE(
"Leave NtUserSetWindowPos, ret=%i\n",_ret_);
3531 HRGN hrgnCopy =
NULL;
3537 TRACE(
"Enter NtUserSetWindowRgn\n");
3562 Window->hrgnNewFrame = hrgnCopy;
3574 TRACE(
"Leave NtUserSetWindowRgn, ret=%i\n",_ret_);
3597 TRACE(
"Enter NtUserSetWindowPlacement\n");
3626 wndpl.
length =
sizeof(wndpl);
3648 TRACE(
"Leave NtUserSetWindowPlacement, ret=%i\n",_ret_);
3666 TRACE(
"Enter NtUserSetWindowPlacement\n");
3700 TRACE(
"Leave NtUserSetWindowPlacement, ret=%i\n",_ret_);
3716 TRACE(
"Enter NtUserShowWindowAsync\n");
3739 TRACE(
"Leave NtUserShowWindowAsync, ret=%i\n",_ret_);
3755 TRACE(
"Enter NtUserShowWindow hWnd %p SW_ %d\n",
hWnd, nCmdShow);
3777 TRACE(
"Leave NtUserShowWindow, ret=%i\n",_ret_);
3796 TRACE(
"Enter NtUserWindowFromPoint\n");
3826 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)
BOOL FASTCALL IntEndDeferWindowPosEx(HDWP hdwp, BOOL sAsync)
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)
static LONG FASTCALL co_WinPosDoNCCALCSize(PWND Window, PWINDOWPOS WinPos, RECTL *WindowRect, RECTL *ClientRect, RECTL *validRects)
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.
struct _USER_MESSAGE_QUEUE * MessageQueue