Author: fireball
Date: Tue Jan 18 12:47:07 2011
New Revision: 50422
URL:
http://svn.reactos.org/svn/reactos?rev=50422&view=rev
Log:
- Remove unneeded events code, definitions, types.
- Rename RosGdiGetDC() to RosGdiSetWindow(), to be consistent with the current model which
was discussed so hot in #reactos-dev. If/when it changes, it should be changed back.
- Remove RosGdiReleaseDC() because it's unused.
- Remove RosGdiSetDcRects() because it was added as kind of a temporary hack. Instead, get
position from a real window set for that DC.
- Change GR_WINDOW_ID to more suitable SWM_WINDOW_ID.
- Bring back getting hwnd via SWM for input events code because using ChildWindowFromPoint
introduces usability problems in some apps (e.g. unable to push buttons) and dependence on
hacked winlogon. To be investigated in future. Also as a bonus, it turns out to be faster.
Modified:
branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c
branches/arwinss/reactos/dll/win32/winent.drv/mouse.c
branches/arwinss/reactos/dll/win32/winent.drv/window.c
branches/arwinss/reactos/dll/win32/winent.drv/winent.h
branches/arwinss/reactos/include/reactos/wine/ntrosgdi.h
branches/arwinss/reactos/include/reactos/wine/rosuser.h
branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c
branches/arwinss/reactos/subsystems/win32/win32k/include/dc.h
branches/arwinss/reactos/subsystems/win32/win32k/include/swm.h
branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c
branches/arwinss/reactos/subsystems/win32/win32k/w32ksvc.db
Modified: branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winen…
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/gdidrv.c [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -117,9 +117,8 @@
const struct ntdrv_escape_set_drawable *data = in_data;
pdcattr->dc_rect = data->dc_rect;
- RosGdiSetDcRects(pdcattr->hKernelDC, NULL,
(RECT*)&data->drawable_rect);
-
- RosGdiGetDC(pdcattr->hKernelDC, data->drawable,
data->clip_children);
+
+ RosGdiSetWindow(pdcattr->hKernelDC, data->drawable,
data->clip_children);
TRACE( "SET_DRAWABLE hdc %p dc_rect %s drawable_rect
%s\n",
pdcattr->hdc, wine_dbgstr_rect(&data->dc_rect),
wine_dbgstr_rect(&data->drawable_rect) );
Modified: branches/arwinss/reactos/dll/win32/winent.drv/mouse.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winen…
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/mouse.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/mouse.c [iso-8859-1] Tue Jan 18 12:47:07
2011
@@ -178,7 +178,8 @@
}
/* get the window handle from cursor position */
- hwnd = ChildWindowFromPointEx(GetDesktopWindow(), pt, CWP_SKIPINVISIBLE);
+ //hwnd = ChildWindowFromPointEx(GetDesktopWindow(), pt, CWP_SKIPINVISIBLE);
+ hwnd = SwmGetWindowFromPoint(pt.x, pt.y);
if (flags & MOUSEEVENTF_MOVE)
{
Modified: branches/arwinss/reactos/dll/win32/winent.drv/window.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winen…
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/window.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/window.c [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -27,7 +27,7 @@
static const char whole_window_prop[] = "__arwin_nt_whole_window";
static const char client_window_prop[]= "__arwin_nt_client_window";
-GR_WINDOW_ID root_window = SWM_ROOT_WINDOW_ID;
+SWM_WINDOW_ID root_window = SWM_ROOT_WINDOW_ID;
/* FUNCTIONS **************************************************************/
@@ -134,7 +134,7 @@
}
else
{
- //GR_WINDOW_ID win = (GR_WINDOW_ID)GetPropA( hwnd, whole_window_prop );
+ //SWM_WINDOW_ID win = (SWM_WINDOW_ID)GetPropA( hwnd, whole_window_prop );
//ERR("win %p, w %d h %d, hwnd %x\n", win, width, height, hwnd);
//if (win && win != root_window) NTDRV_init_desktop( win, width, height
);
@@ -486,10 +486,10 @@
/***********************************************************************
* create_client_window
*/
-static GR_WINDOW_ID create_client_window( struct ntdrv_win_data *data )
+static SWM_WINDOW_ID create_client_window( struct ntdrv_win_data *data )
{
int cx, cy;
- GR_WINDOW_ID client;
+ SWM_WINDOW_ID client;
RECT winRect;
if ((cx = data->client_rect.right - data->client_rect.left) <= 0) cx = 1;
@@ -525,7 +525,7 @@
*
* Create the whole X window for a given window
*/
-GR_WINDOW_ID create_whole_window( struct ntdrv_win_data *data )
+SWM_WINDOW_ID create_whole_window( struct ntdrv_win_data *data )
{
int cx, cy;
//int mask;
@@ -596,14 +596,14 @@
*
* Return the X window associated with the full area of a window
*/
-GR_WINDOW_ID NTDRV_get_whole_window( HWND hwnd )
+SWM_WINDOW_ID NTDRV_get_whole_window( HWND hwnd )
{
struct ntdrv_win_data *data = NTDRV_get_win_data( hwnd );
if (!data)
{
if (hwnd == GetDesktopWindow()) return root_window;
- return (GR_WINDOW_ID)GetPropA( hwnd, whole_window_prop );
+ return (SWM_WINDOW_ID)GetPropA( hwnd, whole_window_prop );
}
return data->whole_window;
}
@@ -613,14 +613,14 @@
*
* Return the SWM window associated with the client area of a window
*/
-static GR_WINDOW_ID NTDRV_get_client_window( HWND hwnd )
+static SWM_WINDOW_ID NTDRV_get_client_window( HWND hwnd )
{
struct ntdrv_win_data *data = NTDRV_get_win_data( hwnd );
if (!data)
{
if (hwnd == GetDesktopWindow()) return root_window;
- return (GR_WINDOW_ID)GetPropA( hwnd, client_window_prop );
+ return (SWM_WINDOW_ID)GetPropA( hwnd, client_window_prop );
}
return data->client_window;
}
Modified: branches/arwinss/reactos/dll/win32/winent.drv/winent.h
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/winen…
==============================================================================
--- branches/arwinss/reactos/dll/win32/winent.drv/winent.h [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/winent.drv/winent.h [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -60,7 +60,7 @@
struct ntdrv_escape_set_drawable
{
enum ntdrv_escape_codes code; /* escape code (NTDRV_SET_DRAWABLE) */
- GR_WINDOW_ID drawable;
+ SWM_WINDOW_ID drawable;
BOOL clip_children;/* ClipByChildren or IncludeInferiors */
RECT dc_rect; /* DC rectangle relative to drawable */
RECT drawable_rect;/* Drawable rectangle relative to screen */
@@ -74,8 +74,8 @@
{
struct list entry; /* entry in the linked list of win data */
HWND hwnd; /* hwnd that this private data belongs to */
- GR_WINDOW_ID whole_window; /* SWM window for the complete window */
- GR_WINDOW_ID client_window; /* SWM window for the client area */
+ SWM_WINDOW_ID whole_window; /* SWM window for the complete window */
+ SWM_WINDOW_ID client_window; /* SWM window for the client area */
RECT window_rect; /* USER window rectangle relative to parent */
RECT whole_rect; /* SWM window rectangle for the whole window relative to
parent */
RECT client_rect; /* client area relative to parent */
@@ -87,7 +87,7 @@
//typedef void (*ntdrv_event_handler)( HWND hwnd, GR_EVENT *event );
-extern GR_WINDOW_ID root_window;
+extern SWM_WINDOW_ID root_window;
static inline void mirror_rect( const RECT *window_rect, RECT *rect )
{
@@ -154,4 +154,4 @@
void sync_window_position( struct ntdrv_win_data *data,
UINT swp_flags, const RECT *old_window_rect,
const RECT *old_whole_rect, const RECT *old_client_rect );
-GR_WINDOW_ID create_whole_window( struct ntdrv_win_data *data );
+SWM_WINDOW_ID create_whole_window( struct ntdrv_win_data *data );
Modified: branches/arwinss/reactos/include/reactos/wine/ntrosgdi.h
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/include/reactos…
==============================================================================
--- branches/arwinss/reactos/include/reactos/wine/ntrosgdi.h [iso-8859-1] (original)
+++ branches/arwinss/reactos/include/reactos/wine/ntrosgdi.h [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -100,9 +100,7 @@
int iPixelFormat,
const PIXELFORMATDESCRIPTOR *ppfd);
COLORREF APIENTRY RosGdiSetTextColor( HDC physDev, COLORREF color );
-VOID APIENTRY RosGdiSetDcRects( HDC physDev, RECT *rcDcRect, RECT *rcVport );
-VOID APIENTRY RosGdiGetDC( HDC physDev, GR_WINDOW_ID Wid, BOOL clipChildren );
-VOID APIENTRY RosGdiReleaseDC( HDC physDev );
+VOID APIENTRY RosGdiSetWindow( HDC physDev, SWM_WINDOW_ID Wid, BOOL clipChildren );
/* enum.c */
int APIENTRY RosGdiChoosePixelFormat(HDC physDev,
Modified: branches/arwinss/reactos/include/reactos/wine/rosuser.h
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/include/reactos…
==============================================================================
--- branches/arwinss/reactos/include/reactos/wine/rosuser.h [iso-8859-1] (original)
+++ branches/arwinss/reactos/include/reactos/wine/rosuser.h [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -15,49 +15,11 @@
#define SWM_ROOT_WINDOW_ID 1
-#define SWM_EVENT_TYPE_NONE 0
-#define SWM_EVENT_TYPE_EXPOSURE 1
-
-/* Event masks */
-#define SWM_EVENTMASK(n) (((ULONG) 1) << (n))
-
-#define SWM_EVENT_MASK_NONE SWM_EVENTMASK(SWM_EVENT_TYPE_NONE)
-#define SWM_EVENT_MASK_EXPOSURE SWM_EVENTMASK(SWM_EVENT_TYPE_EXPOSURE)
-
/* ENUMERATIONS **************************************************************/
/* TYPES *********************************************************************/
-typedef ULONG_PTR GR_WINDOW_ID;
-typedef ULONG SWM_EVENT_TYPE;
-
-typedef struct
-{
- SWM_EVENT_TYPE type; /**< event type */
- GR_WINDOW_ID wid; /**< window id */
- GR_WINDOW_ID otherid; /**< new/old focus id for focus events*/
- /**< for mouse enter only the following are valid:*/
- LONG rootx; /**< root window x coordinate */
- LONG rooty; /**< root window y coordinate */
- LONG x; /**< window x coordinate of mouse */
- LONG y; /**< window y coordinate of mouse */
-} SWM_EVENT_GENERAL;
-
-typedef struct {
- SWM_EVENT_TYPE type; /**< event type */
- GR_WINDOW_ID wid; /**< window id */
- LONG x; /**< window x coordinate of exposure */
- LONG y; /**< window y coordinate of exposure */
- LONG width; /**< width of exposure */
- LONG height; /**< height of exposure */
-} SWM_EVENT_EXPOSURE;
-
-typedef union
-{
- SWM_EVENT_TYPE type; /**< event type */
- SWM_EVENT_GENERAL general; /**< general window events */
- SWM_EVENT_EXPOSURE exposure; /**< exposure events */
-} SWM_EVENT;
+typedef ULONG_PTR SWM_WINDOW_ID;
/* FUNCTIONS *****************************************************************/
@@ -215,28 +177,25 @@
BOOL NTAPI
RosUserBuildShellHookHwndList(HWND *list, UINT *cbSize);
-GR_WINDOW_ID NTAPI
-SwmNewWindow(GR_WINDOW_ID parent, RECT *WindowRect, HWND hWnd, DWORD ex_style);
+SWM_WINDOW_ID NTAPI
+SwmNewWindow(SWM_WINDOW_ID parent, RECT *WindowRect, HWND hWnd, DWORD ex_style);
VOID NTAPI
SwmAddDesktopWindow(HWND hWnd, UINT Width, UINT Height);
VOID NTAPI
-SwmDestroyWindow(GR_WINDOW_ID Wid);
-
-VOID NTAPI
-SwmSetForeground(GR_WINDOW_ID Wid);
-
-VOID NTAPI
-SwmPosChanged(GR_WINDOW_ID Wid, const RECT *WindowRect, const RECT *OldRect, HWND
hWndAfter, UINT SwpFlags);
-
-VOID NTAPI
-SwmShowWindow(GR_WINDOW_ID Wid, BOOLEAN Show, UINT SwpFlags);
-
-int NTAPI
-SwmPeekEvent(SWM_EVENT *ep);
-
-VOID NTAPI
-SwmGetNextEvent(SWM_EVENT *ep);
+SwmDestroyWindow(SWM_WINDOW_ID Wid);
+
+VOID NTAPI
+SwmSetForeground(SWM_WINDOW_ID Wid);
+
+VOID NTAPI
+SwmPosChanged(SWM_WINDOW_ID Wid, const RECT *WindowRect, const RECT *OldRect, HWND
hWndAfter, UINT SwpFlags);
+
+HWND NTAPI
+SwmGetWindowFromPoint(LONG x, LONG y);
+
+VOID NTAPI
+SwmShowWindow(SWM_WINDOW_ID Wid, BOOLEAN Show, UINT SwpFlags);
#endif /* __WIN32K_NTUSER_H */
Modified: branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/gdi/dc.c [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -668,42 +668,23 @@
return color;
}
-VOID APIENTRY RosGdiSetDcRects( HDC physDev, RECT *rcDcRect, RECT *rcVport )
+VOID APIENTRY RosGdiSetWindow(HDC physDev, SWM_WINDOW_ID Wid, BOOL clipChildren)
{
PDC pDC;
+
+ /* Acquire SWM lock before locking the DC */
+ SwmAcquire();
/* Get a pointer to the DC */
pDC = DC_LockDc(physDev);
- _SEH2_TRY
- {
- /* Set viewport rectangle */
- if (rcVport)
- pDC->rcVport = *rcVport;
- }
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
- {
- }
- _SEH2_END;
-
- /* Release the object */
- DC_UnlockDc(pDC);
-}
-
-VOID APIENTRY RosGdiGetDC(HDC physDev, GR_WINDOW_ID Wid, BOOL clipChildren)
-{
- PDC pDC;
-
- /* Acquire SWM lock before locking the DC */
- SwmAcquire();
-
- /* Get a pointer to the DC */
- pDC = DC_LockDc(physDev);
-
/* Get a pointer to this window */
if (Wid)
{
pDC->pWindow = SwmGetWindowById(Wid);
+ RECTL_vSetRect(&pDC->rcVport,
+ pDC->pWindow->Window.left, pDC->pWindow->Window.top,
+ pDC->pWindow->Window.right,
pDC->pWindow->Window.bottom);
DPRINT("hdc %x set window hwnd %x\n", physDev,
pDC->pWindow->hwnd);
}
else
@@ -723,29 +704,6 @@
/* Release SWM lock */
SwmRelease();
}
-
-//FIXME: to be deleted!
-VOID APIENTRY RosGdiReleaseDC(HDC physDev)
-{
- PDC pDC;
-
- /* Get a pointer to the DC */
- pDC = DC_LockDc(physDev);
-
- /* Check if it was a dummy window */
- if (!pDC->pWindow->hwnd)
- {
- /* Free it */
- ExFreePool(pDC->pWindow);
- }
-
- /* No window clipping is to be performed */
- pDC->pWindow = NULL;
-
- /* Release the object */
- DC_UnlockDc(pDC);
-}
-
static
HPEN
Modified: branches/arwinss/reactos/subsystems/win32/win32k/include/dc.h
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -32,7 +32,7 @@
EBRUSHOBJ eboLine;
/* Origins and extents */
- RECT rcVport;
+ RECTL rcVport;
/* Combined clipping region */
struct region *Clipping;
Modified: branches/arwinss/reactos/subsystems/win32/win32k/include/swm.h
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/include/swm.h [iso-8859-1]
(original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/include/swm.h [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -1,11 +1,5 @@
#ifndef SWM__H
#define SWM__H
-
-typedef struct _SWM_EVENT_LIST SWM_EVENT_LIST;
-struct _SWM_EVENT_LIST {
- SWM_EVENT_LIST *next; /* next element in list */
- SWM_EVENT event; /* event */
-};
typedef struct _SWM_WINDOW
{
@@ -26,6 +20,6 @@
VOID NTAPI SwmAcquire(VOID);
VOID NTAPI SwmRelease(VOID);
HDC SwmGetScreenDC();
-PSWM_WINDOW NTAPI SwmGetWindowById(GR_WINDOW_ID Wid);
+PSWM_WINDOW NTAPI SwmGetWindowById(SWM_WINDOW_ID Wid);
#endif
Modified: branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/swm/winman.c [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -77,7 +77,7 @@
PSWM_WINDOW
NTAPI
-SwmGetWindowById(GR_WINDOW_ID Wid)
+SwmGetWindowById(SWM_WINDOW_ID Wid)
{
/* Right now, Wid is a pointer to SWM_WINDOW structure,
except for SWM_ROOT_WINDOW_ID which maps to a root window */
@@ -334,9 +334,9 @@
}
-GR_WINDOW_ID
-NTAPI
-SwmNewWindow(GR_WINDOW_ID parent, RECT *WindowRect, HWND hWnd, DWORD ex_style)
+SWM_WINDOW_ID
+NTAPI
+SwmNewWindow(SWM_WINDOW_ID parent, RECT *WindowRect, HWND hWnd, DWORD ex_style)
{
PSWM_WINDOW Win, FirstNonTop;
@@ -387,7 +387,7 @@
/* Release the lock */
SwmRelease();
- return (GR_WINDOW_ID)Win;
+ return (SWM_WINDOW_ID)Win;
}
VOID
@@ -470,7 +470,7 @@
VOID
NTAPI
-SwmDestroyWindow(GR_WINDOW_ID Wid)
+SwmDestroyWindow(SWM_WINDOW_ID Wid)
{
PSWM_WINDOW Win;
@@ -575,7 +575,7 @@
VOID
NTAPI
-SwmSetForeground(GR_WINDOW_ID Wid)
+SwmSetForeground(SWM_WINDOW_ID Wid)
{
PSWM_WINDOW SwmWin;
extern struct window *shell_window;
@@ -721,7 +721,7 @@
VOID
NTAPI
-SwmPosChanged(GR_WINDOW_ID Wid, const RECT *WindowRect, const RECT *OldRect, HWND
hWndAfter, UINT SwpFlags)
+SwmPosChanged(SWM_WINDOW_ID Wid, const RECT *WindowRect, const RECT *OldRect, HWND
hWndAfter, UINT SwpFlags)
{
PSWM_WINDOW SwmWin, SwmPrev;
LONG Width, Height, OldWidth, OldHeight;
@@ -826,7 +826,7 @@
VOID
NTAPI
-SwmShowWindow(GR_WINDOW_ID Wid, BOOLEAN Show, UINT SwpFlags)
+SwmShowWindow(SWM_WINDOW_ID Wid, BOOLEAN Show, UINT SwpFlags)
{
PSWM_WINDOW Win;
struct region *OldRegion;
@@ -887,6 +887,47 @@
/* Release the lock */
SwmRelease();
+}
+
+HWND
+NTAPI
+SwmGetWindowFromPoint(LONG x, LONG y)
+{
+ PLIST_ENTRY Current;
+ PSWM_WINDOW Window;
+
+ /* Acquire the lock */
+ SwmAcquire();
+
+ /* Traverse the list to find our window */
+ Current = SwmWindows.Flink;
+ while(Current != &SwmWindows)
+ {
+ Window = CONTAINING_RECORD(Current, SWM_WINDOW, Entry);
+
+ /* Skip hidden windows */
+ if (Window->Hidden)
+ {
+ /* Advance to the next window */
+ Current = Current->Flink;
+ continue;
+ }
+
+ if (point_in_region(Window->Visible, x, y))
+ {
+ /* Release the lock */
+ SwmRelease();
+
+ return Window->hwnd;
+ }
+ /* Advance to the next window */
+ Current = Current->Flink;
+ }
+
+ /* Release the lock */
+ SwmRelease();
+
+ return 0;
}
VOID
Modified: branches/arwinss/reactos/subsystems/win32/win32k/w32ksvc.db
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win3…
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/w32ksvc.db [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/w32ksvc.db [iso-8859-1] Tue Jan 18
12:47:07 2011
@@ -32,14 +32,13 @@
RosGdiSetPixel 4
RosGdiSetPixelFormat 3
RosGdiSetTextColor 2
-RosGdiSetDcRects 3
RosGdiChoosePixelFormat 2
RosGdiDescribePixelFormat 4
RosGdiEnumDeviceFonts 4
RosGdiGetCharWidth 4
RosGdiGetDeviceCaps 2
RosGdiGetDeviceGammaRamp 2
-RosGdiGetDC 3
+RosGdiSetWindow 3
RosGdiGetICMProfile 3
RosGdiGetNearestColor 2
RosGdiGetPixelFormat 1
@@ -59,7 +58,6 @@
RosGdiRealizeDefaultPalette 1
RosGdiRealizePalette 3
RosGdiRectangle 2
-RosGdiReleaseDC 1
RosGdiRoundRect 7
RosGdiSwapBuffers 1
RosGdiUnrealizePalette 1
@@ -91,5 +89,6 @@
SwmDestroyWindow 1
SwmSetForeground 1
SwmPosChanged 5
+SwmGetWindowFromPoint 2
SwmShowWindow 3
NtUserInitialize 3