- Add utility of setting and clearing the state bits from user space. Use this later.
svn path=/trunk/; revision=56663
#define WNDS_MAXIMIZESTOMONITOR 0x40000000
#define WNDS_DESTROYED 0x80000000
+#define WNDSACTIVEFRAME 0x00000006
+
// State2 Flags !Not Implemented!
#define WNDS2_WMPAINTSENT 0X00000001
#define WNDS2_ENDPAINTINVALIDATE 0X00000002
break;
case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
- TRACE("co_IntSetForegroundWindow 1 %p\n",hWnd);
+ ERR("co_IntSetForegroundWindow 1 %p\n",hWnd);
Ret = co_IntSetForegroundWindow(Window);
- TRACE("co_IntSetForegroundWindow 2 \n");
+ ERR("co_IntSetForegroundWindow 2 \n");
break;
case HWNDLOCK_ROUTINE_UPDATEWINDOW:
UserLeave();
return 0;
}
+ case HWNDPARAM_ROUTINE_CLEARWINDOWSTATE:
+ {
+ PWND pWnd;
+ UserEnterExclusive();
+ pWnd = UserGetWindowObject(hWnd);
+ if (pWnd) IntClearWindowState(pWnd, (UINT)Param);
+ UserLeave();
+ return 0;
+ }
+ case HWNDPARAM_ROUTINE_SETWINDOWSTATE:
+ {
+ PWND pWnd;
+ UserEnterExclusive();
+ pWnd = UserGetWindowObject(hWnd);
+ if (pWnd) IntSetWindowState(pWnd, (UINT)Param);
+ UserLeave();
+ return 0;
+ }
}
STUB;
PVOID pvParam,
UINT fWinIni);
+VOID FASTCALL IntSetWindowState(PWND, UINT);
+VOID FASTCALL IntClearWindowState(PWND, UINT);
+
/*************** MESSAGE.C ***************/
BOOL FASTCALL
#error
#endif
+BOOL FASTCALL TestState(PWND, UINT);
+
EXTINLINE BOOL WINAPI
GetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi)
{
return NtUserCallHwnd(hWnd, HWND_ROUTINE_SETMSGBOX);
}
+EXTINLINE VOID NtUserxClearWindowState(PWND pWnd, UINT Flag)
+{
+ if (!TestState(pWnd, Flag)) return;
+ NtUserCallHwndParam(UserHMGetHandle(pWnd), (DWORD_PTR)Flag, HWNDPARAM_ROUTINE_CLEARWINDOWSTATE);
+}
+
+EXTINLINE VOID NtUserxSetWindowState(PWND pWnd, UINT Flag)
+{
+ if (TestState(pWnd, Flag)) return;
+ NtUserCallHwndParam(UserHMGetHandle(pWnd), (DWORD_PTR)Flag, HWNDPARAM_ROUTINE_SETWINDOWSTATE);
+}
+
EXTINLINE HWND NtUserxSetTaskmanWindow(HWND hWnd)
{
return NtUserCallHwndOpt(hWnd, HWNDOPT_ROUTINE_SETTASKMANWINDOW);
(DWORD_PTR)NtCurrentTeb()->ClientId.UniqueProcess );
}
+BOOL
+FASTCALL
+TestState(PWND pWnd, UINT Flag)
+{
+ UINT bit;
+ bit = 1 << LOWORD(Flag);
+ switch(HIWORD(Flag))
+ {
+ case 0:
+ return (pWnd->state & bit);
+ case 1:
+ return (pWnd->state2 & bit);
+ case 2:
+ return (pWnd->ExStyle2 & bit);
+ }
+ return FALSE;
+}
+
PUSER_HANDLE_ENTRY
FASTCALL
GetUser32Handle(HANDLE handle)