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