[User32|Win32k]

- Update NtUser pump functions, based on known values. Move one more function to the right place.

svn path=/trunk/; revision=51201
This commit is contained in:
James Tabor 2011-03-30 01:00:28 +00:00
parent f42a29cf5c
commit 0d6b3c7ebd
4 changed files with 94 additions and 95 deletions

View file

@ -2404,28 +2404,28 @@ NtUserQueryWindow(
HWND hWnd, HWND hWnd,
DWORD Index); DWORD Index);
DWORD BOOL
NTAPI NTAPI
NtUserRealInternalGetMessage( NtUserRealInternalGetMessage(
DWORD dwUnknown1, LPMSG lpMsg,
DWORD dwUnknown2, HWND hWnd,
DWORD dwUnknown3, UINT wMsgFilterMin,
DWORD dwUnknown4, UINT wMsgFilterMax,
DWORD dwUnknown5, UINT wRemoveMsg,
DWORD dwUnknown6); BOOL bGMSG);
DWORD HWND
NTAPI NTAPI
NtUserRealChildWindowFromPoint( NtUserRealChildWindowFromPoint(
DWORD Unknown0, HWND Parent,
DWORD Unknown1, LONG x,
DWORD Unknown2); LONG y);
DWORD BOOL
NTAPI NTAPI
NtUserRealWaitMessageEx( NtUserRealWaitMessageEx(
DWORD dwUnknown1, DWORD dwWakeMask,
DWORD dwUnknown2); UINT uTimeout);
BOOL BOOL
NTAPI NTAPI

View file

@ -935,25 +935,25 @@ NtUserQueryInputContext(
return 0; return 0;
} }
DWORD BOOL
APIENTRY APIENTRY
NtUserRealInternalGetMessage( NtUserRealInternalGetMessage(
DWORD dwUnknown1, LPMSG lpMsg,
DWORD dwUnknown2, HWND hWnd,
DWORD dwUnknown3, UINT wMsgFilterMin,
DWORD dwUnknown4, UINT wMsgFilterMax,
DWORD dwUnknown5, UINT wRemoveMsg,
DWORD dwUnknown6) BOOL bGMSG)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return 0; return 0;
} }
DWORD BOOL
APIENTRY APIENTRY
NtUserRealWaitMessageEx( NtUserRealWaitMessageEx(
DWORD dwUnknown1, DWORD dwWakeMask,
DWORD dwUnknown2) UINT uTimeout)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return 0; return 0;
@ -1252,10 +1252,10 @@ NtUserLockWindowUpdate(HWND hWnd)
/* /*
* @unimplemented * @unimplemented
*/ */
DWORD APIENTRY HWND APIENTRY
NtUserRealChildWindowFromPoint(DWORD Unknown0, NtUserRealChildWindowFromPoint(HWND Parent,
DWORD Unknown1, LONG x,
DWORD Unknown2) LONG y)
{ {
UNIMPLEMENTED UNIMPLEMENTED

View file

@ -1478,73 +1478,6 @@ NtUserBuildHwndList(
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
/*
* @implemented
*/
HWND APIENTRY
NtUserChildWindowFromPointEx(HWND hwndParent,
LONG x,
LONG y,
UINT uiFlags)
{
PWND Parent;
POINTL Pt;
HWND Ret;
HWND *List, *phWnd;
if(!(Parent = UserGetWindowObject(hwndParent)))
{
return NULL;
}
Pt.x = x;
Pt.y = y;
if(Parent->head.h != IntGetDesktopWindow())
{
Pt.x += Parent->rcClient.left;
Pt.y += Parent->rcClient.top;
}
if(!IntPtInWindow(Parent, Pt.x, Pt.y))
{
return NULL;
}
Ret = Parent->head.h;
if((List = IntWinListChildren(Parent)))
{
for(phWnd = List; *phWnd; phWnd++)
{
PWND Child;
if((Child = UserGetWindowObject(*phWnd)))
{
if(!(Child->style & WS_VISIBLE) && (uiFlags & CWP_SKIPINVISIBLE))
{
continue;
}
if((Child->style & WS_DISABLED) && (uiFlags & CWP_SKIPDISABLED))
{
continue;
}
if((Child->ExStyle & WS_EX_TRANSPARENT) && (uiFlags & CWP_SKIPTRANSPARENT))
{
continue;
}
if(IntPtInWindow(Child, Pt.x, Pt.y))
{
Ret = Child->head.h;
break;
}
}
}
ExFreePool(List);
}
return Ret;
}
static void IntSendParentNotify( PWND pWindow, UINT msg ) static void IntSendParentNotify( PWND pWindow, UINT msg )
{ {
if ( (pWindow->style & (WS_CHILD | WS_POPUP)) == WS_CHILD && if ( (pWindow->style & (WS_CHILD | WS_POPUP)) == WS_CHILD &&

View file

@ -1797,6 +1797,72 @@ BOOL FASTCALL IntEndDeferWindowPosEx( HDWP hdwp )
return res; return res;
} }
/*
* @implemented
*/
HWND APIENTRY
NtUserChildWindowFromPointEx(HWND hwndParent,
LONG x,
LONG y,
UINT uiFlags)
{
PWND Parent;
POINTL Pt;
HWND Ret;
HWND *List, *phWnd;
if(!(Parent = UserGetWindowObject(hwndParent)))
{
return NULL;
}
Pt.x = x;
Pt.y = y;
if(Parent->head.h != IntGetDesktopWindow())
{
Pt.x += Parent->rcClient.left;
Pt.y += Parent->rcClient.top;
}
if(!IntPtInWindow(Parent, Pt.x, Pt.y))
{
return NULL;
}
Ret = Parent->head.h;
if((List = IntWinListChildren(Parent)))
{
for(phWnd = List; *phWnd; phWnd++)
{
PWND Child;
if((Child = UserGetWindowObject(*phWnd)))
{
if(!(Child->style & WS_VISIBLE) && (uiFlags & CWP_SKIPINVISIBLE))
{
continue;
}
if((Child->style & WS_DISABLED) && (uiFlags & CWP_SKIPDISABLED))
{
continue;
}
if((Child->ExStyle & WS_EX_TRANSPARENT) && (uiFlags & CWP_SKIPTRANSPARENT))
{
continue;
}
if(IntPtInWindow(Child, Pt.x, Pt.y))
{
Ret = Child->head.h;
break;
}
}
}
ExFreePool(List);
}
return Ret;
}
/* /*
* @implemented * @implemented
*/ */