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