Revert tree-restructure attempt: r66583, r66582, r66581, r66578, sauf ntdll changes...
[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 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 PTHREADINFO GetW32ThreadInfo(VOID);
1036 PPROCESSINFO 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 GuiConsoleWndClassAtom,
1725 ConsoleMakePalettePublic = 5,
1726 ConsoleAcquireDisplayOwnership,
1727 } CONSOLECONTROL, *PCONSOLECONTROL;
1728
1729 NTSTATUS
1730 APIENTRY
1731 NtUserConsoleControl(
1732 IN CONSOLECONTROL ConsoleCtrl,
1733 IN PVOID ConsoleCtrlInfo,
1734 IN ULONG ConsoleCtrlInfoLength);
1735
1736 HANDLE
1737 NTAPI
1738 NtUserConvertMemHandle(
1739 PVOID pData,
1740 DWORD cbData);
1741
1742 ULONG
1743 NTAPI
1744 NtUserCopyAcceleratorTable(
1745 HACCEL Table,
1746 LPACCEL Entries,
1747 ULONG EntriesCount);
1748
1749 DWORD
1750 NTAPI
1751 NtUserCountClipboardFormats(VOID);
1752
1753 HACCEL
1754 NTAPI
1755 NtUserCreateAcceleratorTable(
1756 LPACCEL Entries,
1757 ULONG EntriesCount);
1758
1759 BOOL
1760 NTAPI
1761 NtUserCreateCaret(
1762 HWND hWnd,
1763 HBITMAP hBitmap,
1764 int nWidth,
1765 int nHeight);
1766
1767 HDESK
1768 NTAPI
1769 NtUserCreateDesktop(
1770 POBJECT_ATTRIBUTES poa,
1771 PUNICODE_STRING lpszDesktopDevice,
1772 LPDEVMODEW lpdmw,
1773 DWORD dwFlags,
1774 ACCESS_MASK dwDesiredAccess);
1775
1776 DWORD
1777 NTAPI
1778 NtUserCreateInputContext(
1779 DWORD dwUnknown1);
1780
1781 NTSTATUS
1782 NTAPI
1783 NtUserCreateLocalMemHandle(
1784 HANDLE hMem,
1785 PVOID pData,
1786 DWORD cbData,
1787 DWORD *pcbData);
1788
1789 HWND
1790 NTAPI
1791 NtUserCreateWindowEx(
1792 DWORD dwExStyle,
1793 PLARGE_STRING plstrClassName,
1794 PLARGE_STRING plstrClsVersion,
1795 PLARGE_STRING plstrWindowName,
1796 DWORD dwStyle,
1797 int x,
1798 int y,
1799 int nWidth,
1800 int nHeight,
1801 HWND hWndParent,
1802 HMENU hMenu,
1803 HINSTANCE hInstance,
1804 LPVOID lpParam,
1805 DWORD dwFlags,
1806 PVOID acbiBuffer);
1807
1808 HWINSTA
1809 NTAPI
1810 NtUserCreateWindowStation(
1811 POBJECT_ATTRIBUTES ObjectAttributes,
1812 ACCESS_MASK dwDesiredAccess,
1813 DWORD Unknown2,
1814 DWORD Unknown3,
1815 DWORD Unknown4,
1816 DWORD Unknown5,
1817 DWORD Unknown6);
1818
1819 BOOL
1820 NTAPI
1821 NtUserDdeGetQualityOfService(
1822 IN HWND hwndClient,
1823 IN HWND hWndServer,
1824 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1825
1826 DWORD
1827 NTAPI
1828 NtUserDdeInitialize(
1829 DWORD Unknown0,
1830 DWORD Unknown1,
1831 DWORD Unknown2,
1832 DWORD Unknown3,
1833 DWORD Unknown4);
1834
1835 BOOL
1836 NTAPI
1837 NtUserDdeSetQualityOfService(
1838 IN HWND hwndClient,
1839 IN PSECURITY_QUALITY_OF_SERVICE pqosNew,
1840 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev);
1841
1842 HDWP
1843 NTAPI
1844 NtUserDeferWindowPos(
1845 HDWP WinPosInfo,
1846 HWND Wnd,
1847 HWND WndInsertAfter,
1848 int x,
1849 int y,
1850 int cx,
1851 int cy,
1852 UINT Flags);
1853
1854 BOOL
1855 NTAPI
1856 NtUserDefSetText(
1857 HWND WindowHandle,
1858 PLARGE_STRING WindowText);
1859
1860 BOOLEAN
1861 NTAPI
1862 NtUserDestroyAcceleratorTable(
1863 HACCEL Table);
1864
1865 BOOL
1866 NTAPI
1867 NtUserDestroyCursor(
1868 _In_ HANDLE Handle,
1869 _In_ BOOL bForce);
1870
1871 DWORD
1872 NTAPI
1873 NtUserDestroyInputContext(
1874 DWORD dwUnknown1);
1875
1876 BOOLEAN
1877 NTAPI
1878 NtUserDestroyWindow(
1879 HWND Wnd);
1880
1881 DWORD
1882 NTAPI
1883 NtUserDisableThreadIme(
1884 DWORD dwUnknown1);
1885
1886 LRESULT
1887 NTAPI
1888 NtUserDispatchMessage(
1889 PMSG pMsg);
1890
1891 BOOL
1892 NTAPI
1893 NtUserDragDetect(
1894 HWND hWnd,
1895 POINT pt);
1896
1897 DWORD
1898 NTAPI
1899 NtUserDragObject(
1900 HWND hwnd1,
1901 HWND hwnd2,
1902 UINT u1,
1903 DWORD dw1,
1904 HCURSOR hc1);
1905
1906 BOOL
1907 NTAPI
1908 NtUserDrawAnimatedRects(
1909 HWND hwnd,
1910 INT idAni,
1911 RECT *lprcFrom,
1912 RECT *lprcTo);
1913
1914 BOOL
1915 NTAPI
1916 NtUserDrawCaption(
1917 HWND hWnd,
1918 HDC hDc,
1919 LPCRECT lpRc,
1920 UINT uFlags);
1921
1922 BOOL
1923 NTAPI
1924 NtUserDrawCaptionTemp(
1925 HWND hWnd,
1926 HDC hDC,
1927 LPCRECT lpRc,
1928 HFONT hFont,
1929 HICON hIcon,
1930 const PUNICODE_STRING str,
1931 UINT uFlags);
1932
1933 /* Used with NtUserDrawIconEx, last parameter. */
1934 typedef struct _DRAWICONEXDATA
1935 {
1936 HBITMAP hbmMask;
1937 HBITMAP hbmColor;
1938 int cx;
1939 int cy;
1940 } DRAWICONEXDATA, *PDRAWICONEXDATA;
1941
1942 BOOL
1943 NTAPI
1944 NtUserDrawIconEx(
1945 HDC hdc,
1946 int xLeft,
1947 int yTop,
1948 HICON hIcon,
1949 int cxWidth,
1950 int cyWidth,
1951 UINT istepIfAniCur,
1952 HBRUSH hbrFlickerFreeDraw,
1953 UINT diFlags,
1954 BOOL bMetaHDC,
1955 PVOID pDIXData);
1956
1957 BOOL
1958 NTAPI
1959 NtUserEmptyClipboard(VOID);
1960
1961 BOOL
1962 NTAPI
1963 NtUserEnableScrollBar(
1964 HWND hWnd,
1965 UINT wSBflags,
1966 UINT wArrows);
1967
1968 BOOL
1969 NTAPI
1970 NtUserEndDeferWindowPosEx(
1971 HDWP WinPosInfo,
1972 DWORD Unknown1);
1973
1974 BOOL
1975 NTAPI
1976 NtUserEndPaint(
1977 HWND hWnd,
1978 CONST PAINTSTRUCT *lPs);
1979
1980 BOOL
1981 NTAPI
1982 NtUserEnumDisplayDevices(
1983 PUNICODE_STRING lpDevice, /* device name */
1984 DWORD iDevNum, /* display device */
1985 PDISPLAY_DEVICEW lpDisplayDevice, /* device information */
1986 DWORD dwFlags); /* reserved */
1987
1988 /*
1989 BOOL
1990 NTAPI
1991 NtUserEnumDisplayMonitors(
1992 HDC hdc,
1993 LPCRECT lprcClip,
1994 MONITORENUMPROC lpfnEnum,
1995 LPARAM dwData);
1996 */
1997 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
1998 INT
1999 NTAPI
2000 NtUserEnumDisplayMonitors(
2001 OPTIONAL IN HDC hDC,
2002 OPTIONAL IN LPCRECT pRect,
2003 OPTIONAL OUT HMONITOR *hMonitorList,
2004 OPTIONAL OUT LPRECT monitorRectList,
2005 OPTIONAL IN DWORD listSize);
2006
2007
2008 NTSTATUS
2009 NTAPI
2010 NtUserEnumDisplaySettings(
2011 PUNICODE_STRING lpszDeviceName,
2012 DWORD iModeNum,
2013 LPDEVMODEW lpDevMode, /* FIXME is this correct? */
2014 DWORD dwFlags);
2015
2016 DWORD
2017 NTAPI
2018 NtUserEvent(
2019 DWORD Unknown0);
2020
2021 DWORD
2022 NTAPI
2023 NtUserExcludeUpdateRgn(
2024 HDC hDC,
2025 HWND hWnd);
2026
2027 BOOL
2028 NTAPI
2029 NtUserFillWindow(
2030 HWND hWndPaint,
2031 HWND hWndPaint1,
2032 HDC hDC,
2033 HBRUSH hBrush);
2034
2035 HWND
2036 NTAPI
2037 NtUserFindWindowEx(
2038 HWND hwndParent,
2039 HWND hwndChildAfter,
2040 PUNICODE_STRING ucClassName,
2041 PUNICODE_STRING ucWindowName,
2042 DWORD dwUnknown);
2043
2044 BOOL
2045 NTAPI
2046 NtUserFlashWindowEx(
2047 IN PFLASHWINFO pfwi);
2048
2049 BOOL
2050 NTAPI
2051 NtUserGetAltTabInfo(
2052 HWND hwnd,
2053 INT iItem,
2054 PALTTABINFO pati,
2055 LPWSTR pszItemText,
2056 UINT cchItemText,
2057 BOOL Ansi);
2058
2059 HWND
2060 NTAPI
2061 NtUserGetAncestor(
2062 HWND hWnd,
2063 UINT Flags);
2064
2065 DWORD
2066 NTAPI
2067 NtUserGetAppImeLevel(
2068 DWORD dwUnknown1);
2069
2070 SHORT
2071 NTAPI
2072 NtUserGetAsyncKeyState(
2073 INT Key);
2074
2075 _Success_(return != 0)
2076 _At_(pustrName->Buffer, _Out_z_bytecap_post_bytecount_(pustrName->MaximumLength, return * 2 + 2))
2077 ULONG
2078 APIENTRY
2079 NtUserGetAtomName(
2080 _In_ ATOM atom,
2081 _Inout_ PUNICODE_STRING pustrName);
2082
2083 UINT
2084 NTAPI
2085 NtUserGetCaretBlinkTime(VOID);
2086
2087 BOOL
2088 NTAPI
2089 NtUserGetCaretPos(
2090 LPPOINT lpPoint);
2091
2092 BOOL
2093 NTAPI
2094 NtUserGetClassInfo(
2095 HINSTANCE hInstance,
2096 PUNICODE_STRING ClassName,
2097 LPWNDCLASSEXW wcex,
2098 LPWSTR *ppszMenuName,
2099 BOOL Ansi);
2100
2101 INT
2102 NTAPI
2103 NtUserGetClassName(
2104 HWND hWnd,
2105 BOOL Real, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */
2106 PUNICODE_STRING ClassName);
2107
2108 HANDLE
2109 NTAPI
2110 NtUserGetClipboardData(
2111 UINT fmt,
2112 PGETCLIPBDATA pgcd);
2113
2114 INT
2115 NTAPI
2116 NtUserGetClipboardFormatName(
2117 UINT uFormat,
2118 LPWSTR lpszFormatName,
2119 INT cchMaxCount);
2120
2121 HWND
2122 NTAPI
2123 NtUserGetClipboardOwner(VOID);
2124
2125 DWORD
2126 NTAPI
2127 NtUserGetClipboardSequenceNumber(VOID);
2128
2129 HWND
2130 NTAPI
2131 NtUserGetClipboardViewer(VOID);
2132
2133 BOOL
2134 NTAPI
2135 NtUserGetClipCursor(
2136 RECT *lpRect);
2137
2138 BOOL
2139 NTAPI
2140 NtUserGetComboBoxInfo(
2141 HWND hWnd,
2142 PCOMBOBOXINFO pcbi);
2143
2144 HBRUSH
2145 NTAPI
2146 NtUserGetControlBrush(
2147 HWND hwnd,
2148 HDC hdc,
2149 UINT ctlType);
2150
2151 HBRUSH
2152 NTAPI
2153 NtUserGetControlColor(
2154 HWND hwndParent,
2155 HWND hwnd,
2156 HDC hdc,
2157 UINT CtlMsg);
2158
2159 ULONG_PTR
2160 NTAPI
2161 NtUserGetCPD(
2162 HWND hWnd,
2163 GETCPD Flags,
2164 ULONG_PTR Proc);
2165
2166 HCURSOR
2167 NTAPI
2168 NtUserGetCursorFrameInfo(
2169 HCURSOR hCursor,
2170 DWORD istep,
2171 INT *rate_jiffies,
2172 DWORD *num_steps);
2173
2174 BOOL
2175 NTAPI
2176 NtUserGetCursorInfo(
2177 PCURSORINFO pci);
2178
2179 HDC
2180 NTAPI
2181 NtUserGetDC(
2182 HWND hWnd);
2183
2184 HDC
2185 NTAPI
2186 NtUserGetDCEx(
2187 HWND hWnd,
2188 HANDLE hRegion,
2189 ULONG Flags);
2190
2191 UINT
2192 NTAPI
2193 NtUserGetDoubleClickTime(VOID);
2194
2195 HWND
2196 NTAPI
2197 NtUserGetForegroundWindow(VOID);
2198
2199 DWORD
2200 NTAPI
2201 NtUserGetGuiResources(
2202 HANDLE hProcess,
2203 DWORD uiFlags);
2204
2205 BOOL
2206 NTAPI
2207 NtUserGetGUIThreadInfo(
2208 DWORD idThread,
2209 LPGUITHREADINFO lpgui);
2210
2211 _Success_(return != FALSE)
2212 BOOL
2213 NTAPI
2214 NtUserGetIconInfo(
2215 _In_ HANDLE hCurIcon,
2216 _Out_opt_ PICONINFO IconInfo,
2217 _Inout_opt_ PUNICODE_STRING lpInstName,
2218 _Inout_opt_ PUNICODE_STRING lpResName,
2219 _Out_opt_ LPDWORD pbpp,
2220 _In_ BOOL bInternal);
2221
2222 BOOL
2223 NTAPI
2224 NtUserGetIconSize(
2225 HANDLE Handle,
2226 UINT istepIfAniCur,
2227 LONG *plcx,
2228 LONG *plcy);
2229
2230 DWORD
2231 NTAPI
2232 NtUserGetImeHotKey(
2233 DWORD Unknown0,
2234 DWORD Unknown1,
2235 DWORD Unknown2,
2236 DWORD Unknown3);
2237
2238 DWORD
2239 NTAPI
2240 NtUserGetImeInfoEx(
2241 PIMEINFOEX pImeInfoEx,
2242 DWORD dwUnknown2);
2243
2244 DWORD
2245 NTAPI
2246 NtUserGetInternalWindowPos(
2247 HWND hwnd,
2248 LPRECT rectWnd,
2249 LPPOINT ptIcon);
2250
2251 HKL
2252 NTAPI
2253 NtUserGetKeyboardLayout(
2254 DWORD dwThreadid);
2255
2256 UINT
2257 NTAPI
2258 NtUserGetKeyboardLayoutList(
2259 ULONG nItems,
2260 HKL *pHklBuff);
2261
2262 BOOL
2263 NTAPI
2264 NtUserGetKeyboardLayoutName(
2265 LPWSTR lpszName);
2266
2267 DWORD
2268 NTAPI
2269 NtUserGetKeyboardState(
2270 LPBYTE Unknown0);
2271
2272 DWORD
2273 NTAPI
2274 NtUserGetKeyboardType(
2275 DWORD TypeFlag);
2276
2277 DWORD
2278 NTAPI
2279 NtUserGetKeyNameText(
2280 LONG lParam,
2281 LPWSTR lpString,
2282 int nSize);
2283
2284 SHORT
2285 NTAPI
2286 NtUserGetKeyState(
2287 INT VirtKey);
2288
2289 BOOL
2290 NTAPI
2291 NtUserGetLayeredWindowAttributes(
2292 HWND hwnd,
2293 COLORREF *pcrKey,
2294 BYTE *pbAlpha,
2295 DWORD *pdwFlags);
2296
2297 DWORD
2298 NTAPI
2299 NtUserGetListBoxInfo(
2300 HWND hWnd);
2301
2302 BOOL
2303 APIENTRY
2304 NtUserGetMessage(
2305 PMSG pMsg,
2306 HWND hWnd,
2307 UINT MsgFilterMin,
2308 UINT MsgFilterMax);
2309
2310 DWORD
2311 NTAPI
2312 NtUserGetMouseMovePointsEx(
2313 UINT cbSize,
2314 LPMOUSEMOVEPOINT lppt,
2315 LPMOUSEMOVEPOINT lpptBuf,
2316 int nBufPoints,
2317 DWORD resolution);
2318
2319 BOOL
2320 NTAPI
2321 NtUserGetObjectInformation(
2322 HANDLE hObject,
2323 DWORD nIndex,
2324 PVOID pvInformation,
2325 DWORD nLength,
2326 PDWORD nLengthNeeded);
2327
2328 HWND
2329 NTAPI
2330 NtUserGetOpenClipboardWindow(VOID);
2331
2332 INT
2333 NTAPI
2334 NtUserGetPriorityClipboardFormat(
2335 UINT *paFormatPriorityList,
2336 INT cFormats);
2337
2338 HWINSTA
2339 NTAPI
2340 NtUserGetProcessWindowStation(VOID);
2341
2342 DWORD
2343 NTAPI
2344 NtUserGetRawInputBuffer(
2345 PRAWINPUT pData,
2346 PUINT pcbSize,
2347 UINT cbSizeHeader);
2348
2349 DWORD
2350 NTAPI
2351 NtUserGetRawInputData(
2352 HRAWINPUT hRawInput,
2353 UINT uiCommand,
2354 LPVOID pData,
2355 PUINT pcbSize,
2356 UINT cbSizeHeader);
2357
2358 DWORD
2359 NTAPI
2360 NtUserGetRawInputDeviceInfo(
2361 HANDLE hDevice,
2362 UINT uiCommand,
2363 LPVOID pData,
2364 PUINT pcbSize);
2365
2366 DWORD
2367 NTAPI
2368 NtUserGetRawInputDeviceList(
2369 PRAWINPUTDEVICELIST pRawInputDeviceList,
2370 PUINT puiNumDevices,
2371 UINT cbSize);
2372
2373 DWORD
2374 NTAPI
2375 NtUserGetRegisteredRawInputDevices(
2376 PRAWINPUTDEVICE pRawInputDevices,
2377 PUINT puiNumDevices,
2378 UINT cbSize);
2379
2380 BOOL
2381 NTAPI
2382 NtUserGetScrollBarInfo(
2383 HWND hWnd,
2384 LONG idObject,
2385 PSCROLLBARINFO psbi);
2386
2387 HDESK
2388 NTAPI
2389 NtUserGetThreadDesktop(
2390 DWORD dwThreadId,
2391 DWORD Unknown1);
2392
2393 enum ThreadStateRoutines
2394 {
2395 THREADSTATE_GETTHREADINFO,
2396 THREADSTATE_INSENDMESSAGE,
2397 THREADSTATE_FOCUSWINDOW,
2398 THREADSTATE_ACTIVEWINDOW,
2399 THREADSTATE_CAPTUREWINDOW,
2400 THREADSTATE_PROGMANWINDOW,
2401 THREADSTATE_TASKMANWINDOW,
2402 THREADSTATE_GETMESSAGETIME,
2403 THREADSTATE_GETINPUTSTATE,
2404 THREADSTATE_UPTIMELASTREAD,
2405 THREADSTATE_FOREGROUNDTHREAD,
2406 THREADSTATE_GETCURSOR,
2407 THREADSTATE_GETMESSAGEEXTRAINFO
2408 };
2409
2410 DWORD_PTR
2411 NTAPI
2412 NtUserGetThreadState(
2413 DWORD Routine);
2414
2415 BOOLEAN
2416 NTAPI
2417 NtUserGetTitleBarInfo(
2418 HWND hwnd,
2419 PTITLEBARINFO pti);
2420
2421 BOOL
2422 NTAPI
2423 NtUserGetUpdateRect(
2424 HWND hWnd,
2425 LPRECT lpRect,
2426 BOOL fErase);
2427
2428 int
2429 NTAPI
2430 NtUserGetUpdateRgn(
2431 HWND hWnd,
2432 HRGN hRgn,
2433 BOOL bErase);
2434
2435 HDC
2436 NTAPI
2437 NtUserGetWindowDC(
2438 HWND hWnd);
2439
2440 BOOL
2441 NTAPI
2442 NtUserGetWindowPlacement(
2443 HWND hWnd,
2444 WINDOWPLACEMENT *lpwndpl);
2445
2446 PCLS
2447 NTAPI
2448 NtUserGetWOWClass(
2449 HINSTANCE hInstance,
2450 PUNICODE_STRING ClassName);
2451
2452 DWORD
2453 NTAPI
2454 NtUserHardErrorControl(
2455 DWORD dwUnknown1,
2456 DWORD dwUnknown2,
2457 DWORD dwUnknown3);
2458
2459 BOOL
2460 NTAPI
2461 NtUserImpersonateDdeClientWindow(
2462 HWND hWndClient,
2463 HWND hWndServer);
2464
2465 NTSTATUS
2466 NTAPI
2467 NtUserInitialize(
2468 DWORD dwWinVersion,
2469 HANDLE hPowerRequestEvent,
2470 HANDLE hMediaRequestEvent);
2471
2472 NTSTATUS
2473 NTAPI
2474 NtUserInitializeClientPfnArrays(
2475 PPFNCLIENT pfnClientA,
2476 PPFNCLIENT pfnClientW,
2477 PPFNCLIENTWORKER pfnClientWorker,
2478 HINSTANCE hmodUser);
2479
2480 DWORD
2481 NTAPI
2482 NtUserInitTask(
2483 DWORD Unknown0,
2484 DWORD Unknown1,
2485 DWORD Unknown2,
2486 DWORD Unknown3,
2487 DWORD Unknown4,
2488 DWORD Unknown5,
2489 DWORD Unknown6,
2490 DWORD Unknown7,
2491 DWORD Unknown8,
2492 DWORD Unknown9,
2493 DWORD Unknown10,
2494 DWORD Unknown11);
2495
2496 INT
2497 NTAPI
2498 NtUserInternalGetWindowText(
2499 HWND hWnd,
2500 LPWSTR lpString,
2501 INT nMaxCount);
2502
2503 BOOL
2504 NTAPI
2505 NtUserInvalidateRect(
2506 HWND hWnd,
2507 CONST RECT *lpRect,
2508 BOOL bErase);
2509
2510 BOOL
2511 NTAPI
2512 NtUserInvalidateRgn(
2513 HWND hWnd,
2514 HRGN hRgn,
2515 BOOL bErase);
2516
2517 BOOL
2518 NTAPI
2519 NtUserIsClipboardFormatAvailable(
2520 UINT format);
2521
2522 BOOL
2523 NTAPI
2524 NtUserKillTimer(
2525 HWND hWnd,
2526 UINT_PTR uIDEvent);
2527
2528 HKL
2529 NTAPI
2530 NtUserLoadKeyboardLayoutEx(
2531 IN HANDLE Handle,
2532 IN DWORD offTable,
2533 IN PUNICODE_STRING puszKeyboardName,
2534 IN HKL hKL,
2535 IN PUNICODE_STRING puszKLID,
2536 IN DWORD dwKLID,
2537 IN UINT Flags);
2538
2539 BOOL
2540 NTAPI
2541 NtUserLockWindowStation(
2542 HWINSTA hWindowStation);
2543
2544 BOOL
2545 NTAPI
2546 NtUserLockWindowUpdate(
2547 HWND hWnd);
2548
2549 BOOL
2550 NTAPI
2551 NtUserLockWorkStation(VOID);
2552
2553 UINT
2554 NTAPI
2555 NtUserMapVirtualKeyEx(
2556 UINT keyCode,
2557 UINT transType,
2558 DWORD keyboardId,
2559 HKL dwhkl);
2560
2561 typedef struct tagDOSENDMESSAGE
2562 {
2563 UINT uFlags;
2564 UINT uTimeout;
2565 ULONG_PTR Result;
2566 }
2567 DOSENDMESSAGE, *PDOSENDMESSAGE;
2568
2569 BOOL
2570 NTAPI
2571 NtUserMessageCall(
2572 HWND hWnd,
2573 UINT Msg,
2574 WPARAM wParam,
2575 LPARAM lParam,
2576 ULONG_PTR ResultInfo,
2577 DWORD dwType, /* FNID_XX types */
2578 BOOL Ansi);
2579
2580 DWORD
2581 NTAPI
2582 NtUserMinMaximize(
2583 HWND hWnd,
2584 UINT cmd, /* Wine SW_ commands */
2585 BOOL Hide);
2586
2587 DWORD
2588 NTAPI
2589 NtUserMNDragLeave(VOID);
2590
2591 DWORD
2592 NTAPI
2593 NtUserMNDragOver(
2594 DWORD Unknown0,
2595 DWORD Unknown1);
2596
2597 DWORD
2598 NTAPI
2599 NtUserModifyUserStartupInfoFlags(
2600 DWORD Unknown0,
2601 DWORD Unknown1);
2602
2603 BOOL
2604 NTAPI
2605 NtUserMoveWindow(
2606 HWND hWnd,
2607 int X,
2608 int Y,
2609 int nWidth,
2610 int nHeight,
2611 BOOL bRepaint
2612 );
2613
2614 DWORD
2615 NTAPI
2616 NtUserNotifyIMEStatus(
2617 DWORD Unknown0,
2618 DWORD Unknown1,
2619 DWORD Unknown2);
2620
2621 BOOL
2622 NTAPI
2623 NtUserNotifyProcessCreate(
2624 HANDLE NewProcessId,
2625 HANDLE ParentThreadId,
2626 ULONG dwUnknown,
2627 ULONG CreateFlags);
2628
2629 VOID
2630 NTAPI
2631 NtUserNotifyWinEvent(
2632 DWORD Event,
2633 HWND hWnd,
2634 LONG idObject,
2635 LONG idChild);
2636
2637 BOOL
2638 NTAPI
2639 NtUserOpenClipboard(
2640 HWND hWnd,
2641 DWORD Unknown1);
2642
2643 HDESK
2644 NTAPI
2645 NtUserOpenDesktop(
2646 POBJECT_ATTRIBUTES ObjectAttributes,
2647 DWORD dwFlags,
2648 ACCESS_MASK dwDesiredAccess);
2649
2650 HDESK
2651 NTAPI
2652 NtUserOpenInputDesktop(
2653 DWORD dwFlags,
2654 BOOL fInherit,
2655 ACCESS_MASK dwDesiredAccess);
2656
2657 HWINSTA
2658 NTAPI
2659 NtUserOpenWindowStation(
2660 POBJECT_ATTRIBUTES ObjectAttributes,
2661 ACCESS_MASK dwDesiredAccess);
2662
2663 BOOL
2664 NTAPI
2665 NtUserPaintDesktop(
2666 HDC hDC);
2667
2668 DWORD
2669 NTAPI
2670 NtUserPaintMenuBar(
2671 DWORD dwUnknown1,
2672 DWORD dwUnknown2,
2673 DWORD dwUnknown3,
2674 DWORD dwUnknown4,
2675 DWORD dwUnknown5,
2676 DWORD dwUnknown6);
2677
2678 BOOL
2679 APIENTRY
2680 NtUserPeekMessage(
2681 PMSG pMsg,
2682 HWND hWnd,
2683 UINT MsgFilterMin,
2684 UINT MsgFilterMax,
2685 UINT RemoveMsg);
2686
2687 BOOL
2688 NTAPI
2689 NtUserPostMessage(
2690 HWND hWnd,
2691 UINT Msg,
2692 WPARAM wParam,
2693 LPARAM lParam);
2694
2695 BOOL
2696 NTAPI
2697 NtUserPostThreadMessage(
2698 DWORD idThread,
2699 UINT Msg,
2700 WPARAM wParam,
2701 LPARAM lParam);
2702
2703 BOOL
2704 NTAPI
2705 NtUserPrintWindow(
2706 HWND hwnd,
2707 HDC hdcBlt,
2708 UINT nFlags);
2709
2710 NTSTATUS
2711 NTAPI
2712 NtUserProcessConnect(
2713 IN HANDLE ProcessHandle,
2714 OUT PUSERCONNECT pUserConnect,
2715 IN ULONG Size); /* sizeof(USERCONNECT) */
2716
2717 NTSTATUS
2718 NTAPI
2719 NtUserQueryInformationThread(
2720 IN HANDLE ThreadHandle,
2721 IN USERTHREADINFOCLASS ThreadInformationClass,
2722 OUT PVOID ThreadInformation,
2723 IN ULONG ThreadInformationLength);
2724
2725 DWORD
2726 NTAPI
2727 NtUserQueryInputContext(
2728 DWORD dwUnknown1,
2729 DWORD dwUnknown2);
2730
2731 DWORD
2732 NTAPI
2733 NtUserQuerySendMessage(
2734 DWORD Unknown0);
2735
2736 DWORD
2737 NTAPI
2738 NtUserQueryUserCounters(
2739 DWORD Unknown0,
2740 DWORD Unknown1,
2741 DWORD Unknown2,
2742 DWORD Unknown3,
2743 DWORD Unknown4);
2744
2745 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2746 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2747 #define QUERY_WINDOW_ACTIVE 0x02
2748 #define QUERY_WINDOW_FOCUS 0x03
2749 #define QUERY_WINDOW_ISHUNG 0x04
2750 #define QUERY_WINDOW_REAL_ID 0x05
2751 #define QUERY_WINDOW_FOREGROUND 0x06
2752
2753 DWORD
2754 NTAPI
2755 NtUserQueryWindow(
2756 HWND hWnd,
2757 DWORD Index);
2758
2759 BOOL
2760 NTAPI
2761 NtUserRealInternalGetMessage(
2762 LPMSG lpMsg,
2763 HWND hWnd,
2764 UINT wMsgFilterMin,
2765 UINT wMsgFilterMax,
2766 UINT wRemoveMsg,
2767 BOOL bGMSG);
2768
2769 HWND
2770 NTAPI
2771 NtUserRealChildWindowFromPoint(
2772 HWND Parent,
2773 LONG x,
2774 LONG y);
2775
2776 BOOL
2777 NTAPI
2778 NtUserRealWaitMessageEx(
2779 DWORD dwWakeMask,
2780 UINT uTimeout);
2781
2782 BOOL
2783 NTAPI
2784 NtUserRedrawWindow(
2785 HWND hWnd,
2786 CONST RECT *lprcUpdate,
2787 HRGN hrgnUpdate,
2788 UINT flags);
2789
2790 RTL_ATOM
2791 NTAPI
2792 NtUserRegisterClassExWOW(
2793 WNDCLASSEXW* lpwcx,
2794 PUNICODE_STRING pustrClassName,
2795 PUNICODE_STRING pustrCNVersion,
2796 PCLSMENUNAME pClassMenuName,
2797 DWORD fnID,
2798 DWORD Flags,
2799 LPDWORD pWow);
2800
2801 BOOL
2802 NTAPI
2803 NtUserRegisterRawInputDevices(
2804 IN PCRAWINPUTDEVICE pRawInputDevices,
2805 IN UINT uiNumDevices,
2806 IN UINT cbSize);
2807
2808 BOOL
2809 NTAPI
2810 NtUserRegisterUserApiHook(
2811 PUNICODE_STRING m_dllname1,
2812 PUNICODE_STRING m_funname1,
2813 DWORD dwUnknown3,
2814 DWORD dwUnknown4);
2815
2816 BOOL
2817 NTAPI
2818 NtUserRegisterHotKey(
2819 HWND hWnd,
2820 int id,
2821 UINT fsModifiers,
2822 UINT vk);
2823
2824 DWORD
2825 NTAPI
2826 NtUserRegisterTasklist(
2827 DWORD Unknown0);
2828
2829 UINT
2830 NTAPI
2831 NtUserRegisterWindowMessage(
2832 PUNICODE_STRING MessageName);
2833
2834 DWORD
2835 NTAPI
2836 NtUserRemoteConnect(
2837 DWORD dwUnknown1,
2838 DWORD dwUnknown2,
2839 DWORD dwUnknown3);
2840
2841 DWORD
2842 NTAPI
2843 NtUserRemoteRedrawRectangle(
2844 DWORD dwUnknown1,
2845 DWORD dwUnknown2,
2846 DWORD dwUnknown3,
2847 DWORD dwUnknown4);
2848
2849 DWORD
2850 NTAPI
2851 NtUserRemoteRedrawScreen(VOID);
2852
2853 DWORD
2854 NTAPI
2855 NtUserRemoteStopScreenUpdates(VOID);
2856
2857 HANDLE
2858 NTAPI
2859 NtUserRemoveProp(
2860 HWND hWnd,
2861 ATOM Atom);
2862
2863 DWORD
2864 NTAPI
2865 NtUserResolveDesktop(
2866 DWORD dwUnknown1,
2867 DWORD dwUnknown2,
2868 DWORD dwUnknown3,
2869 DWORD dwUnknown4);
2870
2871 DWORD
2872 NTAPI
2873 NtUserResolveDesktopForWOW(
2874 DWORD Unknown0);
2875
2876 BOOL
2877 NTAPI
2878 NtUserSBGetParms(
2879 HWND hwnd,
2880 int fnBar,
2881 PSBDATA pSBData,
2882 LPSCROLLINFO lpsi);
2883
2884 BOOL
2885 NTAPI
2886 NtUserScrollDC(
2887 HDC hDC,
2888 int dx,
2889 int dy,
2890 CONST RECT *lprcScroll,
2891 CONST RECT *lprcClip ,
2892 HRGN hrgnUpdate,
2893 LPRECT lprcUpdate);
2894
2895 DWORD
2896 NTAPI
2897 NtUserScrollWindowEx(
2898 HWND hWnd,
2899 INT dx,
2900 INT dy,
2901 const RECT *rect,
2902 const RECT *clipRect,
2903 HRGN hrgnUpdate,
2904 LPRECT rcUpdate,
2905 UINT flags);
2906
2907 UINT
2908 NTAPI
2909 NtUserSendInput(
2910 UINT nInputs,
2911 LPINPUT pInput,
2912 INT cbSize);
2913
2914 HWND
2915 NTAPI
2916 NtUserSetActiveWindow(
2917 HWND Wnd);
2918
2919 DWORD
2920 NTAPI
2921 NtUserSetAppImeLevel(
2922 DWORD dwUnknown1,
2923 DWORD dwUnknown2);
2924
2925 HWND
2926 NTAPI
2927 NtUserSetCapture(
2928 HWND Wnd);
2929
2930 ULONG_PTR
2931 NTAPI
2932 NtUserSetClassLong(
2933 HWND hWnd,
2934 INT Offset,
2935 ULONG_PTR dwNewLong,
2936 BOOL Ansi);
2937
2938 WORD
2939 NTAPI
2940 NtUserSetClassWord(
2941 HWND hWnd,
2942 INT nIndex,
2943 WORD wNewWord);
2944
2945 HANDLE
2946 NTAPI
2947 NtUserSetClipboardData(
2948 UINT fmt,
2949 HANDLE hMem,
2950 PSETCLIPBDATA scd);
2951
2952 HWND
2953 NTAPI
2954 NtUserSetClipboardViewer(
2955 HWND hWndNewViewer);
2956
2957 HPALETTE
2958 NTAPI
2959 NtUserSelectPalette(
2960 HDC hDC,
2961 HPALETTE hpal,
2962 BOOL ForceBackground);
2963
2964 DWORD
2965 NTAPI
2966 NtUserSetConsoleReserveKeys(
2967 DWORD Unknown0,
2968 DWORD Unknown1);
2969
2970 HCURSOR
2971 NTAPI
2972 NtUserSetCursor(
2973 HCURSOR hCursor);
2974
2975 BOOL
2976 NTAPI
2977 NtUserSetCursorContents(
2978 HANDLE Handle,
2979 PICONINFO IconInfo);
2980
2981 BOOL
2982 NTAPI
2983 NtUserSetCursorIconData(
2984 _In_ HCURSOR hCursor,
2985 _In_ PUNICODE_STRING pustrModule,
2986 _In_ PUNICODE_STRING puSrcName,
2987 _In_ const CURSORDATA *pCursorData);
2988
2989 typedef struct _tagFINDEXISTINGCURICONPARAM
2990 {
2991 BOOL bIcon;
2992 LONG cx;
2993 LONG cy;
2994 } FINDEXISTINGCURICONPARAM;
2995
2996 HICON
2997 NTAPI
2998 NtUserFindExistingCursorIcon(
2999 _In_ PUNICODE_STRING pustrModule,
3000 _In_ PUNICODE_STRING pustrRsrc,
3001 _In_ FINDEXISTINGCURICONPARAM *param);
3002
3003 DWORD
3004 NTAPI
3005 NtUserSetDbgTag(
3006 DWORD Unknown0,
3007 DWORD Unknown1);
3008
3009 HWND
3010 NTAPI
3011 NtUserSetFocus(
3012 HWND hWnd);
3013
3014 DWORD
3015 NTAPI
3016 NtUserSetImeHotKey(
3017 DWORD Unknown0,
3018 DWORD Unknown1,
3019 DWORD Unknown2,
3020 DWORD Unknown3,
3021 DWORD Unknown4);
3022
3023 DWORD
3024 NTAPI
3025 NtUserSetImeInfoEx(
3026 PIMEINFOEX pImeInfoEx);
3027
3028 DWORD
3029 NTAPI
3030 NtUserSetImeOwnerWindow(
3031 DWORD Unknown0,
3032 DWORD Unknown1);
3033
3034 DWORD
3035 NTAPI
3036 NtUserSetInformationProcess(
3037 DWORD dwUnknown1,
3038 DWORD dwUnknown2,
3039 DWORD dwUnknown3,
3040 DWORD dwUnknown4);
3041
3042 NTSTATUS
3043 NTAPI
3044 NtUserSetInformationThread(
3045 IN HANDLE ThreadHandle,
3046 IN USERTHREADINFOCLASS ThreadInformationClass,
3047 IN PVOID ThreadInformation,
3048 IN ULONG ThreadInformationLength);
3049
3050 DWORD
3051 NTAPI
3052 NtUserSetInternalWindowPos(
3053 HWND hwnd,
3054 UINT showCmd,
3055 LPRECT rect,
3056 LPPOINT pt);
3057
3058 BOOL
3059 NTAPI
3060 NtUserSetKeyboardState(
3061 LPBYTE lpKeyState);
3062
3063 BOOL
3064 NTAPI
3065 NtUserSetLayeredWindowAttributes(
3066 HWND hwnd,
3067 COLORREF crKey,
3068 BYTE bAlpha,
3069 DWORD dwFlags);
3070
3071 BOOL
3072 NTAPI
3073 NtUserSetLogonNotifyWindow(
3074 HWND hWnd);
3075
3076 BOOL
3077 NTAPI
3078 NtUserSetObjectInformation(
3079 HANDLE hObject,
3080 DWORD nIndex,
3081 PVOID pvInformation,
3082 DWORD nLength);
3083
3084 HWND
3085 NTAPI
3086 NtUserSetParent(
3087 HWND hWndChild,
3088 HWND hWndNewParent);
3089
3090 BOOL
3091 NTAPI
3092 NtUserSetProcessWindowStation(
3093 HWINSTA hWindowStation);
3094
3095 BOOL
3096 NTAPI
3097 NtUserSetProp(
3098 HWND hWnd,
3099 ATOM Atom,
3100 HANDLE Data);
3101
3102 DWORD
3103 NTAPI
3104 NtUserSetRipFlags(
3105 DWORD Unknown0,
3106 DWORD Unknown1);
3107
3108 DWORD
3109 NTAPI
3110 NtUserSetScrollInfo(
3111 HWND hwnd,
3112 int fnBar,
3113 LPCSCROLLINFO lpsi,
3114 BOOL bRedraw);
3115
3116 BOOL
3117 NTAPI
3118 NtUserSetShellWindowEx(
3119 HWND hwndShell,
3120 HWND hwndShellListView);
3121
3122 BOOL
3123 NTAPI
3124 NtUserSetSysColors(
3125 int cElements,
3126 IN CONST INT *lpaElements,
3127 IN CONST COLORREF *lpaRgbValues,
3128 FLONG Flags);
3129
3130 BOOL
3131 NTAPI
3132 NtUserSetSystemCursor(
3133 HCURSOR hcur,
3134 DWORD id);
3135
3136 BOOL
3137 NTAPI
3138 NtUserSetThreadDesktop(
3139 HDESK hDesktop);
3140
3141 DWORD
3142 NTAPI
3143 NtUserSetThreadState(
3144 DWORD Unknown0,
3145 DWORD Unknown1);
3146
3147 UINT_PTR
3148 NTAPI
3149 NtUserSetSystemTimer(
3150 HWND hWnd,
3151 UINT_PTR nIDEvent,
3152 UINT uElapse,
3153 TIMERPROC lpTimerFunc);
3154
3155 DWORD
3156 NTAPI
3157 NtUserSetThreadLayoutHandles(
3158 DWORD dwUnknown1,
3159 DWORD dwUnknown2);
3160
3161 UINT_PTR
3162 NTAPI
3163 NtUserSetTimer(
3164 HWND hWnd,
3165 UINT_PTR nIDEvent,
3166 UINT uElapse,
3167 TIMERPROC lpTimerFunc);
3168
3169 BOOL
3170 NTAPI
3171 NtUserSetWindowFNID(
3172 HWND hWnd,
3173 WORD fnID);
3174
3175 LONG
3176 NTAPI
3177 NtUserSetWindowLong(
3178 HWND hWnd,
3179 DWORD Index,
3180 LONG NewValue,
3181 BOOL Ansi);
3182
3183 BOOL
3184 NTAPI
3185 NtUserSetWindowPlacement(
3186 HWND hWnd,
3187 WINDOWPLACEMENT *lpwndpl);
3188
3189 BOOL
3190 NTAPI
3191 NtUserSetWindowPos(
3192 HWND hWnd,
3193 HWND hWndInsertAfter,
3194 int X,
3195 int Y,
3196 int cx,
3197 int cy,
3198 UINT uFlags);
3199
3200 INT
3201 NTAPI
3202 NtUserSetWindowRgn(
3203 HWND hWnd,
3204 HRGN hRgn,
3205 BOOL bRedraw);
3206
3207 HHOOK
3208 NTAPI
3209 NtUserSetWindowsHookAW(
3210 int idHook,
3211 HOOKPROC lpfn,
3212 BOOL Ansi);
3213
3214 HHOOK
3215 NTAPI
3216 NtUserSetWindowsHookEx(
3217 HINSTANCE Mod,
3218 PUNICODE_STRING ModuleName,
3219 DWORD ThreadId,
3220 int HookId,
3221 HOOKPROC HookProc,
3222 BOOL Ansi);
3223
3224 BOOL
3225 NTAPI
3226 NtUserSetWindowStationUser(
3227 HWINSTA hWindowStation,
3228 PLUID pluid,
3229 PSID psid,
3230 DWORD size);
3231
3232 WORD
3233 NTAPI
3234 NtUserSetWindowWord(
3235 HWND hWnd,
3236 INT Index,
3237 WORD NewVal);
3238
3239 HWINEVENTHOOK
3240 NTAPI
3241 NtUserSetWinEventHook(
3242 UINT eventMin,
3243 UINT eventMax,
3244 HMODULE hmodWinEventProc,
3245 PUNICODE_STRING puString,
3246 WINEVENTPROC lpfnWinEventProc,
3247 DWORD idProcess,
3248 DWORD idThread,
3249 UINT dwflags);
3250
3251 BOOL
3252 NTAPI
3253 NtUserShowCaret(
3254 HWND hWnd);
3255
3256 BOOL
3257 NTAPI
3258 NtUserHideCaret(
3259 HWND hWnd);
3260
3261 DWORD
3262 NTAPI
3263 NtUserShowScrollBar(
3264 HWND hWnd,
3265 int wBar,
3266 DWORD bShow);
3267
3268 BOOL
3269 NTAPI
3270 NtUserShowWindow(
3271 HWND hWnd,
3272 LONG nCmdShow);
3273
3274 BOOL
3275 NTAPI
3276 NtUserShowWindowAsync(
3277 HWND hWnd,
3278 LONG nCmdShow);
3279
3280 BOOL
3281 NTAPI
3282 NtUserSoundSentry(VOID);
3283
3284 BOOL
3285 NTAPI
3286 NtUserSwitchDesktop(
3287 HDESK hDesktop);
3288
3289 BOOL
3290 NTAPI
3291 NtUserSystemParametersInfo(
3292 UINT uiAction,
3293 UINT uiParam,
3294 PVOID pvParam,
3295 UINT fWinIni);
3296
3297 DWORD
3298 NTAPI
3299 NtUserTestForInteractiveUser(
3300 DWORD dwUnknown1);
3301
3302 INT
3303 NTAPI
3304 NtUserToUnicodeEx(
3305 UINT wVirtKey,
3306 UINT wScanCode,
3307 PBYTE lpKeyState,
3308 LPWSTR pwszBuff,
3309 int cchBuff,
3310 UINT wFlags,
3311 HKL dwhkl);
3312
3313 BOOL
3314 NTAPI
3315 NtUserTrackMouseEvent(
3316 LPTRACKMOUSEEVENT lpEventTrack);
3317
3318 int
3319 NTAPI
3320 NtUserTranslateAccelerator(
3321 HWND Window,
3322 HACCEL Table,
3323 LPMSG Message);
3324
3325 BOOL
3326 NTAPI
3327 NtUserTranslateMessage(
3328 LPMSG lpMsg,
3329 UINT flags );
3330
3331 BOOL
3332 NTAPI
3333 NtUserUnhookWindowsHookEx(
3334 HHOOK Hook);
3335
3336 BOOL
3337 NTAPI
3338 NtUserUnhookWinEvent(
3339 HWINEVENTHOOK hWinEventHook);
3340
3341 BOOL
3342 NTAPI
3343 NtUserUnloadKeyboardLayout(
3344 HKL hKl);
3345
3346 BOOL
3347 NTAPI
3348 NtUserUnlockWindowStation(
3349 HWINSTA hWindowStation);
3350
3351 BOOL
3352 NTAPI
3353 NtUserUnregisterClass(
3354 PUNICODE_STRING ClassNameOrAtom,
3355 HINSTANCE hInstance,
3356 PCLSMENUNAME pClassMenuName);
3357
3358 BOOL
3359 NTAPI
3360 NtUserUnregisterHotKey(
3361 HWND hWnd,
3362 int id);
3363
3364 BOOL
3365 NTAPI
3366 NtUserUnregisterUserApiHook(VOID);
3367
3368 DWORD
3369 NTAPI
3370 NtUserUpdateInputContext(
3371 DWORD Unknown0,
3372 DWORD Unknown1,
3373 DWORD Unknown2);
3374
3375 DWORD
3376 NTAPI
3377 NtUserUpdateInstance(
3378 DWORD Unknown0,
3379 DWORD Unknown1,
3380 DWORD Unknown2);
3381
3382 BOOL
3383 NTAPI
3384 NtUserUpdateLayeredWindow(
3385 HWND hwnd,
3386 HDC hdcDst,
3387 POINT *pptDst,
3388 SIZE *psize,
3389 HDC hdcSrc,
3390 POINT *pptSrc,
3391 COLORREF crKey,
3392 BLENDFUNCTION *pblend,
3393 DWORD dwFlags,
3394 RECT *prcDirty);
3395
3396 BOOL
3397 NTAPI
3398 NtUserUpdatePerUserSystemParameters(
3399 DWORD dwReserved,
3400 BOOL bEnable);
3401
3402 BOOL
3403 NTAPI
3404 NtUserUserHandleGrantAccess(
3405 IN HANDLE hUserHandle,
3406 IN HANDLE hJob,
3407 IN BOOL bGrant);
3408
3409 BOOL
3410 NTAPI
3411 NtUserValidateHandleSecure(
3412 HANDLE hHdl,
3413 BOOL Restricted);
3414
3415 BOOL
3416 NTAPI
3417 NtUserValidateRect(
3418 HWND hWnd,
3419 CONST RECT *lpRect);
3420
3421 BOOL
3422 APIENTRY
3423 NtUserValidateTimerCallback(
3424 HWND hWnd,
3425 WPARAM wParam,
3426 LPARAM lParam);
3427
3428 DWORD
3429 NTAPI
3430 NtUserVkKeyScanEx(
3431 WCHAR wChar,
3432 HKL KeyboardLayout,
3433 BOOL bUsehHK);
3434
3435 DWORD
3436 NTAPI
3437 NtUserWaitForInputIdle(
3438 IN HANDLE hProcess,
3439 IN DWORD dwMilliseconds,
3440 IN BOOL Unknown2); /* Always FALSE */
3441
3442 DWORD
3443 NTAPI
3444 NtUserWaitForMsgAndEvent(
3445 DWORD Unknown0);
3446
3447 BOOL
3448 NTAPI
3449 NtUserWaitMessage(VOID);
3450
3451 DWORD
3452 NTAPI
3453 NtUserWin32PoolAllocationStats(
3454 DWORD Unknown0,
3455 DWORD Unknown1,
3456 DWORD Unknown2,
3457 DWORD Unknown3,
3458 DWORD Unknown4,
3459 DWORD Unknown5);
3460
3461 HWND
3462 NTAPI
3463 NtUserWindowFromPoint(
3464 LONG X,
3465 LONG Y);
3466
3467 DWORD
3468 NTAPI
3469 NtUserYieldTask(VOID);
3470
3471 /* NtUserBad
3472 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3473 */
3474
3475 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3476 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3477 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3478 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3479 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051
3480 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052
3481
3482 #define MSQ_STATE_CAPTURE 0x1
3483 #define MSQ_STATE_ACTIVE 0x2
3484 #define MSQ_STATE_FOCUS 0x3
3485 #define MSQ_STATE_MENUOWNER 0x4
3486 #define MSQ_STATE_MOVESIZE 0x5
3487 #define MSQ_STATE_CARET 0x6
3488
3489 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3490 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3491
3492 BOOL
3493 NTAPI
3494 NtUserGetMonitorInfo(
3495 IN HMONITOR hMonitor,
3496 OUT LPMONITORINFO pMonitorInfo);
3497
3498 /* Should be done in usermode */
3499
3500 /* (other FocusedItem values give the position of the focused item) */
3501 #define NO_SELECTED_ITEM 0xffff
3502
3503 typedef struct tagROSMENUINFO
3504 {
3505 /* ----------- MENUINFO ----------- */
3506 DWORD cbSize;
3507 DWORD fMask;
3508 DWORD dwStyle;
3509 UINT cyMax;
3510 HBRUSH hbrBack;
3511 DWORD dwContextHelpID;
3512 ULONG_PTR dwMenuData;
3513 /* ----------- Extra ----------- */
3514 ULONG fFlags; /* Menu flags (MF_POPUP, MF_SYSMENU) */
3515 UINT iItem; /* Currently focused item */
3516 UINT cItems; /* Number of items in the menu */
3517 WORD cxMenu; /* Width of the whole menu */
3518 WORD cyMenu; /* Height of the whole menu */
3519 ULONG cxTextAlign;
3520 PWND spwndNotify; /* window receiving the messages for ownerdraw */
3521 INT iTop;
3522 INT iMaxTop;
3523 DWORD dwArrowsOn:2;
3524
3525 HMENU Self; /* Handle of this menu */
3526 HWND Wnd; /* Window containing the menu */
3527 BOOL TimeToHide; /* Request hiding when receiving a second click in the top-level menu item */
3528 } ROSMENUINFO, *PROSMENUINFO;
3529
3530 typedef struct tagROSMENUITEMINFO
3531 {
3532 /* ----------- MENUITEMINFOW ----------- */
3533 UINT cbSize;
3534 UINT fMask;
3535 UINT fType;
3536 UINT fState;
3537 UINT wID;
3538 HMENU hSubMenu;
3539 HBITMAP hbmpChecked;
3540 HBITMAP hbmpUnchecked;
3541 DWORD dwItemData;
3542 LPWSTR dwTypeData;
3543 UINT cch;
3544 HBITMAP hbmpItem;
3545 /* ----------- Extra ----------- */
3546 RECT Rect; /* Item area (relative to menu window) */
3547 UINT dxTab; /* X position of text after Tab */
3548 LPWSTR lpstr; /* Copy of the text pointer in MenuItem->Text */
3549 SIZE maxBmpSize; /* Maximum size of the bitmap items in MIIM_BITMAP state */
3550 } ROSMENUITEMINFO, *PROSMENUITEMINFO;
3551
3552 HMONITOR
3553 NTAPI
3554 NtUserMonitorFromPoint(
3555 IN POINT point,
3556 IN DWORD dwFlags);
3557
3558 HMONITOR
3559 NTAPI
3560 NtUserMonitorFromRect(
3561 IN LPCRECT pRect,
3562 IN DWORD dwFlags);
3563
3564 HMONITOR
3565 NTAPI
3566 NtUserMonitorFromWindow(
3567 IN HWND hWnd,
3568 IN DWORD dwFlags);
3569
3570 typedef struct _SETSCROLLBARINFO
3571 {
3572 int nTrackPos;
3573 int reserved;
3574 DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
3575 } SETSCROLLBARINFO, *PSETSCROLLBARINFO;
3576
3577 BOOL
3578 NTAPI
3579 NtUserSetScrollBarInfo(
3580 HWND hwnd,
3581 LONG idObject,
3582 SETSCROLLBARINFO *info);
3583
3584 #endif /* __WIN32K_NTUSER_H */
3585
3586 /* EOF */