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