[THEMES]
[reactos.git] / reactos / win32ss / include / ntuser.h
1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
3
4 typedef struct _PROCESSINFO *PPROCESSINFO;
5 typedef struct _THREADINFO *PTHREADINFO;
6 struct _DESKTOP;
7 struct _WND;
8
9 #define FIRST_USER_HANDLE 0x0020 /* first possible value for low word of user handle */
10 #define LAST_USER_HANDLE 0xffef /* last possible value for low word of user handle */
11
12 #define HANDLEENTRY_INDESTROY 1
13
14 typedef struct _USER_HANDLE_ENTRY
15 {
16 void *ptr; /* pointer to object */
17 union
18 {
19 PVOID pi;
20 PTHREADINFO pti; // pointer to Win32ThreadInfo
21 PPROCESSINFO ppi; // pointer to W32ProcessInfo
22 };
23 unsigned char type; /* object type (0 if free) */
24 unsigned char flags;
25 unsigned short generation; /* generation counter */
26 } USER_HANDLE_ENTRY, * PUSER_HANDLE_ENTRY;
27
28 typedef struct _USER_HANDLE_TABLE
29 {
30 PUSER_HANDLE_ENTRY handles;
31 PUSER_HANDLE_ENTRY freelist;
32 int nb_handles;
33 int allocated_handles;
34 } USER_HANDLE_TABLE, * PUSER_HANDLE_TABLE;
35
36 typedef enum _HANDLE_TYPE
37 {
38 TYPE_FREE = 0,
39 TYPE_WINDOW = 1,
40 TYPE_MENU = 2,
41 TYPE_CURSOR = 3,
42 TYPE_SETWINDOWPOS = 4,
43 TYPE_HOOK = 5,
44 TYPE_CLIPDATA = 6,
45 TYPE_CALLPROC = 7,
46 TYPE_ACCELTABLE = 8,
47 TYPE_DDEACCESS = 9,
48 TYPE_DDECONV = 10,
49 TYPE_DDEXACT = 11,
50 TYPE_MONITOR = 12,
51 TYPE_KBDLAYOUT = 13,
52 TYPE_KBDFILE = 14,
53 TYPE_WINEVENTHOOK = 15,
54 TYPE_TIMER = 16,
55 TYPE_INPUTCONTEXT = 17,
56 TYPE_HIDDATA = 18,
57 TYPE_DEVICEINFO = 19,
58 TYPE_TOUCHINPUTINFO = 20,
59 TYPE_GESTUREINFOOBJ = 21,
60 TYPE_CTYPES,
61 TYPE_GENERIC = 255
62 } HANDLE_TYPE, *PHANDLE_TYPE;
63
64 typedef enum _USERTHREADINFOCLASS
65 {
66 UserThreadShutdownInformation,
67 UserThreadFlags,
68 UserThreadTaskName,
69 UserThreadWOWInformation,
70 UserThreadHungStatus,
71 UserThreadInitiateShutdown,
72
73 UserThreadEndShutdown,
74 UserThreadUseActiveDesktop,
75 UserThreadUseDesktop,
76 UserThreadRestoreDesktop,
77 UserThreadCsrApiPort,
78 } USERTHREADINFOCLASS;
79
80 typedef struct _LARGE_UNICODE_STRING
81 {
82 ULONG Length;
83 ULONG MaximumLength:31;
84 ULONG bAnsi:1;
85 PWSTR Buffer;
86 } LARGE_UNICODE_STRING, *PLARGE_UNICODE_STRING;
87
88 typedef struct _LARGE_STRING
89 {
90 ULONG Length;
91 ULONG MaximumLength:31;
92 ULONG bAnsi:1;
93 PVOID Buffer;
94 } LARGE_STRING, *PLARGE_STRING;
95 //
96 // Based on ANSI_STRING
97 //
98 typedef struct _LARGE_ANSI_STRING
99 {
100 ULONG Length;
101 ULONG MaximumLength:31;
102 ULONG bAnsi:1;
103 PCHAR Buffer;
104 } LARGE_ANSI_STRING, *PLARGE_ANSI_STRING;
105
106 VOID NTAPI RtlInitLargeAnsiString(IN OUT PLARGE_ANSI_STRING,IN PCSZ,IN INT);
107 VOID NTAPI RtlInitLargeUnicodeString(IN OUT PLARGE_UNICODE_STRING,IN PCWSTR,IN INT);
108 BOOL NTAPI RtlLargeStringToUnicodeString( PUNICODE_STRING, PLARGE_STRING);
109
110 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
111
112 typedef struct _DESKTOPINFO
113 {
114 PVOID pvDesktopBase;
115 PVOID pvDesktopLimit;
116 struct _WND *spwnd;
117 DWORD fsHooks;
118 LIST_ENTRY aphkStart[NB_HOOKS];
119
120 HWND hTaskManWindow;
121 HWND hProgmanWindow;
122 HWND hShellWindow;
123 struct _WND * spwndShell;
124
125 PPROCESSINFO ppiShellProcess;
126
127 union
128 {
129 UINT Dummy;
130 struct
131 {
132 UINT LastInputWasKbd : 1;
133 };
134 };
135
136 WCHAR szDesktopName[1];
137 } DESKTOPINFO, *PDESKTOPINFO;
138
139 #define CTI_THREADSYSLOCK 0x0001
140 #define CTI_INSENDMESSAGE 0x0002
141
142 typedef struct _CLIENTTHREADINFO
143 {
144 DWORD CTI_flags;
145 WORD fsChangeBits;
146 WORD fsWakeBits;
147 WORD fsWakeBitsJournal;
148 WORD fsWakeMask;
149 ULONG tickLastMsgChecked;
150 DWORD dwcPumpHook;
151 } CLIENTTHREADINFO, *PCLIENTTHREADINFO;
152
153 typedef struct _HEAD
154 {
155 HANDLE h;
156 DWORD cLockObj;
157 } HEAD, *PHEAD;
158
159 typedef struct _THROBJHEAD
160 {
161 HEAD;
162 PTHREADINFO pti;
163 } THROBJHEAD, *PTHROBJHEAD;
164
165 typedef struct _THRDESKHEAD
166 {
167 THROBJHEAD;
168 struct _DESKTOP *rpdesk;
169 PVOID pSelf;
170 } THRDESKHEAD, *PTHRDESKHEAD;
171
172 typedef struct _PROCDESKHEAD
173 {
174 HEAD;
175 DWORD hTaskWow;
176 struct _DESKTOP *rpdesk;
177 PVOID pSelf;
178 } PROCDESKHEAD, *PPROCDESKHEAD;
179
180 typedef struct _PROCMARKHEAD
181 {
182 HEAD;
183 ULONG hTaskWow;
184 PPROCESSINFO ppi;
185 } PROCMARKHEAD, *PPROCMARKHEAD;
186
187 #define UserHMGetHandle(obj) ((obj)->head.h)
188
189 /* Window Client Information structure */
190 struct _ETHREAD;
191
192 #define WEF_SETBYWNDPTI 0x0001
193
194 typedef struct tagHOOK
195 {
196 THRDESKHEAD head;
197 struct tagHOOK *phkNext; /* This is for user space. */
198 int HookId; /* Hook table index */
199 ULONG_PTR offPfn;
200 ULONG flags; /* Some internal flags */
201 INT ihmod;
202 PTHREADINFO ptiHooked;
203 struct _DESKTOP *rpdesk;
204 /* ReactOS */
205 LIST_ENTRY Chain; /* Hook chain entry */
206 HOOKPROC Proc; /* Hook function */
207 BOOLEAN Ansi; /* Is it an Ansi hook? */
208 UNICODE_STRING ModuleName; /* Module name for global hooks */
209 } HOOK, *PHOOK;
210
211 typedef struct tagCLIPBOARDDATA
212 {
213 HEAD head;
214 DWORD cbData;
215 BYTE Data[0];
216 } CLIPBOARDDATA, *PCLIPBOARDDATA;
217
218 /* THREADINFO Flags */
219 #define TIF_INCLEANUP 0x00000001
220 #define TIF_16BIT 0x00000002
221 #define TIF_SYSTEMTHREAD 0x00000004
222 #define TIF_CSRSSTHREAD 0x00000008
223 #define TIF_TRACKRECTVISIBLE 0x00000010
224 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
225 #define TIF_DONTATTACHQUEUE 0x00000040
226 #define TIF_DONTJOURNALATTACH 0x00000080
227 #define TIF_WOW64 0x00000100
228 #define TIF_INACTIVATEAPPMSG 0x00000200
229 #define TIF_SPINNING 0x00000400
230 #define TIF_PALETTEAWARE 0x00000800
231 #define TIF_SHAREDWOW 0x00001000
232 #define TIF_FIRSTIDLE 0x00002000
233 #define TIF_WAITFORINPUTIDLE 0x00004000
234 #define TIF_MOVESIZETRACKING 0x00008000
235 #define TIF_VDMAPP 0x00010000
236 #define TIF_DOSEMULATOR 0x00020000
237 #define TIF_GLOBALHOOKER 0x00040000
238 #define TIF_DELAYEDEVENT 0x00080000
239 #define TIF_MSGPOSCHANGED 0x00100000
240 #define TIF_SHUTDOWNCOMPLETE 0x00200000
241 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
242 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
243 #define TIF_GUITHREADINITIALIZED 0x02000000
244 #define TIF_DISABLEIME 0x04000000
245 #define TIF_INGETTEXTLENGTH 0x08000000
246 #define TIF_ANSILENGTH 0x10000000
247 #define TIF_DISABLEHOOKS 0x20000000
248
249 typedef struct _CALLBACKWND
250 {
251 HWND hWnd;
252 struct _WND *pWnd;
253 PVOID pActCtx;
254 } CALLBACKWND, *PCALLBACKWND;
255
256 #define CI_TRANSACTION 0x00000001
257 #define CI_QUEUEMSG 0x00000002
258 #define CI_WOW 0x00000004
259 #define CI_INITTHREAD 0x00000008
260 #define CI_CURTHPRHOOK 0x00000010
261 #define CI_CLASSESREGISTERED 0x00000020
262 #define CI_IMMACTIVATE 0x00000040
263
264 typedef struct _CLIENTINFO
265 {
266 ULONG_PTR CI_flags;
267 ULONG_PTR cSpins;
268 DWORD dwExpWinVer;
269 DWORD dwCompatFlags;
270 DWORD dwCompatFlags2;
271 DWORD dwTIFlags; // ThreadInfo TIF_Xxx flags for User space.
272 PDESKTOPINFO pDeskInfo;
273 ULONG_PTR ulClientDelta;
274 PHOOK phkCurrent;
275 ULONG fsHooks;
276 CALLBACKWND CallbackWnd;
277 DWORD dwHookCurrent;
278 INT cInDDEMLCallback;
279 PCLIENTTHREADINFO pClientThreadInfo;
280 ULONG_PTR dwHookData;
281 DWORD dwKeyCache;
282 BYTE afKeyState[8];
283 DWORD dwAsyncKeyCache;
284 BYTE afAsyncKeyState[8];
285 BYTE afAsyncKeyStateRecentDow[8];
286 HKL hKL;
287 USHORT CodePage;
288 UCHAR achDbcsCF[2];
289 MSG msgDbcsCB;
290 LPDWORD lpdwRegisteredClasses;
291 ULONG Win32ClientInfo3[26];
292 /* It's just a pointer reference not to be used w the structure in user space. */
293 PPROCESSINFO ppi;
294 } CLIENTINFO, *PCLIENTINFO;
295
296 /* Make sure it fits into the TEB */
297 C_ASSERT(sizeof(CLIENTINFO) <= sizeof(((PTEB)0)->Win32ClientInfo));
298
299 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
300
301 #define HRGN_NULL ( (HRGN) 0) // NULL empty region
302 #define HRGN_WINDOW ( (HRGN) 1) // region from window rcWindow
303 #define HRGN_MONITOR ( (HRGN) 2) // region from monitor region.
304
305 /* Menu Item fType. */
306 #define MFT_RTOL 0x6000
307
308 typedef struct tagITEM
309 {
310 UINT fType;
311 UINT fState;
312 UINT wID;
313 struct tagMENU* spSubMenu; /* Pop-up menu. */
314 HANDLE hbmpChecked;
315 HANDLE hbmpUnchecked;
316 USHORT* lpstr; /* Item text pointer. */
317 ULONG cch;
318 DWORD_PTR dwItemData;
319 ULONG xItem; /* Item position. left */
320 ULONG yItem; /* " top */
321 ULONG cxItem; /* Item Size Width */
322 ULONG cyItem; /* " Height */
323 ULONG dxTab; /* X position of text after Tab */
324 ULONG ulX; /* underline.. start position */
325 ULONG ulWidth; /* underline.. width */
326 HBITMAP hbmp; /* bitmap */
327 INT cxBmp; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
328 INT cyBmp; /* Height " */
329 } ITEM, *PITEM;
330
331 typedef struct tagMENULIST
332 {
333 struct tagMENULIST* pNext;
334 struct tagMENU* pMenu;
335 } MENULIST, *PMENULIST;
336
337 /* Menu fFlags, upper byte is MNS_X style flags. */
338 #define MNF_POPUP 0x0001
339 #define MNF_UNDERLINE 0x0004
340 #define MNF_INACTIVE 0x0010
341 #define MNF_RTOL 0x0020
342 #define MNF_DESKTOPMN 0x0040
343 #define MNF_SYSDESKMN 0x0080
344 #define MNF_SYSSUBMENU 0x0100
345
346 typedef struct tagMENU
347 {
348 PROCDESKHEAD head;
349 ULONG fFlags; /* [Style flags | Menu flags] */
350 INT iItem; /* nPos of selected item, if -1 not selected. */
351 UINT cAlloced; /* Number of allocated items. Inc's of 8 */
352 UINT cItems; /* Number of items in the menu */
353 ULONG cxMenu; /* Width of the whole menu */
354 ULONG cyMenu; /* Height of the whole menu */
355 ULONG cxTextAlign; /* Offset of text when items have both bitmaps and text */
356 struct _WND *spwndNotify; /* window receiving the messages for ownerdraw */
357 PITEM rgItems; /* Array of menu items */
358 struct tagMENULIST* pParentMenus; /* If this is SubMenu, list of parents. */
359 DWORD dwContextHelpId;
360 ULONG cyMax; /* max height of the whole menu, 0 is screen height */
361 DWORD_PTR dwMenuData; /* application defined value */
362 HBRUSH hbrBack; /* brush for menu background */
363 INT iTop; /* Current scroll position Top */
364 INT iMaxTop; /* Current scroll position Max Top */
365 DWORD dwArrowsOn:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
366 } MENU, *PMENU;
367
368 typedef struct _REGISTER_SYSCLASS
369 {
370 /* This is a reactos specific class used to initialize the
371 system window classes during user32 initialization */
372 PWSTR ClassName;
373 UINT Style;
374 WNDPROC ProcW;
375 UINT ExtraBytes;
376 HICON hCursor;
377 HBRUSH hBrush;
378 WORD fiId;
379 WORD iCls;
380 } REGISTER_SYSCLASS, *PREGISTER_SYSCLASS;
381
382 typedef struct _CLSMENUNAME
383 {
384 LPSTR pszClientAnsiMenuName;
385 LPWSTR pwszClientUnicodeMenuName;
386 PUNICODE_STRING pusMenuName;
387 } CLSMENUNAME, *PCLSMENUNAME;
388
389 typedef struct tagSBDATA
390 {
391 INT posMin;
392 INT posMax;
393 INT page;
394 INT pos;
395 } SBDATA, *PSBDATA;
396
397 typedef struct tagSBINFO
398 {
399 INT WSBflags;
400 SBDATA Horz;
401 SBDATA Vert;
402 } SBINFO, *PSBINFO;
403
404 typedef struct tagSBCALC
405 {
406 INT posMin;
407 INT posMax;
408 INT page;
409 INT pos;
410 INT pxTop;
411 INT pxBottom;
412 INT pxLeft;
413 INT pxRight;
414 INT cpxThumb;
415 INT pxUpArrow;
416 INT pxDownArrow;
417 INT pxStart;
418 INT pxThumbBottom;
419 INT pxThumbTop;
420 INT cpx;
421 INT pxMin;
422 } SBCALC, *PSBCALC;
423
424 typedef enum _GETCPD
425 {
426 UserGetCPDA2U = 0x01, // " Unicode "
427 UserGetCPDU2A = 0X02, // " Ansi "
428 UserGetCPDClass = 0X10,
429 UserGetCPDWindow = 0X20,
430 UserGetCPDDialog = 0X40,
431 UserGetCPDWndtoCls = 0X80
432 } GETCPD, *PGETCPD;
433
434 typedef struct _CALLPROCDATA
435 {
436 PROCDESKHEAD head;
437 struct _CALLPROCDATA *spcpdNext;
438 WNDPROC pfnClientPrevious;
439 GETCPD wType;
440 } CALLPROCDATA, *PCALLPROCDATA;
441
442 #define CSF_SERVERSIDEPROC 0x0001
443 #define CSF_ANSIPROC 0x0002
444 #define CSF_WOWDEFERDESTROY 0x0004
445 #define CSF_SYSTEMCLASS 0x0008
446 #define CSF_WOWCLASS 0x0010
447 #define CSF_WOWEXTRA 0x0020
448 #define CSF_CACHEDSMICON 0x0040
449 #define CSF_WIN40COMPAT 0x0080
450
451 typedef struct _CLS
452 {
453 struct _CLS *pclsNext;
454 RTL_ATOM atomClassName;
455 ATOM atomNVClassName;
456 DWORD fnid;
457 struct _DESKTOP *rpdeskParent;
458 PVOID pdce;
459 DWORD CSF_flags;
460 PSTR lpszClientAnsiMenuName; // For client use
461 PWSTR lpszClientUnicodeMenuName; // " " "
462 PCALLPROCDATA spcpdFirst;
463 struct _CLS *pclsBase;
464 struct _CLS *pclsClone;
465 ULONG cWndReferenceCount;
466 UINT style;
467 WNDPROC lpfnWndProc;
468 INT cbclsExtra;
469 INT cbwndExtra;
470 HINSTANCE hModule;
471 HANDLE hIcon; /* FIXME - Use pointer! */
472 //PCURSOR spicn;
473 HANDLE hCursor; /* FIXME - Use pointer! */
474 //PCURSOR spcur;
475 HBRUSH hbrBackground;
476 PWSTR lpszMenuName; // kernel use
477 PSTR lpszAnsiClassName; // "
478 HANDLE hIconSm; /* FIXME - Use pointer! */
479 //PCURSOR spicnSm;
480
481 //// ReactOS dosn't suppot cache icons.
482 HICON hIconSmIntern; /* Internal small icon, derived from hIcon */
483 ////
484 UINT Unicode : 1; // !CSF_ANSIPROC
485 UINT Global : 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
486 UINT MenuNameIsString : 1;
487 UINT NotUsed : 29;
488 } CLS, *PCLS;
489
490
491 typedef struct _SBINFOEX
492 {
493 SCROLLBARINFO ScrollBarInfo;
494 SCROLLINFO ScrollInfo;
495 } SBINFOEX, *PSBINFOEX;
496
497 // State Flags !Not Implemented!
498 #define WNDS_HASMENU 0X00000001
499 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
500 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
501 #define WNDS_HASCAPTION 0X00000008
502 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
503 #define WNDS_MSGBOX 0X00000020
504 #define WNDS_ACTIVEFRAME 0X00000040
505 #define WNDS_HASSPB 0X00000080
506 #define WNDS_NONCPAINT 0X00000100
507 #define WNDS_SENDERASEBACKGROUND 0X00000200
508 #define WNDS_ERASEBACKGROUND 0X00000400
509 #define WNDS_SENDNCPAINT 0X00000800
510 #define WNDS_INTERNALPAINT 0X00001000
511 #define WNDS_UPDATEDIRTY 0X00002000
512 #define WNDS_HIDDENPOPUP 0X00004000
513 #define WNDS_FORCEMENUDRAW 0X00008000
514 #define WNDS_DIALOGWINDOW 0X00010000
515 #define WNDS_HASCREATESTRUCTNAME 0X00020000
516 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 // Call proc inside win32k.
517 #define WNDS_ANSIWINDOWPROC 0x00080000
518 #define WNDS_BEINGACTIVATED 0x00100000
519 #define WNDS_HASPALETTE 0x00200000
520 #define WNDS_PAINTNOTPROCESSED 0x00400000
521 #define WNDS_SYNCPAINTPENDING 0x00800000
522 #define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
523 #define WNDS_RECEIVEDSUSPENDMSG 0x02000000
524 #define WNDS_TOGGLETOPMOST 0x04000000
525 #define WNDS_REDRAWIFHUNG 0x08000000
526 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
527 #define WNDS_ANSICREATOR 0x20000000
528 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
529 #define WNDS_DESTROYED 0x80000000
530
531 #define WNDSACTIVEFRAME 0x00000006
532
533 // State2 Flags !Not Implemented!
534 #define WNDS2_WMPAINTSENT 0X00000001
535 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
536 #define WNDS2_STARTPAINT 0X00000004
537 #define WNDS2_OLDUI 0X00000008
538 #define WNDS2_HASCLIENTEDGE 0X00000010
539 #define WNDS2_BOTTOMMOST 0X00000020
540 #define WNDS2_FULLSCREEN 0X00000040
541 #define WNDS2_INDESTROY 0X00000080
542 #define WNDS2_WIN31COMPAT 0X00000100
543 #define WNDS2_WIN40COMPAT 0X00000200
544 #define WNDS2_WIN50COMPAT 0X00000400
545 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
546 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
547 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
548 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
549 #define WNDS2_HELPBUTTONDOWN 0X00008000
550 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
551 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
552 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
553 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
554 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
555 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
556 #define WNDS2_FORCENCPAINT 0X00400000
557 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
558 #define WNDS2_FULLSCREENMODE 0X01000000
559 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
560 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
561 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
562 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
563 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
564
565 /* ExStyles2 */
566 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
567 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
568 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
569 #define WS_EX2_LINKED 0X00000008
570 #define WS_EX2_LAYEREDFORDWM 0X00000010
571 #define WS_EX2_LAYEREDLIMBO 0X00000020
572 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
573 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
574 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
575 #define WS_EX2_HASOVERLAY 0X00000200
576 #define WS_EX2_CONSOLEWINDOW 0X00000400
577 #define WS_EX2_CHILDNOACTIVATE 0X00000800
578
579 #define WPF_MININIT 0x0008
580 #define WPF_MAXINIT 0x0010
581
582 typedef struct _WND
583 {
584 THRDESKHEAD head;
585 DWORD state;
586 DWORD state2;
587 /* Extended style. */
588 DWORD ExStyle;
589 /* Style. */
590 DWORD style;
591 /* Handle of the module that created the window. */
592 HINSTANCE hModule;
593 DWORD fnid;
594 struct _WND *spwndNext;
595 struct _WND *spwndPrev;
596 struct _WND *spwndParent;
597 struct _WND *spwndChild;
598 struct _WND *spwndOwner;
599 RECT rcWindow;
600 RECT rcClient;
601 WNDPROC lpfnWndProc;
602 /* Pointer to the window class. */
603 PCLS pcls;
604 HRGN hrgnUpdate;
605 /* Property list head.*/
606 LIST_ENTRY PropListHead;
607 ULONG PropListItems;
608 /* Scrollbar info */
609 PSBINFO pSBInfo;
610 /* system menu handle. */
611 HMENU SystemMenu;
612 //PMENU spmenuSys;
613 /* Window menu handle or window id */
614 UINT IDMenu; // Use spmenu
615 //PMENU spmenu;
616 HRGN hrgnClip;
617 HRGN hrgnNewFrame;
618 /* Window name. */
619 LARGE_UNICODE_STRING strName;
620 /* Size of the extra data associated with the window. */
621 ULONG cbwndExtra;
622 struct _WND *spwndLastActive;
623 //HIMC hImc; // Input context associated with this window.
624 LONG dwUserData;
625 PVOID pActCtx;
626 //PD3DMATRIX pTransForm;
627 struct _WND *spwndClipboardListener;
628 DWORD ExStyle2;
629
630 /* ReactOS */
631 struct
632 {
633 RECT NormalRect;
634 POINT IconPos;
635 POINT MaxPos;
636 UINT flags; // WPF_ flags.
637 } InternalPos;
638
639 UINT Unicode : 1; // !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ?
640 UINT InternalPosInitialized : 1;
641 UINT HideFocus : 1; // WS_EX_UISTATEFOCUSRECTHIDDEN ?
642 UINT HideAccel : 1; // WS_EX_UISTATEKBACCELHIDDEN ?
643
644 /* Scrollbar info */
645 PSBINFOEX pSBInfoex; // convert to PSBINFO
646 /* Entry in the list of thread windows. */
647 LIST_ENTRY ThreadListEntry;
648 } WND, *PWND;
649
650 #define PWND_BOTTOM ((PWND)1)
651
652 typedef struct _SBWND
653 {
654 WND wnd;
655 BOOL fVert;
656 UINT wDisableFlags;
657 SBCALC SBCalc;
658 } SBWND, *PSBWND;
659
660 typedef struct _PFNCLIENT
661 {
662 WNDPROC pfnScrollBarWndProc;
663 WNDPROC pfnTitleWndProc;
664 WNDPROC pfnMenuWndProc;
665 WNDPROC pfnDesktopWndProc;
666 WNDPROC pfnDefWindowProc;
667 WNDPROC pfnMessageWindowProc;
668 WNDPROC pfnSwitchWindowProc;
669 WNDPROC pfnButtonWndProc;
670 WNDPROC pfnComboBoxWndProc;
671 WNDPROC pfnComboListBoxProc;
672 WNDPROC pfnDialogWndProc;
673 WNDPROC pfnEditWndProc;
674 WNDPROC pfnListBoxWndProc;
675 WNDPROC pfnMDIClientWndProc;
676 WNDPROC pfnStaticWndProc;
677 WNDPROC pfnImeWndProc;
678 WNDPROC pfnGhostWndProc;
679 WNDPROC pfnHkINLPCWPSTRUCT;
680 WNDPROC pfnHkINLPCWPRETSTRUCT;
681 WNDPROC pfnDispatchHook;
682 WNDPROC pfnDispatchDefWindowProc;
683 WNDPROC pfnDispatchMessage;
684 WNDPROC pfnMDIActivateDlgProc;
685 } PFNCLIENT, *PPFNCLIENT;
686
687 /*
688 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
689 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
690 */
691
692 typedef LRESULT(CALLBACK *WNDPROC_EX)(HWND,UINT,WPARAM,LPARAM,BOOL);
693
694 typedef struct _PFNCLIENTWORKER
695 {
696 WNDPROC_EX pfnButtonWndProc;
697 WNDPROC_EX pfnComboBoxWndProc;
698 WNDPROC_EX pfnComboListBoxProc;
699 WNDPROC_EX pfnDialogWndProc;
700 WNDPROC_EX pfnEditWndProc;
701 WNDPROC_EX pfnListBoxWndProc;
702 WNDPROC_EX pfnMDIClientWndProc;
703 WNDPROC_EX pfnStaticWndProc;
704 WNDPROC_EX pfnImeWndProc;
705 WNDPROC_EX pfnGhostWndProc;
706 WNDPROC_EX pfnCtfHookProc;
707 } PFNCLIENTWORKER, *PPFNCLIENTWORKER;
708
709 typedef LONG_PTR (NTAPI *PFN_FNID)(PWND, UINT, WPARAM, LPARAM, ULONG_PTR);
710
711 // FNID's for NtUserSetWindowFNID, NtUserMessageCall
712 #define FNID_FIRST 0x029A
713 #define FNID_SCROLLBAR 0x029A
714 #define FNID_ICONTITLE 0x029B
715 #define FNID_MENU 0x029C
716 #define FNID_DESKTOP 0x029D
717 #define FNID_DEFWINDOWPROC 0x029E
718 #define FNID_MESSAGEWND 0x029F
719 #define FNID_SWITCH 0x02A0
720 #define FNID_BUTTON 0x02A1
721 #define FNID_COMBOBOX 0x02A2
722 #define FNID_COMBOLBOX 0x02A3
723 #define FNID_DIALOG 0x02A4
724 #define FNID_EDIT 0x02A5
725 #define FNID_LISTBOX 0x02A6
726 #define FNID_MDICLIENT 0x02A7
727 #define FNID_STATIC 0x02A8
728 #define FNID_IME 0x02A9
729 #define FNID_GHOST 0x02AA
730 #define FNID_CALLWNDPROC 0x02AB
731 #define FNID_CALLWNDPROCRET 0x02AC
732 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
733 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
734 #define FNID_MB_DLGPROC 0x02AF
735 #define FNID_MDIACTIVATEDLGPROC 0x02B0
736 #define FNID_SENDMESSAGE 0x02B1
737 #define FNID_SENDMESSAGEFF 0x02B2
738 // Kernel has option to use TimeOut or normal msg send, based on type of msg.
739 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
740 #define FNID_SENDMESSAGECALLPROC 0x02B4
741 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
742 #define FNID_TOOLTIPS 0x02B6
743 #define FNID_SENDNOTIFYMESSAGE 0x02B7
744 #define FNID_SENDMESSAGECALLBACK 0x02B8
745 #define FNID_LAST 0x02B9
746
747 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
748 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
749
750 #define FNID_DDEML 0x2000 // Registers DDEML
751 #define FNID_DESTROY 0x4000 // This is sent when WM_NCDESTROY or in the support routine.
752 // Seen during WM_CREATE on error exit too.
753 #define FNID_FREED 0x8000 // Window being Freed...
754
755 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
756
757 #define GETPFNCLIENTA(fnid)\
758 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
759 #define GETPFNCLIENTW(fnid)\
760 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
761
762 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
763
764 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
765 #define ICLS_BUTTON 0
766 #define ICLS_EDIT 1
767 #define ICLS_STATIC 2
768 #define ICLS_LISTBOX 3
769 #define ICLS_SCROLLBAR 4
770 #define ICLS_COMBOBOX 5
771 #define ICLS_MDICLIENT 6
772 #define ICLS_COMBOLBOX 7
773 #define ICLS_DDEMLEVENT 8
774 #define ICLS_DDEMLMOTHER 9
775 #define ICLS_DDEML16BIT 10
776 #define ICLS_DDEMLCLIENTA 11
777 #define ICLS_DDEMLCLIENTW 12
778 #define ICLS_DDEMLSERVERA 13
779 #define ICLS_DDEMLSERVERW 14
780 #define ICLS_IME 15
781 #define ICLS_GHOST 16
782 #define ICLS_DESKTOP 17
783 #define ICLS_DIALOG 18
784 #define ICLS_MENU 19
785 #define ICLS_SWITCH 20
786 #define ICLS_ICONTITLE 21
787 #define ICLS_TOOLTIPS 22
788 #if (_WIN32_WINNT <= 0x0501)
789 #define ICLS_UNKNOWN 22
790 #define ICLS_NOTUSED 23
791 #else
792 #define ICLS_SYSSHADOW 23
793 #define ICLS_HWNDMESSAGE 24
794 #define ICLS_NOTUSED 25
795 #endif
796 #define ICLS_END 31
797
798 #define COLOR_LAST COLOR_MENUBAR
799 #define MAX_MB_STRINGS 11
800
801 #define SRVINFO_APIHOOK 0x0010
802 #define SRVINFO_METRICS 0x0020
803 #define SRVINFO_KBDPREF 0x0080
804
805 #define NUM_SYSCOLORS 31
806
807 typedef struct tagOEMBITMAPINFO
808 {
809 INT x;
810 INT y;
811 INT cx;
812 INT cy;
813 } OEMBITMAPINFO, *POEMBITMAPINFO;
814
815 typedef struct tagMBSTRING
816 {
817 WCHAR szName[16];
818 UINT uID;
819 UINT uStr;
820 } MBSTRING, *PMBSTRING;
821
822 typedef struct tagDPISERVERINFO
823 {
824 INT gclBorder; /* 000 */
825 HFONT hCaptionFont; /* 004 */
826 HFONT hMsgFont; /* 008 */
827 INT cxMsgFontChar; /* 00C */
828 INT cyMsgFontChar; /* 010 */
829 UINT wMaxBtnSize; /* 014 */
830 } DPISERVERINFO, *PDPISERVERINFO;
831
832 // PUSIFlags:
833 #define PUSIF_PALETTEDISPLAY 0x01
834 #define PUSIF_SNAPTO 0x02
835 #define PUSIF_COMBOBOXANIMATION 0x04
836 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
837 #define PUSIF_KEYBOARDCUES 0x20
838
839 typedef struct _PERUSERSERVERINFO
840 {
841 INT aiSysMet[SM_CMETRICS];
842 ULONG argbSystemUnmatched[NUM_SYSCOLORS];
843 COLORREF argbSystem[NUM_SYSCOLORS];
844 HBRUSH ahbrSystem[NUM_SYSCOLORS];
845 HBRUSH hbrGray;
846 POINT ptCursor;
847 POINT ptCursorReal;
848 DWORD dwLastRITEventTickCount;
849 INT nEvents;
850 UINT dtScroll;
851 UINT dtLBSearch;
852 UINT dtCaretBlink;
853 UINT ucWheelScrollLines;
854 UINT ucWheelScrollChars;
855 INT wMaxLeftOverlapChars;
856 INT wMaxRightOverlapChars;
857 INT cxSysFontChar;
858 INT cySysFontChar;
859 TEXTMETRICW tmSysFont;
860 DPISERVERINFO dpiSystem;
861 HICON hIconSmWindows;
862 HICON hIconWindows;
863 DWORD dwKeyCache;
864 DWORD dwAsyncKeyCache;
865 ULONG cCaptures;
866 OEMBITMAPINFO oembmi[93];
867 RECT rcScreenReal;
868 USHORT BitCount;
869 USHORT dmLogPixels;
870 BYTE Planes;
871 BYTE BitsPixel;
872 ULONG PUSIFlags;
873 UINT uCaretWidth;
874 USHORT UILangID;
875 DWORD dwLastSystemRITEventTickCountUpdate;
876 ULONG adwDBGTAGFlags[35];
877 DWORD dwTagCount;
878 DWORD dwRIPFlags;
879 } PERUSERSERVERINFO, *PPERUSERSERVERINFO;
880
881 typedef struct tagSERVERINFO
882 {
883 DWORD dwSRVIFlags;
884 ULONG_PTR cHandleEntries;
885 PFN_FNID mpFnidPfn[FNID_NUM];
886 WNDPROC aStoCidPfn[FNID_NUMSERVERPROC];
887 USHORT mpFnid_serverCBWndProc[FNID_NUM];
888 PFNCLIENT apfnClientA;
889 PFNCLIENT apfnClientW;
890 PFNCLIENTWORKER apfnClientWorker;
891 ULONG cbHandleTable;
892 ATOM atomSysClass[ICLS_NOTUSED+1];
893 DWORD dwDefaultHeapBase;
894 DWORD dwDefaultHeapSize;
895 UINT uiShellMsg;
896 MBSTRING MBStrings[MAX_MB_STRINGS];
897 ATOM atomIconSmProp;
898 ATOM atomIconProp;
899 ATOM atomContextHelpIdProp;
900 ATOM atomFrostedWindowProp;
901 CHAR acOemToAnsi[256];
902 CHAR acAnsiToOem[256];
903 DWORD dwInstalledEventHooks;
904 PERUSERSERVERINFO;
905 } SERVERINFO, *PSERVERINFO;
906
907
908 // Server event activity bits.
909 #define SRV_EVENT_MENU 0x0001
910 #define SRV_EVENT_END_APPLICATION 0x0002
911 #define SRV_EVENT_RUNNING 0x0004
912 #define SRV_EVENT_NAMECHANGE 0x0008
913 #define SRV_EVENT_VALUECHANGE 0x0010
914 #define SRV_EVENT_STATECHANGE 0x0020
915 #define SRV_EVENT_LOCATIONCHANGE 0x0040
916 #define SRV_EVENT_CREATE 0x8000
917
918 typedef struct _PROPLISTITEM
919 {
920 ATOM Atom;
921 HANDLE Data;
922 } PROPLISTITEM, *PPROPLISTITEM;
923
924 typedef struct _PROPERTY
925 {
926 LIST_ENTRY PropListEntry;
927 HANDLE Data;
928 ATOM Atom;
929 } PROPERTY, *PPROPERTY;
930
931 typedef struct _BROADCASTPARM
932 {
933 DWORD flags;
934 DWORD recipients;
935 HDESK hDesk;
936 HWND hWnd;
937 LUID luid;
938 } BROADCASTPARM, *PBROADCASTPARM;
939
940 PTHREADINFO GetW32ThreadInfo(VOID);
941 PPROCESSINFO GetW32ProcessInfo(VOID);
942
943 typedef struct _WNDMSG
944 {
945 DWORD maxMsgs;
946 PINT abMsgs;
947 } WNDMSG, *PWNDMSG;
948
949 typedef struct _SHAREDINFO
950 {
951 PSERVERINFO psi; // global Server Info
952 PVOID aheList; // Handle Entry List
953 PVOID pDispInfo; // global PDISPLAYINFO pointer
954 ULONG_PTR ulSharedDelta; // Heap delta
955 WNDMSG awmControl[FNID_LAST - FNID_FIRST];
956 WNDMSG DefWindowMsgs;
957 WNDMSG DefWindowSpecMsgs;
958 } SHAREDINFO, *PSHAREDINFO;
959
960 typedef struct _USERCONNECT
961 {
962 ULONG ulVersion;
963 ULONG ulCurrentVersion;
964 DWORD dwDispatchCount;
965 SHAREDINFO siClient;
966 } USERCONNECT, *PUSERCONNECT;
967
968 typedef struct tagGETCLIPBDATA
969 {
970 UINT uFmtRet;
971 BOOL fGlobalHandle;
972 union
973 {
974 HANDLE hLocale;
975 HANDLE hPalette;
976 };
977 } GETCLIPBDATA, *PGETCLIPBDATA;
978
979 typedef struct tagSETCLIPBDATA
980 {
981 BOOL fGlobalHandle;
982 BOOL fIncSerialNumber;
983 } SETCLIPBDATA, *PSETCLIPBDATA;
984
985 // Used with NtUserSetCursorIconData, last parameter.
986 typedef struct tagCURSORDATA
987 {
988 LPWSTR lpName;
989 LPWSTR lpModName;
990 USHORT rt;
991 USHORT dummy;
992 ULONG CURSORF_flags;
993 SHORT xHotspot;
994 SHORT yHotspot;
995 HBITMAP hbmMask;
996 HBITMAP hbmColor;
997 HBITMAP hbmAlpha;
998 RECT rcBounds;
999 HBITMAP hbmUserAlpha; // Could be in W7U, not in W2k
1000 ULONG bpp;
1001 ULONG cx;
1002 ULONG cy;
1003 INT cpcur;
1004 INT cicur;
1005 struct tagCURSORDATA * aspcur;
1006 DWORD * aicur;
1007 INT * ajifRate;
1008 INT iicur;
1009 } CURSORDATA, *PCURSORDATA; /* !dso CURSORDATA */
1010
1011 // CURSORF_flags:
1012 #define CURSORF_FROMRESOURCE 0x0001
1013 #define CURSORF_GLOBAL 0x0002
1014 #define CURSORF_LRSHARED 0x0004
1015 #define CURSORF_ACON 0x0008
1016 #define CURSORF_WOWCLEANUP 0x0010
1017 #define CURSORF_ACONFRAME 0x0040
1018 #define CURSORF_SECRET 0x0080
1019 #define CURSORF_LINKED 0x0100
1020 #define CURSORF_CURRENT 0x0200
1021
1022 DWORD
1023 NTAPI
1024 NtUserAssociateInputContext(
1025 DWORD dwUnknown1,
1026 DWORD dwUnknown2,
1027 DWORD dwUnknown3);
1028
1029 DWORD
1030 NTAPI
1031 NtUserBuildHimcList(
1032 DWORD dwUnknown1,
1033 DWORD dwUnknown2,
1034 DWORD dwUnknown3,
1035 DWORD dwUnknown4);
1036
1037 DWORD
1038 NTAPI
1039 NtUserCalcMenuBar(
1040 DWORD dwUnknown1,
1041 DWORD dwUnknown2,
1042 DWORD dwUnknown3,
1043 DWORD dwUnknown4,
1044 DWORD dwUnknown5);
1045
1046 DWORD
1047 NTAPI
1048 NtUserCheckMenuItem(
1049 HMENU hmenu,
1050 UINT uIDCheckItem,
1051 UINT uCheck);
1052
1053 DWORD
1054 NTAPI
1055 NtUserCtxDisplayIOCtl(
1056 DWORD dwUnknown1,
1057 DWORD dwUnknown2,
1058 DWORD dwUnknown3);
1059
1060 BOOL
1061 NTAPI
1062 NtUserDeleteMenu(
1063 HMENU hMenu,
1064 UINT uPosition,
1065 UINT uFlags);
1066
1067 BOOL
1068 NTAPI
1069 NtUserDestroyMenu(
1070 HMENU hMenu);
1071
1072 DWORD
1073 NTAPI
1074 NtUserDrawMenuBarTemp(
1075 HWND hWnd,
1076 HDC hDC,
1077 PRECT hRect,
1078 HMENU hMenu,
1079 HFONT hFont);
1080
1081 UINT
1082 NTAPI
1083 NtUserEnableMenuItem(
1084 HMENU hMenu,
1085 UINT uIDEnableItem,
1086 UINT uEnable);
1087
1088 BOOL
1089 NTAPI
1090 NtUserEndMenu(VOID);
1091
1092 BOOL
1093 NTAPI
1094 NtUserGetMenuBarInfo(
1095 HWND hwnd,
1096 LONG idObject,
1097 LONG idItem,
1098 PMENUBARINFO pmbi);
1099
1100 UINT
1101 NTAPI
1102 NtUserGetMenuIndex(
1103 HMENU hMenu,
1104 HMENU hSubMenu);
1105
1106 BOOL
1107 NTAPI
1108 NtUserGetMenuItemRect(
1109 HWND hWnd,
1110 HMENU hMenu,
1111 UINT uItem,
1112 LPRECT lprcItem);
1113
1114 HMENU
1115 NTAPI
1116 NtUserGetSystemMenu(
1117 HWND hWnd,
1118 BOOL bRevert);
1119
1120 BOOL
1121 NTAPI
1122 NtUserHiliteMenuItem(
1123 HWND hWnd,
1124 HMENU hMenu,
1125 UINT uItemHilite,
1126 UINT uHilite);
1127
1128 int
1129 NTAPI
1130 NtUserMenuItemFromPoint(
1131 HWND hWnd,
1132 HMENU hMenu,
1133 DWORD X,
1134 DWORD Y);
1135
1136 BOOL
1137 NTAPI
1138 NtUserRemoveMenu(
1139 HMENU hMenu,
1140 UINT uPosition,
1141 UINT uFlags);
1142
1143 BOOL
1144 NTAPI
1145 NtUserSetMenu(
1146 HWND hWnd,
1147 HMENU hMenu,
1148 BOOL bRepaint);
1149
1150 BOOL
1151 NTAPI
1152 NtUserSetMenuContextHelpId(
1153 HMENU hmenu,
1154 DWORD dwContextHelpId);
1155
1156 BOOL
1157 NTAPI
1158 NtUserSetMenuDefaultItem(
1159 HMENU hMenu,
1160 UINT uItem,
1161 UINT fByPos);
1162
1163 BOOL
1164 NTAPI
1165 NtUserSetMenuFlagRtoL(
1166 HMENU hMenu);
1167
1168 BOOL
1169 NTAPI
1170 NtUserSetSystemMenu(
1171 HWND hWnd,
1172 HMENU hMenu);
1173
1174 BOOL
1175 NTAPI
1176 NtUserThunkedMenuInfo(
1177 HMENU hMenu,
1178 LPCMENUINFO lpcmi);
1179
1180 BOOL
1181 NTAPI
1182 NtUserThunkedMenuItemInfo(
1183 HMENU hMenu,
1184 UINT uItem,
1185 BOOL fByPosition,
1186 BOOL bInsert,
1187 LPMENUITEMINFOW lpmii,
1188 PUNICODE_STRING lpszCaption);
1189
1190 BOOL
1191 NTAPI
1192 NtUserTrackPopupMenuEx(
1193 HMENU hmenu,
1194 UINT fuFlags,
1195 int x,
1196 int y,
1197 HWND hwnd,
1198 LPTPMPARAMS lptpm);
1199
1200 HKL
1201 NTAPI
1202 NtUserActivateKeyboardLayout(
1203 HKL hKl,
1204 ULONG Flags);
1205
1206 DWORD
1207 NTAPI
1208 NtUserAlterWindowStyle(
1209 DWORD Unknown0,
1210 DWORD Unknown1,
1211 DWORD Unknown2);
1212
1213 BOOL
1214 NTAPI
1215 NtUserAttachThreadInput(
1216 IN DWORD idAttach,
1217 IN DWORD idAttachTo,
1218 IN BOOL fAttach);
1219
1220 HDC NTAPI
1221 NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* lPs);
1222
1223 BOOL
1224 NTAPI
1225 NtUserBitBltSysBmp(
1226 HDC hdc,
1227 INT nXDest,
1228 INT nYDest,
1229 INT nWidth,
1230 INT nHeight,
1231 INT nXSrc,
1232 INT nYSrc,
1233 DWORD dwRop );
1234
1235 BOOL
1236 NTAPI
1237 NtUserBlockInput(
1238 BOOL BlockIt);
1239
1240 NTSTATUS
1241 NTAPI
1242 NtUserBuildHwndList(
1243 HDESK hDesktop,
1244 HWND hwndParent,
1245 BOOLEAN bChildren,
1246 ULONG dwThreadId,
1247 ULONG lParam,
1248 HWND* pWnd,
1249 ULONG* pBufSize);
1250
1251 NTSTATUS NTAPI
1252 NtUserBuildNameList(
1253 HWINSTA hWinSta,
1254 ULONG dwSize,
1255 PVOID lpBuffer,
1256 PULONG pRequiredSize);
1257
1258 NTSTATUS
1259 NTAPI
1260 NtUserBuildPropList(
1261 HWND hWnd,
1262 LPVOID Buffer,
1263 DWORD BufferSize,
1264 DWORD *Count);
1265
1266 /* apfnSimpleCall indices from Windows XP SP 2 */
1267 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1268 #define WIN32K_VERSION NTDDI_WINXPSP2 // FIXME: this should go somewhere else
1269
1270 enum SimpleCallRoutines
1271 {
1272 NOPARAM_ROUTINE_CREATEMENU,
1273 NOPARAM_ROUTINE_CREATEMENUPOPUP,
1274 #if (WIN32K_VERSION >= NTDDI_VISTA)
1275 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
1276 NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
1277 NOPARAM_ROUTINE_CREATESYSTEMTHREADS,
1278 NOPARAM_ROUTINE_DESTROY_CARET,
1279 #endif
1280 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING,
1281 #if (WIN32K_VERSION < NTDDI_VISTA)
1282 NOPARAM_ROUTINE_MSQCLEARWAKEMASK,
1283 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION,
1284 NOPARAM_ROUTINE_DESTROY_CARET,
1285 #endif
1286 NOPARAM_ROUTINE_GETDEVICECHANGEINFO,
1287 NOPARAM_ROUTINE_GETIMESHOWSTATUS,
1288 NOPARAM_ROUTINE_GETINPUTDESKTOP,
1289 NOPARAM_ROUTINE_GETMSESSAGEPOS,
1290 #if (WIN32K_VERSION >= NTDDI_VISTA)
1291 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL,
1292 #else
1293 NOPARAM_ROUTINE_GETREMOTEPROCID,
1294 #endif
1295 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE,
1296 NOPARAM_ROUTINE_LOADCURSANDICOS,
1297 #if (WIN32K_VERSION >= NTDDI_VISTA)
1298 NOPARAM_ROUTINE_LOADUSERAPIHOOK,
1299 NOPARAM_ROUTINE_PREPAREFORLOGOFF, /* 0x0f */
1300 #endif
1301 NOPARAM_ROUTINE_RELEASECAPTURE,
1302 NOPARAM_ROUTINE_RESETDBLCLICK,
1303 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS,
1304 NOPARAM_ROUTINE_REMOTECONSHDWSTOP,
1305 NOPARAM_ROUTINE_REMOTEDISCONNECT,
1306 NOPARAM_ROUTINE_REMOTELOGOFF,
1307 NOPARAM_ROUTINE_REMOTENTSECURITY,
1308 NOPARAM_ROUTINE_REMOTESHDWSETUP,
1309 NOPARAM_ROUTINE_REMOTESHDWSTOP,
1310 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE,
1311 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE,
1312 NOPARAM_ROUTINE_REMOTECONNECTSTATE,
1313 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING,
1314 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER,
1315 #if (WIN32K_VERSION >= NTDDI_VISTA)
1316 NOPARAM_ROUTINE_WAKERITFORSHTDWN,
1317 #endif
1318 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP,
1319 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP,
1320 #if (WIN32K_VERSION < NTDDI_VISTA)
1321 NOPARAM_ROUTINE_LOADUSERAPIHOOK,
1322 #endif
1323 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS,
1324 #if (WIN32K_VERSION >= NTDDI_VISTA)
1325 ONEPARAM_ROUTINE_GETSENDMSGRECVR,
1326 #endif
1327 ONEPARAM_ROUTINE_WINDOWFROMDC,
1328 ONEPARAM_ROUTINE_ALLOWSETFOREGND,
1329 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT,
1330 #if (WIN32K_VERSION < NTDDI_VISTA)
1331 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS,
1332 #endif
1333 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE,
1334 ONEPARAM_ROUTINE_DIRECTEDYIELD,
1335 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS,
1336 #if (WIN32K_VERSION < NTDDI_VISTA)
1337 ONEPARAM_ROUTINE_GETCURSORPOS,
1338 #endif
1339 ONEPARAM_ROUTINE_GETINPUTEVENT,
1340 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT,
1341 ONEPARAM_ROUTINE_GETKEYBOARDTYPE,
1342 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT,
1343 ONEPARAM_ROUTINE_GETQUEUESTATUS,
1344 ONEPARAM_ROUTINE_GETWINSTAINFO,
1345 #if (WIN32K_VERSION < NTDDI_VISTA)
1346 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL,
1347 #endif
1348 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW,
1349 ONEPARAM_ROUTINE_LOADFONTS,
1350 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT,
1351 ONEPARAM_ROUTINE_MESSAGEBEEP,
1352 ONEPARAM_ROUTINE_PLAYEVENTSOUND,
1353 ONEPARAM_ROUTINE_POSTQUITMESSAGE,
1354 #if (WIN32K_VERSION < NTDDI_VISTA)
1355 ONEPARAM_ROUTINE_PREPAREFORLOGOFF,
1356 #endif
1357 ONEPARAM_ROUTINE_REALIZEPALETTE,
1358 ONEPARAM_ROUTINE_REGISTERLPK,
1359 #if (WIN32K_VERSION >= NTDDI_VISTA)
1360 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
1361 #endif
1362 ONEPARAM_ROUTINE_REMOTERECONNECT,
1363 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS,
1364 ONEPARAM_ROUTINE_RELEASEDC,
1365 #if (WIN32K_VERSION >= NTDDI_VISTA)
1366 ONEPARAM_ROUTINE_REMOTENOTIFY,
1367 #endif
1368 ONEPARAM_ROUTINE_REPLYMESSAGE,
1369 ONEPARAM_ROUTINE_SETCARETBLINKTIME,
1370 ONEPARAM_ROUTINE_SETDBLCLICKTIME,
1371 #if (WIN32K_VERSION < NTDDI_VISTA)
1372 ONEPARAM_ROUTINE_SETIMESHOWSTATUS,
1373 #endif
1374 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO,
1375 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT,
1376 #if (WIN32K_VERSION >= NTDDI_VISTA)
1377 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS,
1378 #endif
1379 ONEPARAM_ROUTINE_SHOWCURSOR,
1380 ONEPARAM_ROUTINE_SHOWSTARTGLASS,
1381 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON,
1382 X_ROUTINE_WOWMODULEUNLOAD,
1383 #if (WIN32K_VERSION < NTDDI_VISTA)
1384 X_ROUTINE_REMOTENOTIFY,
1385 #endif
1386 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW,
1387 HWND_ROUTINE_DWP_GETENABLEDPOPUP,
1388 HWND_ROUTINE_GETWNDCONTEXTHLPID,
1389 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW,
1390 HWND_ROUTINE_SETMSGBOX,
1391 HWNDOPT_ROUTINE_SETPROGMANWINDOW,
1392 HWNDOPT_ROUTINE_SETTASKMANWINDOW,
1393 HWNDPARAM_ROUTINE_GETCLASSICOCUR,
1394 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE,
1395 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER,
1396 HWNDPARAM_ROUTINE_SETDIALOGPOINTER,
1397 HWNDPARAM_ROUTINE_SETVISIBLE,
1398 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID,
1399 HWNDPARAM_ROUTINE_SETWINDOWSTATE,
1400 HWNDLOCK_ROUTINE_WINDOWHASSHADOW, /* correct prefix ? */
1401 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS,
1402 HWNDLOCK_ROUTINE_DRAWMENUBAR,
1403 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD,
1404 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE,
1405 HWNDLOCK_ROUTINE_REDRAWFRAME,
1406 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK,
1407 HWNDLOCK_ROUTINE_SETDLGSYSMENU,
1408 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW,
1409 HWNDLOCK_ROUTINE_SETSYSMENU,
1410 HWNDLOCK_ROUTINE_UPDATECKIENTRECT,
1411 HWNDLOCK_ROUTINE_UPDATEWINDOW,
1412 X_ROUTINE_IMESHOWSTATUSCHANGE,
1413 TWOPARAM_ROUTINE_ENABLEWINDOW,
1414 TWOPARAM_ROUTINE_REDRAWTITLE,
1415 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS,
1416 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW,
1417 TWOPARAM_ROUTINE_UPDATEWINDOWS,
1418 TWOPARAM_ROUTINE_VALIDATERGN,
1419 #if (WIN32K_VERSION >= NTDDI_VISTA)
1420 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER,
1421 TWOPARAM_ROUTINE_GETCURSORPOS,
1422 #endif
1423 TWOPARAM_ROUTINE_GETHDEVNAME,
1424 TWOPARAM_ROUTINE_INITANSIOEM,
1425 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY,
1426 #if (WIN32K_VERSION >= NTDDI_VISTA)
1427 TWOPARAM_ROUTINE_REGISTERGHSTWND,
1428 #endif
1429 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS,
1430 #if (WIN32K_VERSION >= NTDDI_VISTA)
1431 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND,
1432 #else
1433 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD,
1434 #endif
1435 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS,
1436 TWOPARAM_ROUTINE_SHADOWCLEANUP,
1437 TWOPARAM_ROUTINE_REMOTESHADOWSTART,
1438 TWOPARAM_ROUTINE_SETCARETPOS,
1439 TWOPARAM_ROUTINE_SETCURSORPOS,
1440 #if (WIN32K_VERSION >= NTDDI_VISTA)
1441 TWOPARAM_ROUTINE_SETPHYSCURSORPOS,
1442 #endif
1443 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK,
1444 TWOPARAM_ROUTINE_WOWCLEANUP
1445 };
1446
1447 DWORD
1448 NTAPI
1449 NtUserCallHwnd(
1450 HWND hWnd,
1451 DWORD Routine);
1452
1453 BOOL
1454 NTAPI
1455 NtUserCallHwndLock(
1456 HWND hWnd,
1457 DWORD Routine);
1458
1459 HWND
1460 NTAPI
1461 NtUserCallHwndOpt(
1462 HWND hWnd,
1463 DWORD Routine);
1464
1465 DWORD
1466 NTAPI
1467 NtUserCallHwndParam(
1468 HWND hWnd,
1469 DWORD Param,
1470 DWORD Routine);
1471
1472 DWORD
1473 NTAPI
1474 NtUserCallHwndParamLock(
1475 HWND hWnd,
1476 DWORD Param,
1477 DWORD Routine);
1478
1479 BOOL
1480 NTAPI
1481 NtUserCallMsgFilter(
1482 LPMSG msg,
1483 INT code);
1484
1485 LRESULT
1486 NTAPI
1487 NtUserCallNextHookEx(
1488 int Code,
1489 WPARAM wParam,
1490 LPARAM lParam,
1491 BOOL Ansi);
1492
1493 DWORD_PTR
1494 NTAPI
1495 NtUserCallNoParam(
1496 DWORD Routine);
1497
1498 DWORD_PTR
1499 NTAPI
1500 NtUserCallOneParam(
1501 DWORD_PTR Param,
1502 DWORD Routine);
1503
1504 DWORD_PTR
1505 NTAPI
1506 NtUserCallTwoParam(
1507 DWORD_PTR Param1,
1508 DWORD_PTR Param2,
1509 DWORD Routine);
1510
1511 BOOL
1512 NTAPI
1513 NtUserChangeClipboardChain(
1514 HWND hWndRemove,
1515 HWND hWndNewNext);
1516
1517 LONG
1518 NTAPI
1519 NtUserChangeDisplaySettings(
1520 PUNICODE_STRING lpszDeviceName,
1521 LPDEVMODEW lpDevMode,
1522 HWND hwnd,
1523 DWORD dwflags,
1524 LPVOID lParam);
1525
1526 BOOL
1527 NTAPI
1528 NtUserCheckDesktopByThreadId(
1529 DWORD dwThreadId);
1530
1531 BOOL
1532 NTAPI
1533 NtUserCheckWindowThreadDesktop(
1534 HWND hwnd,
1535 DWORD dwThreadId,
1536 ULONG ReturnValue);
1537
1538 DWORD
1539 NTAPI
1540 NtUserCheckImeHotKey(
1541 DWORD dwUnknown1,
1542 DWORD dwUnknown2);
1543
1544 HWND NTAPI
1545 NtUserChildWindowFromPointEx(
1546 HWND Parent,
1547 LONG x,
1548 LONG y,
1549 UINT Flags);
1550
1551 BOOL
1552 NTAPI
1553 NtUserClipCursor(
1554 RECT *lpRect);
1555
1556 BOOL
1557 NTAPI
1558 NtUserCloseClipboard(VOID);
1559
1560 BOOL
1561 NTAPI
1562 NtUserCloseDesktop(
1563 HDESK hDesktop);
1564
1565 BOOL
1566 NTAPI
1567 NtUserCloseWindowStation(
1568 HWINSTA hWinSta);
1569
1570 /* Console commands for NtUserConsoleControl */
1571 typedef enum _CONSOLECONTROL
1572 {
1573 GuiConsoleWndClassAtom,
1574 ConsoleMakePalettePublic = 5,
1575 ConsoleAcquireDisplayOwnership,
1576 } CONSOLECONTROL, *PCONSOLECONTROL;
1577
1578 NTSTATUS
1579 APIENTRY
1580 NtUserConsoleControl(
1581 IN CONSOLECONTROL ConsoleCtrl,
1582 IN PVOID ConsoleCtrlInfo,
1583 IN ULONG ConsoleCtrlInfoLength);
1584
1585 HANDLE
1586 NTAPI
1587 NtUserConvertMemHandle(
1588 PVOID pData,
1589 DWORD cbData);
1590
1591 ULONG
1592 NTAPI
1593 NtUserCopyAcceleratorTable(
1594 HACCEL Table,
1595 LPACCEL Entries,
1596 ULONG EntriesCount);
1597
1598 DWORD
1599 NTAPI
1600 NtUserCountClipboardFormats(VOID);
1601
1602 HACCEL
1603 NTAPI
1604 NtUserCreateAcceleratorTable(
1605 LPACCEL Entries,
1606 ULONG EntriesCount);
1607
1608 BOOL
1609 NTAPI
1610 NtUserCreateCaret(
1611 HWND hWnd,
1612 HBITMAP hBitmap,
1613 int nWidth,
1614 int nHeight);
1615
1616 HDESK
1617 NTAPI
1618 NtUserCreateDesktop(
1619 POBJECT_ATTRIBUTES poa,
1620 PUNICODE_STRING lpszDesktopDevice,
1621 LPDEVMODEW lpdmw,
1622 DWORD dwFlags,
1623 ACCESS_MASK dwDesiredAccess);
1624
1625 DWORD
1626 NTAPI
1627 NtUserCreateInputContext(
1628 DWORD dwUnknown1);
1629
1630 NTSTATUS
1631 NTAPI
1632 NtUserCreateLocalMemHandle(
1633 HANDLE hMem,
1634 PVOID pData,
1635 DWORD cbData,
1636 DWORD *pcbData);
1637
1638 HWND
1639 NTAPI
1640 NtUserCreateWindowEx(
1641 DWORD dwExStyle,
1642 PLARGE_STRING plstrClassName,
1643 PLARGE_STRING plstrClsVersion,
1644 PLARGE_STRING plstrWindowName,
1645 DWORD dwStyle,
1646 int x,
1647 int y,
1648 int nWidth,
1649 int nHeight,
1650 HWND hWndParent,
1651 HMENU hMenu,
1652 HINSTANCE hInstance,
1653 LPVOID lpParam,
1654 DWORD dwFlags,
1655 PVOID acbiBuffer);
1656
1657 HWINSTA
1658 NTAPI
1659 NtUserCreateWindowStation(
1660 POBJECT_ATTRIBUTES ObjectAttributes,
1661 ACCESS_MASK dwDesiredAccess,
1662 DWORD Unknown2,
1663 DWORD Unknown3,
1664 DWORD Unknown4,
1665 DWORD Unknown5,
1666 DWORD Unknown6);
1667
1668 BOOL
1669 NTAPI
1670 NtUserDdeGetQualityOfService(
1671 IN HWND hwndClient,
1672 IN HWND hWndServer,
1673 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1674
1675 DWORD
1676 NTAPI
1677 NtUserDdeInitialize(
1678 DWORD Unknown0,
1679 DWORD Unknown1,
1680 DWORD Unknown2,
1681 DWORD Unknown3,
1682 DWORD Unknown4);
1683
1684 BOOL
1685 NTAPI
1686 NtUserDdeSetQualityOfService(
1687 IN HWND hwndClient,
1688 IN PSECURITY_QUALITY_OF_SERVICE pqosNew,
1689 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1690
1691 HDWP NTAPI
1692 NtUserDeferWindowPos(
1693 HDWP WinPosInfo,
1694 HWND Wnd,
1695 HWND WndInsertAfter,
1696 int x,
1697 int y,
1698 int cx,
1699 int cy,
1700 UINT Flags);
1701
1702 BOOL NTAPI
1703 NtUserDefSetText(HWND WindowHandle, PLARGE_STRING WindowText);
1704
1705 BOOLEAN
1706 NTAPI
1707 NtUserDestroyAcceleratorTable(
1708 HACCEL Table);
1709
1710 BOOL
1711 NTAPI
1712 NtUserDestroyCursor(
1713 _In_ HANDLE Handle,
1714 _In_ BOOL bForce);
1715
1716 DWORD
1717 NTAPI
1718 NtUserDestroyInputContext(
1719 DWORD dwUnknown1);
1720
1721 BOOLEAN NTAPI
1722 NtUserDestroyWindow(HWND Wnd);
1723
1724 DWORD
1725 NTAPI
1726 NtUserDisableThreadIme(
1727 DWORD dwUnknown1);
1728
1729 LRESULT
1730 NTAPI
1731 NtUserDispatchMessage(PMSG pMsg);
1732
1733 BOOL
1734 NTAPI
1735 NtUserDragDetect(
1736 HWND hWnd,
1737 POINT pt);
1738
1739 DWORD
1740 NTAPI
1741 NtUserDragObject(
1742 HWND hwnd1,
1743 HWND hwnd2,
1744 UINT u1,
1745 DWORD dw1,
1746 HCURSOR hc1);
1747
1748 BOOL
1749 NTAPI
1750 NtUserDrawAnimatedRects(
1751 HWND hwnd,
1752 INT idAni,
1753 RECT *lprcFrom,
1754 RECT *lprcTo);
1755
1756 BOOL
1757 NTAPI
1758 NtUserDrawCaption(
1759 HWND hWnd,
1760 HDC hDc,
1761 LPCRECT lpRc,
1762 UINT uFlags);
1763
1764 BOOL
1765 NTAPI
1766 NtUserDrawCaptionTemp(
1767 HWND hWnd,
1768 HDC hDC,
1769 LPCRECT lpRc,
1770 HFONT hFont,
1771 HICON hIcon,
1772 const PUNICODE_STRING str,
1773 UINT uFlags);
1774
1775 // Used with NtUserDrawIconEx, last parameter.
1776 typedef struct _DRAWICONEXDATA
1777 {
1778 HBITMAP hbmMask;
1779 HBITMAP hbmColor;
1780 int cx;
1781 int cy;
1782 } DRAWICONEXDATA, *PDRAWICONEXDATA;
1783
1784 BOOL
1785 NTAPI
1786 NtUserDrawIconEx(
1787 HDC hdc,
1788 int xLeft,
1789 int yTop,
1790 HICON hIcon,
1791 int cxWidth,
1792 int cyWidth,
1793 UINT istepIfAniCur,
1794 HBRUSH hbrFlickerFreeDraw,
1795 UINT diFlags,
1796 BOOL bMetaHDC,
1797 PVOID pDIXData);
1798
1799 BOOL
1800 NTAPI
1801 NtUserEmptyClipboard(VOID);
1802
1803 BOOL
1804 NTAPI
1805 NtUserEnableScrollBar(
1806 HWND hWnd,
1807 UINT wSBflags,
1808 UINT wArrows);
1809
1810 BOOL
1811 NTAPI
1812 NtUserEndDeferWindowPosEx(
1813 HDWP WinPosInfo,
1814 DWORD Unknown1);
1815
1816 BOOL NTAPI
1817 NtUserEndPaint(HWND hWnd, CONST PAINTSTRUCT* lPs);
1818
1819 BOOL
1820 NTAPI
1821 NtUserEnumDisplayDevices (
1822 PUNICODE_STRING lpDevice, /* device name */
1823 DWORD iDevNum, /* display device */
1824 PDISPLAY_DEVICEW lpDisplayDevice, /* device information */
1825 DWORD dwFlags ); /* reserved */
1826
1827 /*BOOL
1828 NTAPI
1829 NtUserEnumDisplayMonitors (
1830 HDC hdc,
1831 LPCRECT lprcClip,
1832 MONITORENUMPROC lpfnEnum,
1833 LPARAM dwData );*/
1834 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1835 INT
1836 NTAPI
1837 NtUserEnumDisplayMonitors(
1838 OPTIONAL IN HDC hDC,
1839 OPTIONAL IN LPCRECT pRect,
1840 OPTIONAL OUT HMONITOR *hMonitorList,
1841 OPTIONAL OUT LPRECT monitorRectList,
1842 OPTIONAL IN DWORD listSize );
1843
1844
1845 NTSTATUS
1846 NTAPI
1847 NtUserEnumDisplaySettings(
1848 PUNICODE_STRING lpszDeviceName,
1849 DWORD iModeNum,
1850 LPDEVMODEW lpDevMode, /* FIXME is this correct? */
1851 DWORD dwFlags );
1852
1853 DWORD
1854 NTAPI
1855 NtUserEvent(
1856 DWORD Unknown0);
1857
1858 DWORD
1859 NTAPI
1860 NtUserExcludeUpdateRgn(
1861 HDC hDC,
1862 HWND hWnd);
1863
1864 BOOL
1865 NTAPI
1866 NtUserFillWindow(
1867 HWND hWndPaint,
1868 HWND hWndPaint1,
1869 HDC hDC,
1870 HBRUSH hBrush);
1871
1872 HWND
1873 NTAPI
1874 NtUserFindWindowEx(
1875 HWND hwndParent,
1876 HWND hwndChildAfter,
1877 PUNICODE_STRING ucClassName,
1878 PUNICODE_STRING ucWindowName,
1879 DWORD dwUnknown
1880 );
1881
1882 BOOL
1883 NTAPI
1884 NtUserFlashWindowEx(
1885 IN PFLASHWINFO pfwi);
1886
1887 BOOL
1888 NTAPI
1889 NtUserGetAltTabInfo(
1890 HWND hwnd,
1891 INT iItem,
1892 PALTTABINFO pati,
1893 LPWSTR pszItemText,
1894 UINT cchItemText,
1895 BOOL Ansi);
1896
1897 HWND NTAPI
1898 NtUserGetAncestor(HWND hWnd, UINT Flags);
1899
1900 DWORD
1901 NTAPI
1902 NtUserGetAppImeLevel(
1903 DWORD dwUnknown1);
1904
1905 SHORT
1906 NTAPI
1907 NtUserGetAsyncKeyState(
1908 INT Key);
1909
1910 _Success_(return!=0)
1911 _At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return*2+2))
1912 ULONG
1913 APIENTRY
1914 NtUserGetAtomName(
1915 _In_ ATOM atom,
1916 _Inout_ PUNICODE_STRING pustrName);
1917
1918 UINT
1919 NTAPI
1920 NtUserGetCaretBlinkTime(VOID);
1921
1922 BOOL
1923 NTAPI
1924 NtUserGetCaretPos(
1925 LPPOINT lpPoint);
1926
1927 BOOL NTAPI
1928 NtUserGetClassInfo(HINSTANCE hInstance,
1929 PUNICODE_STRING ClassName,
1930 LPWNDCLASSEXW wcex,
1931 LPWSTR *ppszMenuName,
1932 BOOL Ansi);
1933
1934 INT
1935 NTAPI
1936 NtUserGetClassName(HWND hWnd,
1937 BOOL Real, // 0 GetClassNameW, 1 RealGetWindowClassA/W
1938 PUNICODE_STRING ClassName);
1939
1940 HANDLE
1941 NTAPI
1942 NtUserGetClipboardData(
1943 UINT fmt,
1944 PGETCLIPBDATA pgcd);
1945
1946 INT
1947 NTAPI
1948 NtUserGetClipboardFormatName(
1949 UINT uFormat,
1950 LPWSTR lpszFormatName,
1951 INT cchMaxCount);
1952
1953 HWND
1954 NTAPI
1955 NtUserGetClipboardOwner(VOID);
1956
1957 DWORD
1958 NTAPI
1959 NtUserGetClipboardSequenceNumber(VOID);
1960
1961 HWND
1962 NTAPI
1963 NtUserGetClipboardViewer(VOID);
1964
1965 BOOL
1966 NTAPI
1967 NtUserGetClipCursor(
1968 RECT *lpRect);
1969
1970 BOOL
1971 NTAPI
1972 NtUserGetComboBoxInfo(
1973 HWND hWnd,
1974 PCOMBOBOXINFO pcbi);
1975
1976 HBRUSH
1977 NTAPI
1978 NtUserGetControlBrush(
1979 HWND hwnd,
1980 HDC hdc,
1981 UINT ctlType);
1982
1983 HBRUSH
1984 NTAPI
1985 NtUserGetControlColor(
1986 HWND hwndParent,
1987 HWND hwnd,
1988 HDC hdc,
1989 UINT CtlMsg);
1990
1991 ULONG_PTR
1992 NTAPI
1993 NtUserGetCPD(
1994 HWND hWnd,
1995 GETCPD Flags,
1996 ULONG_PTR Proc);
1997
1998 HCURSOR
1999 NTAPI
2000 NtUserGetCursorFrameInfo(
2001 HCURSOR hCursor,
2002 DWORD istep,
2003 INT* rate_jiffies,
2004 DWORD* num_steps);
2005
2006 BOOL
2007 NTAPI
2008 NtUserGetCursorInfo(
2009 PCURSORINFO pci);
2010
2011 HDC
2012 NTAPI
2013 NtUserGetDC(
2014 HWND hWnd);
2015
2016 HDC
2017 NTAPI
2018 NtUserGetDCEx(
2019 HWND hWnd,
2020 HANDLE hRegion,
2021 ULONG Flags);
2022
2023 UINT
2024 NTAPI
2025 NtUserGetDoubleClickTime(VOID);
2026
2027 HWND
2028 NTAPI
2029 NtUserGetForegroundWindow(VOID);
2030
2031 DWORD
2032 NTAPI
2033 NtUserGetGuiResources(
2034 HANDLE hProcess,
2035 DWORD uiFlags);
2036
2037 BOOL
2038 NTAPI
2039 NtUserGetGUIThreadInfo(
2040 DWORD idThread,
2041 LPGUITHREADINFO lpgui);
2042
2043 _Success_(return!=FALSE)
2044 BOOL
2045 NTAPI
2046 NtUserGetIconInfo(
2047 _In_ HANDLE hCurIcon,
2048 _Out_opt_ PICONINFO IconInfo,
2049 _Inout_opt_ PUNICODE_STRING lpInstName,
2050 _Inout_opt_ PUNICODE_STRING lpResName,
2051 _Out_opt_ LPDWORD pbpp,
2052 _In_ BOOL bInternal);
2053
2054 BOOL
2055 NTAPI
2056 NtUserGetIconSize(
2057 HANDLE Handle,
2058 UINT istepIfAniCur,
2059 LONG *plcx,
2060 LONG *plcy);
2061
2062 DWORD
2063 NTAPI
2064 NtUserGetImeHotKey(
2065 DWORD Unknown0,
2066 DWORD Unknown1,
2067 DWORD Unknown2,
2068 DWORD Unknown3);
2069
2070 DWORD
2071 NTAPI
2072 NtUserGetImeInfoEx(
2073 DWORD dwUnknown1,
2074 DWORD dwUnknown2);
2075
2076 DWORD
2077 NTAPI
2078 NtUserGetInternalWindowPos(
2079 HWND hwnd,
2080 LPRECT rectWnd,
2081 LPPOINT ptIcon);
2082
2083 HKL
2084 NTAPI
2085 NtUserGetKeyboardLayout(
2086 DWORD dwThreadid);
2087
2088 UINT
2089 NTAPI
2090 NtUserGetKeyboardLayoutList(
2091 ULONG nItems,
2092 HKL *pHklBuff);
2093
2094 BOOL
2095 NTAPI
2096 NtUserGetKeyboardLayoutName(
2097 LPWSTR lpszName);
2098
2099 DWORD
2100 NTAPI
2101 NtUserGetKeyboardState(
2102 LPBYTE Unknown0);
2103
2104 DWORD
2105 NTAPI
2106 NtUserGetKeyboardType(
2107 DWORD TypeFlag);
2108
2109 DWORD
2110 NTAPI
2111 NtUserGetKeyNameText( LONG lParam, LPWSTR lpString, int nSize );
2112
2113 SHORT
2114 NTAPI
2115 NtUserGetKeyState(
2116 INT VirtKey);
2117
2118 BOOL
2119 NTAPI
2120 NtUserGetLayeredWindowAttributes(
2121 HWND hwnd,
2122 COLORREF *pcrKey,
2123 BYTE *pbAlpha,
2124 DWORD *pdwFlags);
2125
2126 DWORD
2127 NTAPI
2128 NtUserGetListBoxInfo(
2129 HWND hWnd);
2130
2131 BOOL APIENTRY
2132 NtUserGetMessage(PMSG pMsg,
2133 HWND hWnd,
2134 UINT MsgFilterMin,
2135 UINT MsgFilterMax);
2136
2137 DWORD
2138 NTAPI
2139 NtUserGetMouseMovePointsEx(
2140 UINT cbSize,
2141 LPMOUSEMOVEPOINT lppt,
2142 LPMOUSEMOVEPOINT lpptBuf,
2143 int nBufPoints,
2144 DWORD resolution);
2145
2146 BOOL
2147 NTAPI
2148 NtUserGetObjectInformation(
2149 HANDLE hObject,
2150 DWORD nIndex,
2151 PVOID pvInformation,
2152 DWORD nLength,
2153 PDWORD nLengthNeeded);
2154
2155 HWND
2156 NTAPI
2157 NtUserGetOpenClipboardWindow(VOID);
2158
2159 INT
2160 NTAPI
2161 NtUserGetPriorityClipboardFormat(
2162 UINT *paFormatPriorityList,
2163 INT cFormats);
2164
2165 HWINSTA
2166 NTAPI
2167 NtUserGetProcessWindowStation(VOID);
2168
2169 DWORD
2170 NTAPI
2171 NtUserGetRawInputBuffer(
2172 PRAWINPUT pData,
2173 PUINT pcbSize,
2174 UINT cbSizeHeader);
2175
2176 DWORD
2177 NTAPI
2178 NtUserGetRawInputData(
2179 HRAWINPUT hRawInput,
2180 UINT uiCommand,
2181 LPVOID pData,
2182 PUINT pcbSize,
2183 UINT cbSizeHeader);
2184
2185 DWORD
2186 NTAPI
2187 NtUserGetRawInputDeviceInfo(
2188 HANDLE hDevice,
2189 UINT uiCommand,
2190 LPVOID pData,
2191 PUINT pcbSize);
2192
2193 DWORD
2194 NTAPI
2195 NtUserGetRawInputDeviceList(
2196 PRAWINPUTDEVICELIST pRawInputDeviceList,
2197 PUINT puiNumDevices,
2198 UINT cbSize);
2199
2200 DWORD
2201 NTAPI
2202 NtUserGetRegisteredRawInputDevices(
2203 PRAWINPUTDEVICE pRawInputDevices,
2204 PUINT puiNumDevices,
2205 UINT cbSize);
2206
2207 BOOL
2208 NTAPI
2209 NtUserGetScrollBarInfo(
2210 HWND hWnd,
2211 LONG idObject,
2212 PSCROLLBARINFO psbi);
2213
2214 HDESK
2215 NTAPI
2216 NtUserGetThreadDesktop(
2217 DWORD dwThreadId,
2218 DWORD Unknown1);
2219
2220
2221 enum ThreadStateRoutines
2222 {
2223 THREADSTATE_GETTHREADINFO,
2224 THREADSTATE_INSENDMESSAGE,
2225 THREADSTATE_FOCUSWINDOW,
2226 THREADSTATE_ACTIVEWINDOW,
2227 THREADSTATE_CAPTUREWINDOW,
2228 THREADSTATE_PROGMANWINDOW,
2229 THREADSTATE_TASKMANWINDOW,
2230 THREADSTATE_GETMESSAGETIME,
2231 THREADSTATE_GETINPUTSTATE,
2232 THREADSTATE_UPTIMELASTREAD,
2233 THREADSTATE_FOREGROUNDTHREAD,
2234 THREADSTATE_GETCURSOR
2235 };
2236
2237 DWORD_PTR
2238 NTAPI
2239 NtUserGetThreadState(
2240 DWORD Routine);
2241
2242 BOOLEAN
2243 NTAPI
2244 NtUserGetTitleBarInfo(
2245 HWND hwnd,
2246 PTITLEBARINFO pti);
2247
2248 BOOL NTAPI
2249 NtUserGetUpdateRect(HWND hWnd, LPRECT lpRect, BOOL fErase);
2250
2251 int
2252 NTAPI
2253 NtUserGetUpdateRgn(
2254 HWND hWnd,
2255 HRGN hRgn,
2256 BOOL bErase);
2257
2258 HDC
2259 NTAPI
2260 NtUserGetWindowDC(
2261 HWND hWnd);
2262
2263 BOOL
2264 NTAPI
2265 NtUserGetWindowPlacement(
2266 HWND hWnd,
2267 WINDOWPLACEMENT *lpwndpl);
2268
2269 PCLS
2270 NTAPI
2271 NtUserGetWOWClass(
2272 HINSTANCE hInstance,
2273 PUNICODE_STRING ClassName);
2274
2275 DWORD
2276 NTAPI
2277 NtUserHardErrorControl(
2278 DWORD dwUnknown1,
2279 DWORD dwUnknown2,
2280 DWORD dwUnknown3);
2281
2282 BOOL
2283 NTAPI
2284 NtUserImpersonateDdeClientWindow(
2285 HWND hWndClient,
2286 HWND hWndServer);
2287
2288 NTSTATUS
2289 NTAPI
2290 NtUserInitialize(
2291 DWORD dwWinVersion,
2292 HANDLE hPowerRequestEvent,
2293 HANDLE hMediaRequestEvent);
2294
2295 NTSTATUS
2296 NTAPI
2297 NtUserInitializeClientPfnArrays(
2298 PPFNCLIENT pfnClientA,
2299 PPFNCLIENT pfnClientW,
2300 PPFNCLIENTWORKER pfnClientWorker,
2301 HINSTANCE hmodUser);
2302
2303 DWORD
2304 NTAPI
2305 NtUserInitTask(
2306 DWORD Unknown0,
2307 DWORD Unknown1,
2308 DWORD Unknown2,
2309 DWORD Unknown3,
2310 DWORD Unknown4,
2311 DWORD Unknown5,
2312 DWORD Unknown6,
2313 DWORD Unknown7,
2314 DWORD Unknown8,
2315 DWORD Unknown9,
2316 DWORD Unknown10,
2317 DWORD Unknown11);
2318
2319 INT
2320 NTAPI
2321 NtUserInternalGetWindowText(
2322 HWND hWnd,
2323 LPWSTR lpString,
2324 INT nMaxCount);
2325
2326 BOOL
2327 NTAPI
2328 NtUserInvalidateRect(
2329 HWND hWnd,
2330 CONST RECT *lpRect,
2331 BOOL bErase);
2332
2333 BOOL
2334 NTAPI
2335 NtUserInvalidateRgn(
2336 HWND hWnd,
2337 HRGN hRgn,
2338 BOOL bErase);
2339
2340 BOOL
2341 NTAPI
2342 NtUserIsClipboardFormatAvailable(
2343 UINT format);
2344
2345 BOOL
2346 NTAPI
2347 NtUserKillTimer
2348 (
2349 HWND hWnd,
2350 UINT_PTR uIDEvent
2351 );
2352
2353 HKL
2354 NTAPI
2355 NtUserLoadKeyboardLayoutEx(
2356 IN HANDLE Handle,
2357 IN DWORD offTable,
2358 IN PUNICODE_STRING puszKeyboardName,
2359 IN HKL hKL,
2360 IN PUNICODE_STRING puszKLID,
2361 IN DWORD dwKLID,
2362 IN UINT Flags);
2363
2364 BOOL
2365 NTAPI
2366 NtUserLockWindowStation(
2367 HWINSTA hWindowStation);
2368
2369 BOOL
2370 NTAPI
2371 NtUserLockWindowUpdate(
2372 HWND hWnd);
2373
2374 BOOL
2375 NTAPI
2376 NtUserLockWorkStation(VOID);
2377
2378 UINT
2379 NTAPI
2380 NtUserMapVirtualKeyEx( UINT keyCode,
2381 UINT transType,
2382 DWORD keyboardId,
2383 HKL dwhkl );
2384
2385 typedef struct tagDOSENDMESSAGE
2386 {
2387 UINT uFlags;
2388 UINT uTimeout;
2389 ULONG_PTR Result;
2390 }
2391 DOSENDMESSAGE, *PDOSENDMESSAGE;
2392
2393 BOOL
2394 NTAPI
2395 NtUserMessageCall(
2396 HWND hWnd,
2397 UINT Msg,
2398 WPARAM wParam,
2399 LPARAM lParam,
2400 ULONG_PTR ResultInfo,
2401 DWORD dwType, // FNID_XX types
2402 BOOL Ansi);
2403
2404 DWORD
2405 NTAPI
2406 NtUserMinMaximize(
2407 HWND hWnd,
2408 UINT cmd, // Wine SW_ commands
2409 BOOL Hide);
2410
2411 DWORD
2412 NTAPI
2413 NtUserMNDragLeave(VOID);
2414
2415 DWORD
2416 NTAPI
2417 NtUserMNDragOver(
2418 DWORD Unknown0,
2419 DWORD Unknown1);
2420
2421 DWORD
2422 NTAPI
2423 NtUserModifyUserStartupInfoFlags(
2424 DWORD Unknown0,
2425 DWORD Unknown1);
2426
2427 BOOL
2428 NTAPI
2429 NtUserMoveWindow(
2430 HWND hWnd,
2431 int X,
2432 int Y,
2433 int nWidth,
2434 int nHeight,
2435 BOOL bRepaint
2436 );
2437
2438 DWORD
2439 NTAPI
2440 NtUserNotifyIMEStatus(
2441 DWORD Unknown0,
2442 DWORD Unknown1,
2443 DWORD Unknown2);
2444
2445 BOOL
2446 NTAPI
2447 NtUserNotifyProcessCreate(
2448 HANDLE NewProcessId,
2449 HANDLE SourceThreadId,
2450 DWORD dwUnknown,
2451 ULONG CreateFlags);
2452
2453 VOID
2454 NTAPI
2455 NtUserNotifyWinEvent(
2456 DWORD Event,
2457 HWND hWnd,
2458 LONG idObject,
2459 LONG idChild);
2460
2461 BOOL
2462 NTAPI
2463 NtUserOpenClipboard(
2464 HWND hWnd,
2465 DWORD Unknown1);
2466
2467 HDESK
2468 NTAPI
2469 NtUserOpenDesktop(
2470 POBJECT_ATTRIBUTES ObjectAttributes,
2471 DWORD dwFlags,
2472 ACCESS_MASK dwDesiredAccess);
2473
2474 HDESK
2475 NTAPI
2476 NtUserOpenInputDesktop(
2477 DWORD dwFlags,
2478 BOOL fInherit,
2479 ACCESS_MASK dwDesiredAccess);
2480
2481 HWINSTA
2482 NTAPI
2483 NtUserOpenWindowStation(
2484 POBJECT_ATTRIBUTES ObjectAttributes,
2485 ACCESS_MASK dwDesiredAccess);
2486
2487 BOOL
2488 NTAPI
2489 NtUserPaintDesktop(
2490 HDC hDC);
2491
2492 DWORD
2493 NTAPI
2494 NtUserPaintMenuBar(
2495 DWORD dwUnknown1,
2496 DWORD dwUnknown2,
2497 DWORD dwUnknown3,
2498 DWORD dwUnknown4,
2499 DWORD dwUnknown5,
2500 DWORD dwUnknown6);
2501
2502 BOOL APIENTRY
2503 NtUserPeekMessage( PMSG pMsg,
2504 HWND hWnd,
2505 UINT MsgFilterMin,
2506 UINT MsgFilterMax,
2507 UINT RemoveMsg);
2508
2509 BOOL
2510 NTAPI
2511 NtUserPostMessage(
2512 HWND hWnd,
2513 UINT Msg,
2514 WPARAM wParam,
2515 LPARAM lParam);
2516
2517 BOOL
2518 NTAPI
2519 NtUserPostThreadMessage(
2520 DWORD idThread,
2521 UINT Msg,
2522 WPARAM wParam,
2523 LPARAM lParam);
2524
2525 BOOL
2526 NTAPI
2527 NtUserPrintWindow(
2528 HWND hwnd,
2529 HDC hdcBlt,
2530 UINT nFlags);
2531
2532 NTSTATUS
2533 NTAPI
2534 NtUserProcessConnect(
2535 IN HANDLE Process,
2536 OUT PUSERCONNECT pUserConnect,
2537 IN DWORD dwSize); // sizeof(USERCONNECT)
2538
2539 DWORD
2540 NTAPI
2541 NtUserQueryInformationThread(
2542 DWORD dwUnknown1,
2543 DWORD dwUnknown2,
2544 DWORD dwUnknown3,
2545 DWORD dwUnknown4,
2546 DWORD dwUnknown5);
2547
2548 DWORD
2549 NTAPI
2550 NtUserQueryInputContext(
2551 DWORD dwUnknown1,
2552 DWORD dwUnknown2);
2553
2554 DWORD
2555 NTAPI
2556 NtUserQuerySendMessage(
2557 DWORD Unknown0);
2558
2559 DWORD
2560 NTAPI
2561 NtUserQueryUserCounters(
2562 DWORD Unknown0,
2563 DWORD Unknown1,
2564 DWORD Unknown2,
2565 DWORD Unknown3,
2566 DWORD Unknown4);
2567
2568 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2569 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2570 #define QUERY_WINDOW_ACTIVE 0x02
2571 #define QUERY_WINDOW_FOCUS 0x03
2572 #define QUERY_WINDOW_ISHUNG 0x04
2573 #define QUERY_WINDOW_REAL_ID 0x05
2574 #define QUERY_WINDOW_FOREGROUND 0x06
2575 DWORD
2576 NTAPI
2577 NtUserQueryWindow(
2578 HWND hWnd,
2579 DWORD Index);
2580
2581 BOOL
2582 NTAPI
2583 NtUserRealInternalGetMessage(
2584 LPMSG lpMsg,
2585 HWND hWnd,
2586 UINT wMsgFilterMin,
2587 UINT wMsgFilterMax,
2588 UINT wRemoveMsg,
2589 BOOL bGMSG);
2590
2591 HWND
2592 NTAPI
2593 NtUserRealChildWindowFromPoint(
2594 HWND Parent,
2595 LONG x,
2596 LONG y);
2597
2598 BOOL
2599 NTAPI
2600 NtUserRealWaitMessageEx(
2601 DWORD dwWakeMask,
2602 UINT uTimeout);
2603
2604 BOOL
2605 NTAPI
2606 NtUserRedrawWindow
2607 (
2608 HWND hWnd,
2609 CONST RECT *lprcUpdate,
2610 HRGN hrgnUpdate,
2611 UINT flags
2612 );
2613
2614 RTL_ATOM
2615 NTAPI
2616 NtUserRegisterClassExWOW(
2617 WNDCLASSEXW* lpwcx,
2618 PUNICODE_STRING pustrClassName,
2619 PUNICODE_STRING pustrCNVersion,
2620 PCLSMENUNAME pClassMenuName,
2621 DWORD fnID,
2622 DWORD Flags,
2623 LPDWORD pWow);
2624
2625 BOOL
2626 NTAPI
2627 NtUserRegisterRawInputDevices(
2628 IN PCRAWINPUTDEVICE pRawInputDevices,
2629 IN UINT uiNumDevices,
2630 IN UINT cbSize);
2631
2632 BOOL
2633 NTAPI
2634 NtUserRegisterUserApiHook(
2635 PUNICODE_STRING m_dllname1,
2636 PUNICODE_STRING m_funname1,
2637 DWORD dwUnknown3,
2638 DWORD dwUnknown4);
2639
2640 BOOL
2641 NTAPI
2642 NtUserRegisterHotKey(HWND hWnd,
2643 int id,
2644 UINT fsModifiers,
2645 UINT vk);
2646
2647 DWORD
2648 NTAPI
2649 NtUserRegisterTasklist(
2650 DWORD Unknown0);
2651
2652 UINT NTAPI
2653 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName);
2654
2655 DWORD
2656 NTAPI
2657 NtUserRemoteConnect(
2658 DWORD dwUnknown1,
2659 DWORD dwUnknown2,
2660 DWORD dwUnknown3);
2661
2662 DWORD
2663 NTAPI
2664 NtUserRemoteRedrawRectangle(
2665 DWORD dwUnknown1,
2666 DWORD dwUnknown2,
2667 DWORD dwUnknown3,
2668 DWORD dwUnknown4);
2669
2670 DWORD
2671 NTAPI
2672 NtUserRemoteRedrawScreen(VOID);
2673
2674 DWORD
2675 NTAPI
2676 NtUserRemoteStopScreenUpdates(VOID);
2677
2678 HANDLE NTAPI
2679 NtUserRemoveProp(HWND hWnd, ATOM Atom);
2680
2681 DWORD
2682 NTAPI
2683 NtUserResolveDesktop(
2684 DWORD dwUnknown1,
2685 DWORD dwUnknown2,
2686 DWORD dwUnknown3,
2687 DWORD dwUnknown4);
2688
2689 DWORD
2690 NTAPI
2691 NtUserResolveDesktopForWOW(
2692 DWORD Unknown0);
2693
2694 BOOL
2695 NTAPI
2696 NtUserSBGetParms(
2697 HWND hwnd,
2698 int fnBar,
2699 PSBDATA pSBData,
2700 LPSCROLLINFO lpsi);
2701
2702 BOOL
2703 NTAPI
2704 NtUserScrollDC(
2705 HDC hDC,
2706 int dx,
2707 int dy,
2708 CONST RECT *lprcScroll,
2709 CONST RECT *lprcClip ,
2710 HRGN hrgnUpdate,
2711 LPRECT lprcUpdate);
2712
2713 DWORD NTAPI
2714 NtUserScrollWindowEx(HWND hWnd, INT dx, INT dy, const RECT *rect,
2715 const RECT *clipRect, HRGN hrgnUpdate, LPRECT rcUpdate, UINT flags);
2716
2717 UINT
2718 NTAPI
2719 NtUserSendInput(
2720 UINT nInputs,
2721 LPINPUT pInput,
2722 INT cbSize);
2723
2724 HWND NTAPI
2725 NtUserSetActiveWindow(HWND Wnd);
2726
2727 DWORD
2728 NTAPI
2729 NtUserSetAppImeLevel(
2730 DWORD dwUnknown1,
2731 DWORD dwUnknown2);
2732
2733 HWND NTAPI
2734 NtUserSetCapture(HWND Wnd);
2735
2736 ULONG_PTR NTAPI
2737 NtUserSetClassLong(
2738 HWND hWnd,
2739 INT Offset,
2740 ULONG_PTR dwNewLong,
2741 BOOL Ansi );
2742
2743 WORD
2744 NTAPI
2745 NtUserSetClassWord(
2746 HWND hWnd,
2747 INT nIndex,
2748 WORD wNewWord);
2749
2750 HANDLE
2751 NTAPI
2752 NtUserSetClipboardData(
2753 UINT fmt,
2754 HANDLE hMem,
2755 PSETCLIPBDATA scd);
2756
2757 HWND
2758 NTAPI
2759 NtUserSetClipboardViewer(
2760 HWND hWndNewViewer);
2761
2762 HPALETTE
2763 NTAPI
2764 NtUserSelectPalette(
2765 HDC hDC,
2766 HPALETTE hpal,
2767 BOOL ForceBackground
2768 );
2769
2770 DWORD
2771 NTAPI
2772 NtUserSetConsoleReserveKeys(
2773 DWORD Unknown0,
2774 DWORD Unknown1);
2775
2776 HCURSOR
2777 NTAPI
2778 NtUserSetCursor(
2779 HCURSOR hCursor);
2780
2781 BOOL
2782 NTAPI
2783 NtUserSetCursorContents(
2784 HANDLE Handle,
2785 PICONINFO IconInfo);
2786
2787 #ifdef NEW_CURSORICON
2788 BOOL
2789 NTAPI
2790 NtUserSetCursorIconData(
2791 _In_ HCURSOR hCursor,
2792 _In_ PUNICODE_STRING pustrModule,
2793 _In_ PUNICODE_STRING puSrcName,
2794 _In_ const CURSORDATA* pCursorData);
2795
2796 typedef struct _tagFINDEXISTINGCURICONPARAM
2797 {
2798 BOOL bIcon;
2799 LONG cx;
2800 LONG cy;
2801 } FINDEXISTINGCURICONPARAM;
2802
2803 HICON
2804 NTAPI
2805 NtUserFindExistingCursorIcon(
2806 _In_ PUNICODE_STRING pustrModule,
2807 _In_ PUNICODE_STRING pustrRsrc,
2808 _In_ FINDEXISTINGCURICONPARAM* param);
2809 #else
2810 BOOL
2811 NTAPI
2812 NtUserSetCursorIconData(
2813 HANDLE Handle,
2814 PBOOL fIcon,
2815 POINT *Hotspot,
2816 HMODULE hModule,
2817 HRSRC hRsrc,
2818 HRSRC hGroupRsrc);
2819
2820 HICON
2821 NTAPI
2822 NtUserFindExistingCursorIcon(
2823 HMODULE hModule,
2824 HRSRC hRsrc,
2825 LONG cx,
2826 LONG cy);
2827 #endif
2828
2829 DWORD
2830 NTAPI
2831 NtUserSetDbgTag(
2832 DWORD Unknown0,
2833 DWORD Unknown1);
2834
2835 HWND
2836 NTAPI
2837 NtUserSetFocus(
2838 HWND hWnd);
2839
2840 DWORD
2841 NTAPI
2842 NtUserSetImeHotKey(
2843 DWORD Unknown0,
2844 DWORD Unknown1,
2845 DWORD Unknown2,
2846 DWORD Unknown3,
2847 DWORD Unknown4);
2848
2849 DWORD
2850 NTAPI
2851 NtUserSetImeInfoEx(
2852 DWORD dwUnknown1);
2853
2854 DWORD
2855 NTAPI
2856 NtUserSetImeOwnerWindow(
2857 DWORD Unknown0,
2858 DWORD Unknown1);
2859
2860 DWORD
2861 NTAPI
2862 NtUserSetInformationProcess(
2863 DWORD dwUnknown1,
2864 DWORD dwUnknown2,
2865 DWORD dwUnknown3,
2866 DWORD dwUnknown4);
2867
2868 NTSTATUS
2869 NTAPI
2870 NtUserSetInformationThread(
2871 IN HANDLE ThreadHandle,
2872 IN USERTHREADINFOCLASS ThreadInformationClass,
2873 IN PVOID ThreadInformation,
2874 IN ULONG ThreadInformationLength
2875 );
2876
2877 DWORD
2878 NTAPI
2879 NtUserSetInternalWindowPos(
2880 HWND hwnd,
2881 UINT showCmd,
2882 LPRECT rect,
2883 LPPOINT pt);
2884
2885 BOOL
2886 NTAPI
2887 NtUserSetKeyboardState(
2888 LPBYTE lpKeyState);
2889
2890 BOOL
2891 NTAPI
2892 NtUserSetLayeredWindowAttributes(
2893 HWND hwnd,
2894 COLORREF crKey,
2895 BYTE bAlpha,
2896 DWORD dwFlags);
2897
2898 BOOL
2899 NTAPI
2900 NtUserSetLogonNotifyWindow(
2901 HWND hWnd);
2902
2903 BOOL
2904 NTAPI
2905 NtUserSetObjectInformation(
2906 HANDLE hObject,
2907 DWORD nIndex,
2908 PVOID pvInformation,
2909 DWORD nLength);
2910
2911 HWND
2912 NTAPI
2913 NtUserSetParent(
2914 HWND hWndChild,
2915 HWND hWndNewParent);
2916
2917 BOOL
2918 NTAPI
2919 NtUserSetProcessWindowStation(
2920 HWINSTA hWindowStation);
2921
2922 BOOL NTAPI
2923 NtUserSetProp(HWND hWnd, ATOM Atom, HANDLE Data);
2924
2925 DWORD
2926 NTAPI
2927 NtUserSetRipFlags(
2928 DWORD Unknown0,
2929 DWORD Unknown1);
2930
2931 DWORD
2932 NTAPI
2933 NtUserSetScrollInfo(
2934 HWND hwnd,
2935 int fnBar,
2936 LPCSCROLLINFO lpsi,
2937 BOOL bRedraw);
2938
2939 BOOL
2940 NTAPI
2941 NtUserSetShellWindowEx(
2942 HWND hwndShell,
2943 HWND hwndShellListView);
2944
2945 BOOL
2946 NTAPI
2947 NtUserSetSysColors(
2948 int cElements,
2949 IN CONST INT *lpaElements,
2950 IN CONST COLORREF *lpaRgbValues,
2951 FLONG Flags);
2952
2953 BOOL
2954 NTAPI
2955 NtUserSetSystemCursor(
2956 HCURSOR hcur,
2957 DWORD id);
2958
2959 BOOL
2960 NTAPI
2961 NtUserSetThreadDesktop(
2962 HDESK hDesktop);
2963
2964 DWORD
2965 NTAPI
2966 NtUserSetThreadState(
2967 DWORD Unknown0,
2968 DWORD Unknown1);
2969
2970 UINT_PTR
2971 NTAPI
2972 NtUserSetSystemTimer
2973 (
2974 HWND hWnd,
2975 UINT_PTR nIDEvent,
2976 UINT uElapse,
2977 TIMERPROC lpTimerFunc
2978 );
2979
2980 DWORD
2981 NTAPI
2982 NtUserSetThreadLayoutHandles(
2983 DWORD dwUnknown1,
2984 DWORD dwUnknown2);
2985
2986 UINT_PTR
2987 NTAPI
2988 NtUserSetTimer
2989 (
2990 HWND hWnd,
2991 UINT_PTR nIDEvent,
2992 UINT uElapse,
2993 TIMERPROC lpTimerFunc
2994 );
2995
2996 BOOL
2997 NTAPI
2998 NtUserSetWindowFNID(
2999 HWND hWnd,
3000 WORD fnID);
3001
3002 LONG
3003 NTAPI
3004 NtUserSetWindowLong(
3005 HWND hWnd,
3006 DWORD Index,
3007 LONG NewValue,
3008 BOOL Ansi);
3009
3010 BOOL
3011 NTAPI
3012 NtUserSetWindowPlacement(
3013 HWND hWnd,
3014 WINDOWPLACEMENT *lpwndpl);
3015
3016 BOOL
3017 NTAPI NtUserSetWindowPos(
3018 HWND hWnd,
3019 HWND hWndInsertAfter,
3020 int X,
3021 int Y,
3022 int cx,
3023 int cy,
3024 UINT uFlags
3025 );
3026
3027 INT
3028 NTAPI
3029 NtUserSetWindowRgn(
3030 HWND hWnd,
3031 HRGN hRgn,
3032 BOOL bRedraw);
3033
3034 HHOOK
3035 NTAPI
3036 NtUserSetWindowsHookAW(
3037 int idHook,
3038 HOOKPROC lpfn,
3039 BOOL Ansi);
3040
3041 HHOOK
3042 NTAPI
3043 NtUserSetWindowsHookEx(
3044 HINSTANCE Mod,
3045 PUNICODE_STRING ModuleName,
3046 DWORD ThreadId,
3047 int HookId,
3048 HOOKPROC HookProc,
3049 BOOL Ansi);
3050
3051 DWORD
3052 NTAPI
3053 NtUserSetWindowStationUser(
3054 DWORD Unknown0,
3055 DWORD Unknown1,
3056 DWORD Unknown2,
3057 DWORD Unknown3);
3058
3059 WORD NTAPI
3060 NtUserSetWindowWord(HWND hWnd, INT Index, WORD NewVal);
3061
3062 HWINEVENTHOOK
3063 NTAPI
3064 NtUserSetWinEventHook(
3065 UINT eventMin,
3066 UINT eventMax,
3067 HMODULE hmodWinEventProc,
3068 PUNICODE_STRING puString,
3069 WINEVENTPROC lpfnWinEventProc,
3070 DWORD idProcess,
3071 DWORD idThread,
3072 UINT dwflags);
3073
3074 BOOL
3075 NTAPI
3076 NtUserShowCaret(
3077 HWND hWnd);
3078
3079 BOOL
3080 NTAPI
3081 NtUserHideCaret(
3082 HWND hWnd);
3083
3084 DWORD
3085 NTAPI
3086 NtUserShowScrollBar(HWND hWnd, int wBar, DWORD bShow);
3087
3088 BOOL
3089 NTAPI
3090 NtUserShowWindow(
3091 HWND hWnd,
3092 LONG nCmdShow);
3093
3094 BOOL
3095 NTAPI
3096 NtUserShowWindowAsync(
3097 HWND hWnd,
3098 LONG nCmdShow);
3099
3100 BOOL
3101 NTAPI
3102 NtUserSoundSentry(VOID);
3103
3104 BOOL
3105 NTAPI
3106 NtUserSwitchDesktop(
3107 HDESK hDesktop);
3108
3109 BOOL
3110 NTAPI
3111 NtUserSystemParametersInfo(
3112 UINT uiAction,
3113 UINT uiParam,
3114 PVOID pvParam,
3115 UINT fWinIni);
3116
3117 DWORD
3118 NTAPI
3119 NtUserTestForInteractiveUser(
3120 DWORD dwUnknown1);
3121
3122 INT
3123 NTAPI
3124 NtUserToUnicodeEx(
3125 UINT wVirtKey,
3126 UINT wScanCode,
3127 PBYTE lpKeyState,
3128 LPWSTR pwszBuff,
3129 int cchBuff,
3130 UINT wFlags,
3131 HKL dwhkl );
3132
3133 BOOL
3134 NTAPI
3135 NtUserTrackMouseEvent(
3136 LPTRACKMOUSEEVENT lpEventTrack);
3137
3138 int
3139 NTAPI
3140 NtUserTranslateAccelerator(
3141 HWND Window,
3142 HACCEL Table,
3143 LPMSG Message);
3144
3145 BOOL
3146 NTAPI
3147 NtUserTranslateMessage(
3148 LPMSG lpMsg,
3149 UINT flags );
3150
3151 BOOL
3152 NTAPI
3153 NtUserUnhookWindowsHookEx(
3154 HHOOK Hook);
3155
3156 BOOL
3157 NTAPI
3158 NtUserUnhookWinEvent(
3159 HWINEVENTHOOK hWinEventHook);
3160
3161 BOOL
3162 NTAPI
3163 NtUserUnloadKeyboardLayout(
3164 HKL hKl);
3165
3166 BOOL
3167 NTAPI
3168 NtUserUnlockWindowStation(
3169 HWINSTA hWindowStation);
3170
3171 BOOL
3172 NTAPI
3173 NtUserUnregisterClass(
3174 PUNICODE_STRING ClassNameOrAtom,
3175 HINSTANCE hInstance,
3176 PCLSMENUNAME pClassMenuName);
3177
3178 BOOL
3179 NTAPI
3180 NtUserUnregisterHotKey(HWND hWnd,
3181 int id);
3182
3183 BOOL
3184 NTAPI
3185 NtUserUnregisterUserApiHook(VOID);
3186
3187 DWORD
3188 NTAPI
3189 NtUserUpdateInputContext(
3190 DWORD Unknown0,
3191 DWORD Unknown1,
3192 DWORD Unknown2);
3193
3194 DWORD
3195 NTAPI
3196 NtUserUpdateInstance(
3197 DWORD Unknown0,
3198 DWORD Unknown1,
3199 DWORD Unknown2);
3200
3201 BOOL
3202 NTAPI
3203 NtUserUpdateLayeredWindow(
3204 HWND hwnd,
3205 HDC hdcDst,
3206 POINT *pptDst,
3207 SIZE *psize,
3208 HDC hdcSrc,
3209 POINT *pptSrc,
3210 COLORREF crKey,
3211 BLENDFUNCTION *pblend,
3212 DWORD dwFlags,
3213 RECT *prcDirty);
3214
3215 BOOL
3216 NTAPI
3217 NtUserUpdatePerUserSystemParameters(
3218 DWORD dwReserved,
3219 BOOL bEnable);
3220
3221 BOOL
3222 NTAPI
3223 NtUserUserHandleGrantAccess(
3224 IN HANDLE hUserHandle,
3225 IN HANDLE hJob,
3226 IN BOOL bGrant);
3227
3228 BOOL
3229 NTAPI
3230 NtUserValidateHandleSecure(
3231 HANDLE hHdl,
3232 BOOL Restricted);
3233
3234 BOOL
3235 NTAPI
3236 NtUserValidateRect(
3237 HWND hWnd,
3238 CONST RECT *lpRect);
3239
3240 BOOL
3241 APIENTRY
3242 NtUserValidateTimerCallback(
3243 HWND hWnd,
3244 WPARAM wParam,
3245 LPARAM lParam);
3246
3247 DWORD
3248 NTAPI
3249 NtUserVkKeyScanEx(
3250 WCHAR wChar,
3251 HKL KeyboardLayout,
3252 BOOL bUsehHK);
3253
3254 DWORD
3255 NTAPI
3256 NtUserWaitForInputIdle(
3257 IN HANDLE hProcess,
3258 IN DWORD dwMilliseconds,
3259 IN BOOL Unknown2); // Always FALSE
3260
3261 DWORD
3262 NTAPI
3263 NtUserWaitForMsgAndEvent(
3264 DWORD Unknown0);
3265
3266 BOOL
3267 NTAPI
3268 NtUserWaitMessage(VOID);
3269
3270 DWORD
3271 NTAPI
3272 NtUserWin32PoolAllocationStats(
3273 DWORD Unknown0,
3274 DWORD Unknown1,
3275 DWORD Unknown2,
3276 DWORD Unknown3,
3277 DWORD Unknown4,
3278 DWORD Unknown5);
3279
3280 HWND
3281 NTAPI
3282 NtUserWindowFromPhysicalPoint(
3283 POINT Point);
3284
3285 HWND
3286 NTAPI
3287 NtUserWindowFromPoint(
3288 LONG X,
3289 LONG Y);
3290
3291 DWORD
3292 NTAPI
3293 NtUserYieldTask(VOID);
3294
3295 /* lParam of DDE messages */
3296 typedef struct tagKMDDEEXECUTEDATA
3297 {
3298 HWND Sender;
3299 HGLOBAL ClientMem;
3300 /* BYTE Data[DataSize] */
3301 } KMDDEEXECUTEDATA, *PKMDDEEXECUTEDATA;
3302
3303 typedef struct tagKMDDELPARAM
3304 {
3305 UINT_PTR uiLo;
3306 UINT_PTR uiHi;
3307 } KMDDELPARAM, *PKMDDELPARAM;
3308
3309
3310
3311
3312
3313 /* NtUserBad
3314 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3315 */
3316
3317 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3318 #define NOPARAM_ROUTINE_GETMESSAGEEXTRAINFO 0xffff0005
3319 #define ONEPARAM_ROUTINE_CSRSS_GUICHECK 0xffff0008
3320 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING 0xfffe0008
3321 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3322 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3323 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3324 #define TWOPARAM_ROUTINE_EXITREACTOS 0xfffd0051
3325 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0052
3326 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0053
3327 #define MSQ_STATE_CAPTURE 0x1
3328 #define MSQ_STATE_ACTIVE 0x2
3329 #define MSQ_STATE_FOCUS 0x3
3330 #define MSQ_STATE_MENUOWNER 0x4
3331 #define MSQ_STATE_MOVESIZE 0x5
3332 #define MSQ_STATE_CARET 0x6
3333 #define TWOPARAM_ROUTINE_SETCARETPOS 0xfffd0060
3334 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3335 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3336
3337 DWORD
3338 NTAPI
3339 NtUserBuildMenuItemList(
3340 HMENU hMenu,
3341 PVOID Buffer,
3342 ULONG nBufSize,
3343 DWORD Reserved);
3344
3345 UINT
3346 NTAPI
3347 NtUserGetMenuDefaultItem(
3348 HMENU hMenu,
3349 UINT fByPos,
3350 UINT gmdiFlags);
3351
3352 BOOL
3353 NTAPI
3354 NtUserGetMonitorInfo(
3355 IN HMONITOR hMonitor,
3356 OUT LPMONITORINFO pMonitorInfo);
3357
3358 /* Should be done in usermode */
3359
3360 /* (other FocusedItem values give the position of the focused item) */
3361 #define NO_SELECTED_ITEM 0xffff
3362
3363 typedef struct tagROSMENUINFO
3364 {
3365 /* ----------- MENUINFO ----------- */
3366 DWORD cbSize;
3367 DWORD fMask;
3368 DWORD dwStyle;
3369 UINT cyMax;
3370 HBRUSH hbrBack;
3371 DWORD dwContextHelpID;
3372 ULONG_PTR dwMenuData;
3373 /* ----------- Extra ----------- */
3374 HMENU Self; /* Handle of this menu */
3375 WORD Flags; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3376 UINT FocusedItem; /* Currently focused item */
3377 UINT MenuItemCount; /* Number of items in the menu */
3378 HWND Wnd; /* Window containing the menu */
3379 WORD Width; /* Width of the whole menu */
3380 WORD Height; /* Height of the whole menu */
3381 HWND WndOwner; /* window receiving the messages for ownerdraw */
3382 BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */
3383 SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3384 } ROSMENUINFO, *PROSMENUINFO;
3385
3386 BOOL
3387 NTAPI
3388 NtUserMenuInfo(
3389 HMENU hmenu,
3390 PROSMENUINFO lpmi,
3391 BOOL fsog
3392 );
3393
3394 typedef struct tagROSMENUITEMINFO
3395 {
3396 /* ----------- MENUITEMINFOW ----------- */
3397 UINT cbSize;
3398 UINT fMask;
3399 UINT fType;
3400 UINT fState;
3401 UINT wID;
3402 HMENU hSubMenu;
3403 HBITMAP hbmpChecked;
3404 HBITMAP hbmpUnchecked;
3405 DWORD dwItemData;
3406 LPWSTR dwTypeData;
3407 UINT cch;
3408 HBITMAP hbmpItem;
3409 /* ----------- Extra ----------- */
3410 RECT Rect; /* Item area (relative to menu window) */
3411 UINT dxTab; /* X position of text after Tab */
3412 LPWSTR lpstr; /* Copy of the text pointer in MenuItem->Text */
3413 } ROSMENUITEMINFO, *PROSMENUITEMINFO;
3414
3415 BOOL
3416 NTAPI
3417 NtUserMenuItemInfo(
3418 HMENU hMenu,
3419 UINT uItem,
3420 BOOL fByPosition,
3421 PROSMENUITEMINFO lpmii,
3422 BOOL fsog
3423 );
3424
3425 HMONITOR
3426 NTAPI
3427 NtUserMonitorFromPoint(
3428 IN POINT point,
3429 IN DWORD dwFlags);
3430
3431 HMONITOR
3432 NTAPI
3433 NtUserMonitorFromRect(
3434 IN LPCRECT pRect,
3435 IN DWORD dwFlags);
3436
3437 HMONITOR
3438 NTAPI
3439 NtUserMonitorFromWindow(
3440 IN HWND hWnd,
3441 IN DWORD dwFlags);
3442
3443 typedef struct _SETSCROLLBARINFO
3444 {
3445 int nTrackPos;
3446 int reserved;
3447 DWORD rgstate[CCHILDREN_SCROLLBAR+1];
3448 } SETSCROLLBARINFO, *PSETSCROLLBARINFO;
3449
3450 BOOL
3451 NTAPI
3452 NtUserSetScrollBarInfo(
3453 HWND hwnd,
3454 LONG idObject,
3455 SETSCROLLBARINFO *info);
3456
3457
3458
3459 #endif /* __WIN32K_NTUSER_H */
3460
3461 /* EOF */