[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,
DWORD Index);
DWORD
BOOL
NTAPI
NtUserRealInternalGetMessage(
DWORD dwUnknown1,
DWORD dwUnknown2,
DWORD dwUnknown3,
DWORD dwUnknown4,
DWORD dwUnknown5,
DWORD dwUnknown6);
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax,
UINT wRemoveMsg,
BOOL bGMSG);
DWORD
HWND
NTAPI
NtUserRealChildWindowFromPoint(
DWORD Unknown0,
DWORD Unknown1,
DWORD Unknown2);
HWND Parent,
LONG x,
LONG y);
DWORD
BOOL
NTAPI
NtUserRealWaitMessageEx(
DWORD dwUnknown1,
DWORD dwUnknown2);
DWORD dwWakeMask,
UINT uTimeout);
BOOL
NTAPI

View file

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

View file

@ -1478,73 +1478,6 @@ NtUserBuildHwndList(
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 )
{
if ( (pWindow->style & (WS_CHILD | WS_POPUP)) == WS_CHILD &&

View file

@ -1797,6 +1797,72 @@ BOOL FASTCALL IntEndDeferWindowPosEx( HDWP hdwp )
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
*/