[FAST486]
[reactos.git] / include / reactos / undocuser.h
1 #ifndef _UNDOCUSER_H
2 #define _UNDOCUSER_H
3
4 /* Built in class atoms */
5 #define WC_MENU (MAKEINTATOM(0x8000))
6 #define WC_DESKTOP (MAKEINTATOM(0x8001))
7 #define WC_DIALOG (MAKEINTATOM(0x8002))
8 #define WC_SWITCH (MAKEINTATOM(0x8003))
9 #define WC_ICONTITLE (MAKEINTATOM(0x8004))
10
11 /* Non SDK Styles */
12 #define ES_COMBO 0x200 /* Parent is a combobox */
13 #define WS_MAXIMIZED WS_MAXIMIZE
14 #define WS_MINIMIZED WS_MINIMIZE
15
16 /* Non SDK ExStyles */
17 #define WS_EX_DRAGDETECT 0x00000002
18 #define WS_EX_MAKEVISIBLEWHENUNGHOSTED 0x00000800
19 #define WS_EX_FORCELEGACYRESIZENCMETR 0x00800000
20 #define WS_EX_UISTATEACTIVE 0x04000000
21 #define WS_EX_REDIRECTED 0x20000000
22 #define WS_EX_UISTATEKBACCELHIDDEN 0x40000000
23 #define WS_EX_UISTATEFOCUSRECTHIDDEN 0x80000000
24 #define WS_EX_SETANSICREATOR 0x80000000 // For WNDS_ANSICREATOR
25
26 /* Non SDK Window Message types. */
27 #define WM_SETVISIBLE 0x00000009
28 #define WM_ALTTABACTIVE 0x00000029
29 #define WM_ISACTIVEICON 0x00000035
30 #define WM_QUERYPARKICON 0x00000036
31 #define WM_CLIENTSHUTDOWN 0x0000003B
32 #define WM_COPYGLOBALDATA 0x00000049
33 #define WM_LOGONNOTIFY 0x0000004C
34 #define WM_KEYF1 0x0000004D
35 #define WM_NCUAHDRAWCAPTION 0x000000AE
36 #define WM_NCUAHDRAWFRAME 0x000000AF
37 #define WM_SYSTIMER 0x00000118
38 #define WM_LBTRACKPOINT 0x00000131
39 #define LB_CARETON 0x000001a3
40 #define LB_CARETOFF 0x000001a4
41 #define WM_DROPOBJECT 0x0000022A
42 #define WM_QUERYDROPOBJECT 0x0000022B
43 #define WM_BEGINDRAG 0x0000022C
44 #define WM_DRAGLOOP 0x0000022D
45 #define WM_DRAGSELECT 0x0000022E
46 #define WM_DRAGMOVE 0x0000022F
47 #define WM_POPUPSYSTEMMENU 0x00000313
48 #define WM_UAHINIT 0x0000031b
49 #define WM_CBT 0x000003FF // ReactOS only.
50 #define WM_MAXIMUM 0x0001FFFF
51
52 /* Non SDK DCE types.*/
53 #define DCX_USESTYLE 0x00010000
54 #define DCX_KEEPCLIPRGN 0x00040000
55 #define DCX_KEEPLAYOUT 0x40000000
56 #define DCX_PROCESSOWNED 0x80000000
57
58 /* NtUserCreateWindowEx dwFlags bits. */
59 #define NUCWE_ANSI 0x00000001
60 #define NUCWE_SIDEBYSIDE 0x40000000
61
62 /* Caret timer ID */
63 #define IDCARETTIMER (0xffff)
64 #define ID_TME_TIMER (0xFFFA)
65
66 /* SetWindowPos undocumented flags */
67 #define SWP_NOCLIENTSIZE 0x0800
68 #define SWP_NOCLIENTMOVE 0x1000
69 #define SWP_STATECHANGED 0x8000
70
71 /* NtUserSetScrollInfo mask to return original position before it is change */
72 #define SIF_PREVIOUSPOS 4096
73
74 /* ScrollWindow uses the window DC, ScrollWindowEx doesn't */
75 #define SW_SCROLLWNDDCE 0x8000
76
77 /* Non SDK Queue state flags. */
78 #define QS_SMRESULT 0x8000 /* see "Undoc. Windows" */
79 //
80 #define QS_EVENT 0x2000
81 #define QS_SYSEVENT (QS_EVENT|QS_SENDMESSAGE)
82 //
83
84 //
85 // Definitions used by WM_CLIENTSHUTDOWN
86 //
87 // Client Shutdown messages
88 #define MCS_SHUTDOWNTIMERS 1
89 #define MCS_QUERYENDSESSION 2
90 // Client Shutdown returns
91 #define MCSR_GOODFORSHUTDOWN 1
92 #define MCSR_SHUTDOWNFINISHED 2
93 #define MCSR_DONOTSHUTDOWN 3
94
95 //
96 // Definitions used by WM_LOGONNOTIFY
97 //
98 #define LN_SHELL_EXITED 0x2
99 #define LN_START_TASK_MANAGER 0x4
100 #define LN_LOCK_WORKSTATION 0x5
101 #define LN_UNLOCK_WORKSTATION 0x6
102 #define LN_MESSAGE_BEEP 0x9
103 #define LN_START_SCREENSAVE 0xA
104
105 #define STARTF_SCRNSAVER 0x80000000
106
107 #define CW_USEDEFAULT16 ((short)0x8000)
108
109 #define SBRG_SCROLLBAR 0 /* the scrollbar itself */
110 #define SBRG_TOPRIGHTBTN 1 /* the top or right button */
111 #define SBRG_PAGEUPRIGHT 2 /* the page up or page right region */
112 #define SBRG_SCROLLBOX 3 /* the scroll box */
113 #define SBRG_PAGEDOWNLEFT 4 /* the page down or page left region */
114 #define SBRG_BOTTOMLEFTBTN 5 /* the bottom or left button */
115
116 BOOL WINAPI UpdatePerUserSystemParameters(DWORD dwReserved, BOOL bEnable);
117 BOOL WINAPI SetLogonNotifyWindow(HWND Wnd, HWINSTA WinSta);
118 BOOL WINAPI KillSystemTimer(HWND,UINT_PTR);
119 UINT_PTR WINAPI SetSystemTimer(HWND,UINT_PTR,UINT,TIMERPROC);
120 DWORD_PTR WINAPI SetSysColorsTemp(const COLORREF *, const HBRUSH *, DWORD_PTR);
121 BOOL WINAPI SetDeskWallPaper(LPCSTR);
122 VOID WINAPI ScrollChildren(HWND,UINT,WPARAM,LPARAM);
123 void WINAPI CalcChildScroll(HWND, INT);
124 BOOL WINAPI RegisterLogonProcess(DWORD,BOOL);
125 DWORD WINAPI GetAppCompatFlags(HTASK hTask);
126 DWORD WINAPI GetAppCompatFlags2(HTASK hTask);
127 LONG WINAPI CsrBroadcastSystemMessageExW(DWORD dwflags,
128 LPDWORD lpdwRecipients,
129 UINT uiMessage,
130 WPARAM wParam,
131 LPARAM lParam,
132 PBSMINFO pBSMInfo);
133 BOOL WINAPI CliImmSetHotKey(DWORD dwID, UINT uModifiers, UINT uVirtualKey, HKL hKl);
134 HWND WINAPI GetTaskmanWindow(VOID);
135 HWND WINAPI GetProgmanWindow(VOID);
136
137 //
138 // User api hook
139 //
140
141 typedef LRESULT(CALLBACK *WNDPROC_OWP)(HWND,UINT,WPARAM,LPARAM,ULONG_PTR,PDWORD);
142 typedef int (WINAPI *SETWINDOWRGN)(HWND hWnd, HRGN hRgn, BOOL bRedraw);
143
144 typedef struct _UAHOWP
145 {
146 BYTE* MsgBitArray;
147 DWORD Size;
148 } UAHOWP, *PUAHOWP;
149
150 #define UAH_HOOK_MESSAGE(uahowp, msg) uahowp.MsgBitArray[msg/8] |= (1 << (msg % 8));
151 #define UAH_IS_MESSAGE_HOOKED(uahowp, msg) (uahowp.MsgBitArray[msg/8] & (1 << (msg % 8)))
152 #define UAHOWP_MAX_SIZE WM_USER/8
153
154 typedef struct tagUSERAPIHOOK
155 {
156 DWORD size;
157 WNDPROC DefWindowProcA;
158 WNDPROC DefWindowProcW;
159 UAHOWP DefWndProcArray;
160 FARPROC GetScrollInfo;
161 FARPROC SetScrollInfo;
162 FARPROC EnableScrollBar;
163 FARPROC AdjustWindowRectEx;
164 SETWINDOWRGN SetWindowRgn;
165 WNDPROC_OWP PreWndProc;
166 WNDPROC_OWP PostWndProc;
167 UAHOWP WndProcArray;
168 WNDPROC_OWP PreDefDlgProc;
169 WNDPROC_OWP PostDefDlgProc;
170 UAHOWP DlgProcArray;
171 FARPROC GetSystemMetrics;
172 FARPROC SystemParametersInfoA;
173 FARPROC SystemParametersInfoW;
174 FARPROC ForceResetUserApiHook;
175 FARPROC DrawFrameControl;
176 FARPROC DrawCaption;
177 FARPROC MDIRedrawFrame;
178 FARPROC GetRealWindowOwner;
179 } USERAPIHOOK, *PUSERAPIHOOK;
180
181 typedef enum _UAPIHK
182 {
183 uahLoadInit,
184 uahStop,
185 uahShutdown
186 } UAPIHK, *PUAPIHK;
187
188 typedef BOOL(CALLBACK *USERAPIHOOKPROC)(UAPIHK State, PUSERAPIHOOK puah);
189
190 typedef struct _USERAPIHOOKINFO
191 {
192 DWORD m_size;
193 LPCWSTR m_dllname1;
194 LPCWSTR m_funname1;
195 LPCWSTR m_dllname2;
196 LPCWSTR m_funname2;
197 } USERAPIHOOKINFO,*PUSERAPIHOOKINFO;
198
199 #if (WINVER == _WIN32_WINNT_WINXP)
200 BOOL WINAPI RegisterUserApiHook(HINSTANCE hInstance, USERAPIHOOKPROC CallbackFunc);
201 #elif (WINVER == _WIN32_WINNT_WS03)
202 BOOL WINAPI RegisterUserApiHook(PUSERAPIHOOKINFO puah);
203 #endif
204
205 BOOL WINAPI UnregisterUserApiHook(VOID);
206
207 #endif