mirror of
https://github.com/reactos/reactos.git
synced 2024-06-29 09:21:31 +00:00
- Add more hooks, where wine has them placed. Fixed user32 hooks for win32k.
svn path=/trunk/; revision=41656
This commit is contained in:
parent
f0ab7bf60b
commit
25e75aa265
|
@ -682,13 +682,13 @@ DefWndDoSizeMove(HWND hwnd, WORD wParam)
|
|||
DeleteObject(DesktopRgn);
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
if (ISITHOOKED(WH_CBT))
|
||||
//#if 0
|
||||
// if (ISITHOOKED(WH_CBT))
|
||||
{
|
||||
if (NtUserMessageCall( hWnd, WM_SYSCOMMAND, wParam, (LPARAM)&sizingRect, 0, FNID_DEFWINDOWPROC, FALSE))
|
||||
if (NtUserMessageCall( hwnd, WM_CBT, HCBT_MOVESIZE, (LPARAM)&sizingRect, 0, FNID_DEFWINDOWPROC, FALSE))
|
||||
moved = FALSE;
|
||||
}
|
||||
#endif
|
||||
//#endif
|
||||
(void)NtUserSetGUIThreadHandle(MSQ_STATE_MOVESIZE, NULL);
|
||||
SendMessageA( hwnd, WM_EXITSIZEMOVE, 0, 0 );
|
||||
SendMessageA( hwnd, WM_SETVISIBLE, !IsIconic(hwnd), 0L);
|
||||
|
@ -768,13 +768,15 @@ DefWndHandleSysCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
WINDOWPLACEMENT wp;
|
||||
POINT Pt;
|
||||
|
||||
#if 0
|
||||
if (ISITHOOKED(WH_CBT))
|
||||
if (!IsWindowEnabled( hWnd )) return 0;
|
||||
|
||||
//#if 0
|
||||
// if (ISITHOOKED(WH_CBT))
|
||||
{
|
||||
if (NtUserMessageCall( hWnd, WM_SYSCOMMAND, wParam, lParam, 0, FNID_DEFWINDOWPROC, FALSE))
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
//#endif
|
||||
switch (wParam & 0xfff0)
|
||||
{
|
||||
case SC_MOVE:
|
||||
|
@ -806,8 +808,8 @@ DefWndHandleSysCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
|
|||
}
|
||||
break;
|
||||
case SC_CLOSE:
|
||||
SendMessageA(hWnd, WM_CLOSE, 0, 0);
|
||||
break;
|
||||
return SendMessageW(hWnd, WM_CLOSE, 0, 0);
|
||||
|
||||
case SC_MOUSEMENU:
|
||||
{
|
||||
Pt.x = (short)LOWORD(lParam);
|
||||
|
|
|
@ -559,6 +559,7 @@ typedef struct _USERCONNECT
|
|||
//
|
||||
#define WM_SYSTIMER 280
|
||||
#define WM_POPUPSYSTEMMENU 787
|
||||
#define WM_CBT 1023 // ReactOS only.
|
||||
|
||||
//
|
||||
// Non SDK DCE types.
|
||||
|
|
|
@ -12,25 +12,6 @@
|
|||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
LRESULT FASTCALL
|
||||
IntDefWinHandleSysCommand( PWINDOW_OBJECT Window, WPARAM wParam, LPARAM lParam , BOOL Ansi)
|
||||
{
|
||||
DPRINT1("hwnd %p WM_SYSCOMMAND %lx %lx\n", Window->hSelf, wParam, lParam );
|
||||
|
||||
if (!ISITHOOKED(WH_CBT)) return 0;
|
||||
|
||||
// if (!UserCallNextHookEx(WH_CBT, HCBT_SYSCOMMAND, wParam, lParam, Ansi))
|
||||
return 0;
|
||||
|
||||
switch (wParam & 0xfff0)
|
||||
{
|
||||
case SC_MOVE:
|
||||
case SC_SIZE:
|
||||
// return UserCallNextHookEx(WH_CBT, HCBT_MOVESIZE, (WPARAM)Window->hSelf, lParam, Ansi);
|
||||
break;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/*
|
||||
Win32k counterpart of User DefWindowProc
|
||||
*/
|
||||
|
@ -54,7 +35,9 @@ IntDefWindowProc(
|
|||
{
|
||||
case WM_SYSCOMMAND:
|
||||
{
|
||||
lResult = IntDefWinHandleSysCommand( Window, wParam, lParam, Ansi );
|
||||
DPRINT1("hwnd %p WM_SYSCOMMAND %lx %lx\n", Window->hSelf, wParam, lParam );
|
||||
if (!ISITHOOKED(WH_CBT)) break;
|
||||
lResult = co_HOOK_CallHooks(WH_CBT, HCBT_SYSCOMMAND, wParam, lParam);
|
||||
break;
|
||||
}
|
||||
case WM_SHOWWINDOW:
|
||||
|
@ -76,8 +59,43 @@ IntDefWindowProc(
|
|||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WM_CBT:
|
||||
{
|
||||
if (!ISITHOOKED(WH_CBT)) break;
|
||||
|
||||
switch (wParam)
|
||||
{
|
||||
case HCBT_MOVESIZE:
|
||||
{
|
||||
RECTL rt;
|
||||
|
||||
if (lParam)
|
||||
{
|
||||
_SEH2_TRY
|
||||
{
|
||||
ProbeForRead((PVOID)lParam,
|
||||
sizeof(RECT),
|
||||
1);
|
||||
|
||||
RtlCopyMemory(&rt,
|
||||
(PVOID)lParam,
|
||||
sizeof(RECT));
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
lResult = 1;
|
||||
}
|
||||
_SEH2_END;
|
||||
}
|
||||
if (!lResult)
|
||||
lResult = co_HOOK_CallHooks(WH_CBT, HCBT_MOVESIZE, (WPARAM)Window->hSelf, lParam ? (LPARAM)&rt : 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return lResult;
|
||||
}
|
||||
|
||||
|
|
|
@ -320,6 +320,7 @@ co_IntSetActiveWindow(PWINDOW_OBJECT Window OPTIONAL)
|
|||
HWND hWndPrev;
|
||||
HWND hWnd = 0;
|
||||
PWINDOW Wnd;
|
||||
CBTACTIVATESTRUCT cbt;
|
||||
|
||||
if (Window)
|
||||
ASSERT_REFS_CO(Window);
|
||||
|
@ -346,7 +347,11 @@ co_IntSetActiveWindow(PWINDOW_OBJECT Window OPTIONAL)
|
|||
return hWndPrev;
|
||||
}
|
||||
|
||||
/* FIXME: Call hooks. */
|
||||
/* call CBT hook chain */
|
||||
cbt.fMouse = FALSE;
|
||||
cbt.hWndActive = hWndPrev;
|
||||
if (co_HOOK_CallHooks( WH_CBT, HCBT_ACTIVATE, (WPARAM)hWnd, (LPARAM)&cbt))
|
||||
return 0;
|
||||
|
||||
ThreadQueue->ActiveWindow = hWnd;
|
||||
|
||||
|
@ -382,6 +387,9 @@ co_IntSetFocusWindow(PWINDOW_OBJECT Window OPTIONAL)
|
|||
return hWndPrev;
|
||||
}
|
||||
|
||||
if (co_HOOK_CallHooks( WH_CBT, HCBT_SETFOCUS, (WPARAM)Window->hSelf, (LPARAM)hWndPrev))
|
||||
return 0;
|
||||
|
||||
ThreadQueue->FocusWindow = Window->hSelf;
|
||||
|
||||
co_IntSendKillFocusMessages(hWndPrev, Window->hSelf);
|
||||
|
@ -391,6 +399,9 @@ co_IntSetFocusWindow(PWINDOW_OBJECT Window OPTIONAL)
|
|||
{
|
||||
ThreadQueue->FocusWindow = 0;
|
||||
|
||||
if (co_HOOK_CallHooks( WH_CBT, HCBT_SETFOCUS, (WPARAM)0, (LPARAM)hWndPrev))
|
||||
return 0;
|
||||
|
||||
co_IntSendKillFocusMessages(hWndPrev, 0);
|
||||
}
|
||||
return hWndPrev;
|
||||
|
|
|
@ -308,6 +308,9 @@ co_WinPosMinMaximize(PWINDOW_OBJECT Window, UINT ShowFlag, RECT* NewPos)
|
|||
Size.y = Wnd->WindowRect.top;
|
||||
WinPosInitInternalPos(Window, &Size, &Wnd->WindowRect);
|
||||
|
||||
if (co_HOOK_CallHooks( WH_CBT, HCBT_MINMAX, (WPARAM)Window->hSelf, ShowFlag))
|
||||
return SWP_NOSIZE | SWP_NOMOVE;
|
||||
|
||||
if (Wnd->Style & WS_MINIMIZE)
|
||||
{
|
||||
if (!co_IntSendMessage(Window->hSelf, WM_QUERYOPEN, 0, 0))
|
||||
|
|
Loading…
Reference in a new issue