mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 22:56:00 +00:00
[Win32SS]
- Add utility of setting and clearing the state bits from user space. Use this later. svn path=/trunk/; revision=56663
This commit is contained in:
parent
df4cb8e91f
commit
845ea709c3
5 changed files with 57 additions and 2 deletions
|
@ -522,6 +522,8 @@ typedef struct _SBINFOEX
|
||||||
#define WNDS_MAXIMIZESTOMONITOR 0x40000000
|
#define WNDS_MAXIMIZESTOMONITOR 0x40000000
|
||||||
#define WNDS_DESTROYED 0x80000000
|
#define WNDS_DESTROYED 0x80000000
|
||||||
|
|
||||||
|
#define WNDSACTIVEFRAME 0x00000006
|
||||||
|
|
||||||
// State2 Flags !Not Implemented!
|
// State2 Flags !Not Implemented!
|
||||||
#define WNDS2_WMPAINTSENT 0X00000001
|
#define WNDS2_WMPAINTSENT 0X00000001
|
||||||
#define WNDS2_ENDPAINTINVALIDATE 0X00000002
|
#define WNDS2_ENDPAINTINVALIDATE 0X00000002
|
||||||
|
|
|
@ -569,9 +569,9 @@ NtUserCallHwndLock(
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
|
case HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW:
|
||||||
TRACE("co_IntSetForegroundWindow 1 %p\n",hWnd);
|
ERR("co_IntSetForegroundWindow 1 %p\n",hWnd);
|
||||||
Ret = co_IntSetForegroundWindow(Window);
|
Ret = co_IntSetForegroundWindow(Window);
|
||||||
TRACE("co_IntSetForegroundWindow 2 \n");
|
ERR("co_IntSetForegroundWindow 2 \n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HWNDLOCK_ROUTINE_UPDATEWINDOW:
|
case HWNDLOCK_ROUTINE_UPDATEWINDOW:
|
||||||
|
@ -749,6 +749,24 @@ NtUserCallHwndParam(
|
||||||
UserLeave();
|
UserLeave();
|
||||||
return 0;
|
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;
|
STUB;
|
||||||
|
|
|
@ -81,6 +81,9 @@ UserSystemParametersInfo(
|
||||||
PVOID pvParam,
|
PVOID pvParam,
|
||||||
UINT fWinIni);
|
UINT fWinIni);
|
||||||
|
|
||||||
|
VOID FASTCALL IntSetWindowState(PWND, UINT);
|
||||||
|
VOID FASTCALL IntClearWindowState(PWND, UINT);
|
||||||
|
|
||||||
/*************** MESSAGE.C ***************/
|
/*************** MESSAGE.C ***************/
|
||||||
|
|
||||||
BOOL FASTCALL
|
BOOL FASTCALL
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#error
|
#error
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
BOOL FASTCALL TestState(PWND, UINT);
|
||||||
|
|
||||||
EXTINLINE BOOL WINAPI
|
EXTINLINE BOOL WINAPI
|
||||||
GetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi)
|
GetScrollBarInfo(HWND hWnd, LONG idObject, PSCROLLBARINFO psbi)
|
||||||
{
|
{
|
||||||
|
@ -732,6 +734,18 @@ EXTINLINE BOOL NtUserxSetMessageBox(HWND hWnd)
|
||||||
return NtUserCallHwnd(hWnd, HWND_ROUTINE_SETMSGBOX);
|
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)
|
EXTINLINE HWND NtUserxSetTaskmanWindow(HWND hWnd)
|
||||||
{
|
{
|
||||||
return NtUserCallHwndOpt(hWnd, HWNDOPT_ROUTINE_SETTASKMANWINDOW);
|
return NtUserCallHwndOpt(hWnd, HWNDOPT_ROUTINE_SETTASKMANWINDOW);
|
||||||
|
|
|
@ -257,6 +257,24 @@ TestWindowProcess(PWND Wnd)
|
||||||
(DWORD_PTR)NtCurrentTeb()->ClientId.UniqueProcess );
|
(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
|
PUSER_HANDLE_ENTRY
|
||||||
FASTCALL
|
FASTCALL
|
||||||
GetUser32Handle(HANDLE handle)
|
GetUser32Handle(HANDLE handle)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue