1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
4 typedef struct _PROCESSINFO
*PPROCESSINFO
;
5 typedef struct _THREADINFO
*PTHREADINFO
;
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 */
16 #define HANDLEENTRY_INDESTROY 1
18 typedef struct _USER_HANDLE_ENTRY
20 void *ptr
; /* pointer to object */
24 PTHREADINFO pti
; // pointer to Win32ThreadInfo
25 PPROCESSINFO ppi
; // pointer to W32ProcessInfo
27 unsigned char type
; /* object type (0 if free) */
29 unsigned short generation
; /* generation counter */
30 } USER_HANDLE_ENTRY
, * PUSER_HANDLE_ENTRY
;
32 typedef struct _USER_HANDLE_TABLE
34 PUSER_HANDLE_ENTRY handles
;
35 PUSER_HANDLE_ENTRY freelist
;
37 int allocated_handles
;
38 } USER_HANDLE_TABLE
, * PUSER_HANDLE_TABLE
;
40 typedef enum _HANDLE_TYPE
46 TYPE_SETWINDOWPOS
= 4,
57 TYPE_WINEVENTHOOK
= 15,
59 TYPE_INPUTCONTEXT
= 17,
62 TYPE_TOUCHINPUTINFO
= 20,
63 TYPE_GESTUREINFOOBJ
= 21,
66 } HANDLE_TYPE
, *PHANDLE_TYPE
;
68 typedef enum _USERTHREADINFOCLASS
70 UserThreadShutdownInformation
,
73 UserThreadWOWInformation
,
75 UserThreadInitiateShutdown
,
76 UserThreadEndShutdown
,
77 UserThreadUseActiveDesktop
,
79 UserThreadRestoreDesktop
,
81 } USERTHREADINFOCLASS
;
83 typedef struct _LARGE_UNICODE_STRING
86 ULONG MaximumLength
:31;
89 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
91 typedef struct _LARGE_STRING
94 ULONG MaximumLength
:31;
97 } LARGE_STRING
, *PLARGE_STRING
;
99 // Based on ANSI_STRING
101 typedef struct _LARGE_ANSI_STRING
104 ULONG MaximumLength
:31;
107 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
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
);
113 #define NB_HOOKS (WH_MAXHOOK-WH_MINHOOK+1)
115 typedef struct _DESKTOPINFO
118 PVOID pvDesktopLimit
;
121 LIST_ENTRY aphkStart
[NB_HOOKS
];
126 struct _WND
* spwndShell
;
128 PPROCESSINFO ppiShellProcess
;
135 UINT LastInputWasKbd
: 1;
139 WCHAR szDesktopName
[1];
140 } DESKTOPINFO
, *PDESKTOPINFO
;
142 #define CTI_THREADSYSLOCK 0x0001
143 #define CTI_INSENDMESSAGE 0x0002
145 typedef struct _CLIENTTHREADINFO
150 WORD fsWakeBitsJournal
;
152 ULONG tickLastMsgChecked
;
154 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
162 typedef struct _THROBJHEAD
166 } THROBJHEAD
, *PTHROBJHEAD
;
168 typedef struct _THRDESKHEAD
171 struct _DESKTOP
*rpdesk
;
173 } THRDESKHEAD
, *PTHRDESKHEAD
;
175 typedef struct _PROCDESKHEAD
179 struct _DESKTOP
*rpdesk
;
181 } PROCDESKHEAD
, *PPROCDESKHEAD
;
183 typedef struct _PROCMARKHEAD
188 } PROCMARKHEAD
, *PPROCMARKHEAD
;
190 #define UserHMGetHandle(obj) ((obj)->head.h)
192 /* Window Client Information structure */
195 #define WEF_SETBYWNDPTI 0x0001
197 typedef struct tagHOOK
200 struct tagHOOK
*phkNext
; /* This is for user space. */
201 int HookId
; /* Hook table index */
203 ULONG flags
; /* Some internal flags */
205 PTHREADINFO ptiHooked
;
206 struct _DESKTOP
*rpdesk
;
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 */
214 typedef struct tagCLIPBOARDDATA
219 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
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
252 typedef struct _CALLBACKWND
257 } CALLBACKWND
, *PCALLBACKWND
;
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
267 typedef struct _CLIENTINFO
273 DWORD dwCompatFlags2
;
274 DWORD dwTIFlags
; // ThreadInfo TIF_Xxx flags for User space.
275 PDESKTOPINFO pDeskInfo
;
276 ULONG_PTR ulClientDelta
;
279 CALLBACKWND CallbackWnd
;
281 INT cInDDEMLCallback
;
282 PCLIENTTHREADINFO pClientThreadInfo
;
283 ULONG_PTR dwHookData
;
286 DWORD dwAsyncKeyCache
;
287 BYTE afAsyncKeyState
[8];
288 BYTE afAsyncKeyStateRecentDow
[8];
293 LPDWORD lpdwRegisteredClasses
;
294 ULONG Win32ClientInfo3
[26];
295 /* It's just a pointer reference not to be used w the structure in user space. */
297 } CLIENTINFO
, *PCLIENTINFO
;
299 /* Make sure it fits into the TEB */
300 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
302 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
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.
308 /* Menu Item fType. */
309 #define MFT_RTOL 0x6000
311 /* Menu Item fState. */
312 #define MFS_HBMMENUBMP 0x20000000
314 typedef struct tagITEM
319 struct tagMENU
* spSubMenu
; /* Pop-up menu. */
321 HANDLE hbmpUnchecked
;
322 USHORT
* Xlpstr
; /* Item text pointer. */
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 " */
336 UNICODE_STRING lpstr
;
339 typedef struct tagMENULIST
341 struct tagMENULIST
* pNext
;
342 struct tagMENU
* pMenu
;
343 } MENULIST
, *PMENULIST
;
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
354 #define MNF_SYSMENU 0x0200
356 typedef struct tagMENU
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. */
377 LIST_ENTRY ListEntry
;
378 HWND hWnd
; /* Window containing the menu, use POPUPMENU */
382 typedef struct tagPOPUPMENU
387 ULONG fIsTrackPopup
:1;
388 ULONG fDroppedLeft
:1;
389 ULONG fHierarchyDropped
:1;
390 ULONG fRightButton
:1;
392 ULONG fSynchronous
:1;
394 ULONG fDropNextPopup
:1;
396 ULONG fAboutToHide
:1;
400 ULONG fDelayedFree
:1;
401 ULONG fFlushDelayedFree
:1;
404 ULONG fTrackMouseEvent
:1;
407 // ULONG fDesktopMenu:1;
409 ULONG fUseMonitorRect
:1;
410 struct _WND
*spwndNotify
;
411 struct _WND
*spwndPopupMenu
;
412 struct _WND
*spwndNextPopup
;
413 struct _WND
*spwndPrevPopup
;
415 PMENU spmenuAlternate
;
416 struct _WND
*spwndActivePopup
;
417 struct tagPOPUPMENU
*ppopupmenuRoot
;
418 struct tagPOPUPMENU
*ppmDelayedFree
;
419 UINT posSelectedItem
;
421 } POPUPMENU
, *PPOPUPMENU
;
424 typedef struct _REGISTER_SYSCLASS
426 /* This is a reactos specific class used to initialize the
427 system window classes during user32 initialization */
436 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
438 typedef struct _CLSMENUNAME
440 LPSTR pszClientAnsiMenuName
;
441 LPWSTR pwszClientUnicodeMenuName
;
442 PUNICODE_STRING pusMenuName
;
443 } CLSMENUNAME
, *PCLSMENUNAME
;
445 typedef struct tagSBDATA
453 typedef struct tagSBINFO
460 typedef struct tagSBCALC
482 UserGetCPDA2U
= 0x01, // " Unicode "
483 UserGetCPDU2A
= 0X02, // " Ansi "
484 UserGetCPDClass
= 0X10,
485 UserGetCPDWindow
= 0X20,
486 UserGetCPDDialog
= 0X40,
487 UserGetCPDWndtoCls
= 0X80
490 typedef struct _CALLPROCDATA
493 struct _CALLPROCDATA
*spcpdNext
;
494 WNDPROC pfnClientPrevious
;
496 } CALLPROCDATA
, *PCALLPROCDATA
;
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
509 struct _CLS
*pclsNext
;
510 RTL_ATOM atomClassName
;
511 ATOM atomNVClassName
;
513 struct _DESKTOP
*rpdeskParent
;
516 PSTR lpszClientAnsiMenuName
; // For client use
517 PWSTR lpszClientUnicodeMenuName
; // " " "
518 PCALLPROCDATA spcpdFirst
;
519 struct _CLS
*pclsBase
;
520 struct _CLS
*pclsClone
;
521 ULONG cWndReferenceCount
;
527 #ifdef NEW_CURSORICON
528 struct _CURICON_OBJECT
* spicn
;
529 struct _CURICON_OBJECT
* spcur
;
531 HANDLE hIcon
; /* FIXME - Use pointer! */
532 HANDLE hCursor
; /* FIXME - Use pointer! */
534 HBRUSH hbrBackground
;
535 PWSTR lpszMenuName
; // kernel use
536 PSTR lpszAnsiClassName
; // "
537 #ifdef NEW_CURSORICON
538 struct _CURICON_OBJECT
* spicnSm
;
540 HANDLE hIconSm
; /* FIXME - Use pointer! */
542 //// ReactOS dosn't suppot cache icons.
543 HICON hIconSmIntern
; /* Internal small icon, derived from hIcon */
546 UINT Unicode
: 1; // !CSF_ANSIPROC
547 UINT Global
: 1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
548 UINT MenuNameIsString
: 1;
553 typedef struct _SBINFOEX
555 SCROLLBARINFO ScrollBarInfo
;
556 SCROLLINFO ScrollInfo
;
557 } SBINFOEX
, *PSBINFOEX
;
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
593 #define WNDSACTIVEFRAME 0x00000006
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
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
641 #define WPF_MININIT 0x0008
642 #define WPF_MAXINIT 0x0010
649 /* Extended style. */
653 /* Handle of the module that created the window. */
656 struct _WND
*spwndNext
;
657 struct _WND
*spwndPrev
;
658 struct _WND
*spwndParent
;
659 struct _WND
*spwndChild
;
660 struct _WND
*spwndOwner
;
664 /* Pointer to the window class. */
667 /* Property list head.*/
668 LIST_ENTRY PropListHead
;
672 /* system menu handle. */
675 /* Window menu handle or window id */
676 UINT IDMenu
; // Use spmenu
681 LARGE_UNICODE_STRING strName
;
682 /* Size of the extra data associated with the window. */
684 struct _WND
*spwndLastActive
;
685 HIMC hImc
; // Input context associated with this window.
688 //PD3DMATRIX pTransForm;
689 struct _WND
*spwndClipboardListener
;
698 UINT flags
; // WPF_ flags.
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 ?
707 PSBINFOEX pSBInfoex
; // convert to PSBINFO
708 /* Entry in the list of thread windows. */
709 LIST_ENTRY ThreadListEntry
;
712 #define PWND_BOTTOM ((PWND)1)
714 typedef struct _SBWND
722 typedef struct _MENUWND
725 PPOPUPMENU ppopupmenu
;
726 } MENUWND
, *PMENUWND
;
728 typedef struct _PFNCLIENT
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
;
756 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
757 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
760 typedef LRESULT(CALLBACK
*WNDPROC_EX
)(HWND
,UINT
,WPARAM
,LPARAM
,BOOL
);
762 typedef struct _PFNCLIENTWORKER
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
;
777 typedef LONG_PTR (NTAPI
*PFN_FNID
)(PWND
, UINT
, WPARAM
, LPARAM
, ULONG_PTR
);
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
815 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
816 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
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...
823 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
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)))
830 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
832 // ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays
833 #define ICLS_BUTTON 0
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
849 #define ICLS_GHOST 16
850 #define ICLS_DESKTOP 17
851 #define ICLS_DIALOG 18
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
860 #define ICLS_SYSSHADOW 23
861 #define ICLS_HWNDMESSAGE 24
862 #define ICLS_NOTUSED 25
866 #define COLOR_LAST COLOR_MENUBAR
867 #define MAX_MB_STRINGS 11
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
875 #define NUM_SYSCOLORS 31
877 typedef struct tagOEMBITMAPINFO
883 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
885 typedef struct tagMBSTRING
890 } MBSTRING
, *PMBSTRING
;
892 typedef struct tagDPISERVERINFO
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
;
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
909 typedef struct _PERUSERSERVERINFO
911 INT aiSysMet
[SM_CMETRICS
];
912 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
913 COLORREF argbSystem
[NUM_SYSCOLORS
];
914 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
918 DWORD dwLastRITEventTickCount
;
923 UINT ucWheelScrollLines
;
924 UINT ucWheelScrollChars
;
925 INT wMaxLeftOverlapChars
;
926 INT wMaxRightOverlapChars
;
929 TEXTMETRICW tmSysFont
;
930 DPISERVERINFO dpiSystem
;
931 HICON hIconSmWindows
;
934 DWORD dwAsyncKeyCache
;
936 OEMBITMAPINFO oembmi
[93];
945 DWORD dwLastSystemRITEventTickCountUpdate
;
946 ULONG adwDBGTAGFlags
[35];
949 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
951 typedef struct tagSERVERINFO
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
;
962 ATOM atomSysClass
[ICLS_NOTUSED
+1];
963 DWORD dwDefaultHeapBase
;
964 DWORD dwDefaultHeapSize
;
966 MBSTRING MBStrings
[MAX_MB_STRINGS
];
969 ATOM atomContextHelpIdProp
;
970 ATOM atomFrostedWindowProp
;
971 CHAR acOemToAnsi
[256];
972 CHAR acAnsiToOem
[256];
973 DWORD dwInstalledEventHooks
;
975 } SERVERINFO
, *PSERVERINFO
;
978 C_ASSERT(sizeof(SERVERINFO
) <= PAGE_SIZE
);
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
992 typedef struct _PROPLISTITEM
996 } PROPLISTITEM
, *PPROPLISTITEM
;
998 typedef struct _PROPERTY
1000 LIST_ENTRY PropListEntry
;
1003 } PROPERTY
, *PPROPERTY
;
1005 typedef struct _BROADCASTPARM
1012 } BROADCASTPARM
, *PBROADCASTPARM
;
1014 PTHREADINFO
GetW32ThreadInfo(VOID
);
1015 PPROCESSINFO
GetW32ProcessInfo(VOID
);
1017 typedef struct _WNDMSG
1023 typedef struct _SHAREDINFO
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
;
1034 /* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */
1035 typedef struct _USERCONNECT
1038 ULONG ulCurrentVersion
;
1039 DWORD dwDispatchCount
;
1040 SHAREDINFO siClient
;
1041 } USERCONNECT
, *PUSERCONNECT
;
1043 // WinNT 5.0 compatible user32 / win32k
1044 #define USER_VERSION MAKELONG(0x0000, 0x0005)
1046 #if defined(_M_IX86)
1047 C_ASSERT(sizeof(USERCONNECT
) == 0x124);
1051 typedef struct tagGETCLIPBDATA
1060 } GETCLIPBDATA
, *PGETCLIPBDATA
;
1062 typedef struct tagSETCLIPBDATA
1065 BOOL fIncSerialNumber
;
1066 } SETCLIPBDATA
, *PSETCLIPBDATA
;
1068 // Used with NtUserSetCursorIconData, last parameter.
1069 typedef struct tagCURSORDATA
1075 ULONG CURSORF_flags
;
1082 HBITMAP hbmUserAlpha
; // Could be in W7U, not in W2k
1088 struct tagCURSORDATA
* aspcur
;
1092 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
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
1105 typedef struct tagIMEINFOEX
1109 WCHAR wszUIClass
[16];
1110 ULONG fdwInitConvMode
;
1113 DWORD dwProdVersion
;
1114 DWORD dwImeWinVersion
;
1115 WCHAR wszImeDescription
[50];
1116 WCHAR wszImeFile
[80];
1119 INT fSysWow64Only
:1;
1122 } IMEINFOEX
, *PIMEINFOEX
;
1124 typedef struct tagIMEUI
1137 UINT fChildThreadDef
:1;
1138 UINT fCtrlShowStatus
:1;
1139 UINT fFreeActiveEvent
:1;
1143 // Window Extra data container.
1144 typedef struct _IMEWND
1153 NtUserAssociateInputContext(
1160 NtUserBuildHimcList(
1177 NtUserCheckMenuItem(
1184 NtUserCtxDisplayIOCtl(
1203 NtUserDrawMenuBarTemp(
1212 NtUserEnableMenuItem(
1219 NtUserEndMenu(VOID
);
1223 NtUserGetMenuBarInfo(
1237 NtUserGetMenuItemRect(
1245 NtUserGetSystemMenu(
1251 NtUserHiliteMenuItem(
1259 NtUserMenuItemFromPoint(
1281 NtUserSetMenuContextHelpId(
1283 DWORD dwContextHelpId
);
1287 NtUserSetMenuDefaultItem(
1294 NtUserSetMenuFlagRtoL(
1299 NtUserSetSystemMenu(
1305 NtUserThunkedMenuInfo(
1311 NtUserThunkedMenuItemInfo(
1316 LPMENUITEMINFOW lpmii
,
1317 PUNICODE_STRING lpszCaption
);
1321 NtUserTrackPopupMenuEx(
1331 NtUserActivateKeyboardLayout(
1337 NtUserAlterWindowStyle(
1344 NtUserAttachThreadInput(
1346 IN DWORD idAttachTo
,
1350 NtUserBeginPaint(HWND hWnd
, PAINTSTRUCT
* lPs
);
1371 NtUserBuildHwndList(
1381 NtUserBuildNameList(
1385 PULONG pRequiredSize
);
1389 NtUserBuildPropList(
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
1399 enum SimpleCallRoutines
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
,
1409 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1410 #if (WIN32K_VERSION < NTDDI_VISTA)
1411 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1412 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1413 NOPARAM_ROUTINE_DESTROY_CARET
,
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
,
1422 NOPARAM_ROUTINE_GETREMOTEPROCESSID
,
1424 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1425 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1426 #if (WIN32K_VERSION >= NTDDI_VISTA)
1427 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1428 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
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
,
1447 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1448 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1449 #if (WIN32K_VERSION < NTDDI_VISTA)
1450 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1452 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1453 #if (WIN32K_VERSION >= NTDDI_VISTA)
1454 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1456 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1457 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1458 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1459 #if (WIN32K_VERSION < NTDDI_VISTA)
1460 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1462 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1463 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1464 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1465 #if (WIN32K_VERSION < NTDDI_VISTA)
1466 ONEPARAM_ROUTINE_GETCURSORPOS
,
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
,
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
,
1486 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1487 ONEPARAM_ROUTINE_REGISTERLPK
,
1488 #if (WIN32K_VERSION >= NTDDI_VISTA)
1489 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1491 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1492 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1493 ONEPARAM_ROUTINE_RELEASEDC
,
1494 #if (WIN32K_VERSION >= NTDDI_VISTA)
1495 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1497 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1498 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1499 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1500 #if (WIN32K_VERSION < NTDDI_VISTA)
1501 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1503 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1504 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1505 #if (WIN32K_VERSION >= NTDDI_VISTA)
1506 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
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
,
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
,
1552 TWOPARAM_ROUTINE_GETHDEVNAME
,
1553 TWOPARAM_ROUTINE_INITANSIOEM
,
1554 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1555 #if (WIN32K_VERSION >= NTDDI_VISTA)
1556 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1558 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1559 #if (WIN32K_VERSION >= NTDDI_VISTA)
1560 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1562 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
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
,
1572 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1573 TWOPARAM_ROUTINE_WOWCLEANUP
1596 NtUserCallHwndParam(
1603 NtUserCallHwndParamLock(
1610 NtUserCallMsgFilter(
1616 NtUserCallNextHookEx(
1642 NtUserChangeClipboardChain(
1648 NtUserChangeDisplaySettings(
1649 PUNICODE_STRING lpszDeviceName
,
1650 LPDEVMODEW lpDevMode
,
1657 NtUserCheckDesktopByThreadId(
1662 NtUserCheckWindowThreadDesktop(
1669 NtUserCheckImeHotKey(
1674 NtUserChildWindowFromPointEx(
1687 NtUserCloseClipboard(VOID
);
1696 NtUserCloseWindowStation(
1699 /* Console commands for NtUserConsoleControl */
1700 typedef enum _CONSOLECONTROL
1702 GuiConsoleWndClassAtom
,
1703 ConsoleMakePalettePublic
= 5,
1704 ConsoleAcquireDisplayOwnership
,
1705 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1709 NtUserConsoleControl(
1710 IN CONSOLECONTROL ConsoleCtrl
,
1711 IN PVOID ConsoleCtrlInfo
,
1712 IN ULONG ConsoleCtrlInfoLength
);
1716 NtUserConvertMemHandle(
1722 NtUserCopyAcceleratorTable(
1725 ULONG EntriesCount
);
1729 NtUserCountClipboardFormats(VOID
);
1733 NtUserCreateAcceleratorTable(
1735 ULONG EntriesCount
);
1747 NtUserCreateDesktop(
1748 POBJECT_ATTRIBUTES poa
,
1749 PUNICODE_STRING lpszDesktopDevice
,
1752 ACCESS_MASK dwDesiredAccess
);
1756 NtUserCreateInputContext(
1761 NtUserCreateLocalMemHandle(
1769 NtUserCreateWindowEx(
1771 PLARGE_STRING plstrClassName
,
1772 PLARGE_STRING plstrClsVersion
,
1773 PLARGE_STRING plstrWindowName
,
1781 HINSTANCE hInstance
,
1788 NtUserCreateWindowStation(
1789 POBJECT_ATTRIBUTES ObjectAttributes
,
1790 ACCESS_MASK dwDesiredAccess
,
1799 NtUserDdeGetQualityOfService(
1802 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1806 NtUserDdeInitialize(
1815 NtUserDdeSetQualityOfService(
1817 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1818 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1821 NtUserDeferWindowPos(
1824 HWND WndInsertAfter
,
1832 NtUserDefSetText(HWND WindowHandle
, PLARGE_STRING WindowText
);
1836 NtUserDestroyAcceleratorTable(
1841 NtUserDestroyCursor(
1847 NtUserDestroyInputContext(
1851 NtUserDestroyWindow(HWND Wnd
);
1855 NtUserDisableThreadIme(
1860 NtUserDispatchMessage(PMSG pMsg
);
1879 NtUserDrawAnimatedRects(
1895 NtUserDrawCaptionTemp(
1901 const PUNICODE_STRING str
,
1904 // Used with NtUserDrawIconEx, last parameter.
1905 typedef struct _DRAWICONEXDATA
1911 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1923 HBRUSH hbrFlickerFreeDraw
,
1930 NtUserEmptyClipboard(VOID
);
1934 NtUserEnableScrollBar(
1941 NtUserEndDeferWindowPosEx(
1946 NtUserEndPaint(HWND hWnd
, CONST PAINTSTRUCT
* lPs
);
1950 NtUserEnumDisplayDevices (
1951 PUNICODE_STRING lpDevice
, /* device name */
1952 DWORD iDevNum
, /* display device */
1953 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
1954 DWORD dwFlags
); /* reserved */
1958 NtUserEnumDisplayMonitors (
1961 MONITORENUMPROC lpfnEnum,
1963 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
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
);
1976 NtUserEnumDisplaySettings(
1977 PUNICODE_STRING lpszDeviceName
,
1979 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
1989 NtUserExcludeUpdateRgn(
2005 HWND hwndChildAfter
,
2006 PUNICODE_STRING ucClassName
,
2007 PUNICODE_STRING ucWindowName
,
2013 NtUserFlashWindowEx(
2014 IN PFLASHWINFO pfwi
);
2018 NtUserGetAltTabInfo(
2027 NtUserGetAncestor(HWND hWnd
, UINT Flags
);
2031 NtUserGetAppImeLevel(
2036 NtUserGetAsyncKeyState(
2039 _Success_(return!=0)
2040 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return*2+2))
2045 _Inout_ PUNICODE_STRING pustrName
);
2049 NtUserGetCaretBlinkTime(VOID
);
2057 NtUserGetClassInfo(HINSTANCE hInstance
,
2058 PUNICODE_STRING ClassName
,
2060 LPWSTR
*ppszMenuName
,
2065 NtUserGetClassName(HWND hWnd
,
2066 BOOL Real
, // 0 GetClassNameW, 1 RealGetWindowClassA/W
2067 PUNICODE_STRING ClassName
);
2071 NtUserGetClipboardData(
2073 PGETCLIPBDATA pgcd
);
2077 NtUserGetClipboardFormatName(
2079 LPWSTR lpszFormatName
,
2084 NtUserGetClipboardOwner(VOID
);
2088 NtUserGetClipboardSequenceNumber(VOID
);
2092 NtUserGetClipboardViewer(VOID
);
2096 NtUserGetClipCursor(
2101 NtUserGetComboBoxInfo(
2103 PCOMBOBOXINFO pcbi
);
2107 NtUserGetControlBrush(
2114 NtUserGetControlColor(
2129 NtUserGetCursorFrameInfo(
2137 NtUserGetCursorInfo(
2154 NtUserGetDoubleClickTime(VOID
);
2158 NtUserGetForegroundWindow(VOID
);
2162 NtUserGetGuiResources(
2168 NtUserGetGUIThreadInfo(
2170 LPGUITHREADINFO lpgui
);
2172 _Success_(return!=FALSE
)
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
);
2202 PIMEINFOEX pImeInfoEx
,
2207 NtUserGetInternalWindowPos(
2214 NtUserGetKeyboardLayout(
2219 NtUserGetKeyboardLayoutList(
2225 NtUserGetKeyboardLayoutName(
2230 NtUserGetKeyboardState(
2235 NtUserGetKeyboardType(
2240 NtUserGetKeyNameText( LONG lParam
, LPWSTR lpString
, int nSize
);
2249 NtUserGetLayeredWindowAttributes(
2257 NtUserGetListBoxInfo(
2261 NtUserGetMessage(PMSG pMsg
,
2268 NtUserGetMouseMovePointsEx(
2270 LPMOUSEMOVEPOINT lppt
,
2271 LPMOUSEMOVEPOINT lpptBuf
,
2277 NtUserGetObjectInformation(
2280 PVOID pvInformation
,
2282 PDWORD nLengthNeeded
);
2286 NtUserGetOpenClipboardWindow(VOID
);
2290 NtUserGetPriorityClipboardFormat(
2291 UINT
*paFormatPriorityList
,
2296 NtUserGetProcessWindowStation(VOID
);
2300 NtUserGetRawInputBuffer(
2307 NtUserGetRawInputData(
2308 HRAWINPUT hRawInput
,
2316 NtUserGetRawInputDeviceInfo(
2324 NtUserGetRawInputDeviceList(
2325 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2326 PUINT puiNumDevices
,
2331 NtUserGetRegisteredRawInputDevices(
2332 PRAWINPUTDEVICE pRawInputDevices
,
2333 PUINT puiNumDevices
,
2338 NtUserGetScrollBarInfo(
2341 PSCROLLBARINFO psbi
);
2345 NtUserGetThreadDesktop(
2350 enum ThreadStateRoutines
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
2369 NtUserGetThreadState(
2374 NtUserGetTitleBarInfo(
2379 NtUserGetUpdateRect(HWND hWnd
, LPRECT lpRect
, BOOL fErase
);
2395 NtUserGetWindowPlacement(
2397 WINDOWPLACEMENT
*lpwndpl
);
2402 HINSTANCE hInstance
,
2403 PUNICODE_STRING ClassName
);
2407 NtUserHardErrorControl(
2414 NtUserImpersonateDdeClientWindow(
2422 HANDLE hPowerRequestEvent
,
2423 HANDLE hMediaRequestEvent
);
2427 NtUserInitializeClientPfnArrays(
2428 PPFNCLIENT pfnClientA
,
2429 PPFNCLIENT pfnClientW
,
2430 PPFNCLIENTWORKER pfnClientWorker
,
2431 HINSTANCE hmodUser
);
2451 NtUserInternalGetWindowText(
2458 NtUserInvalidateRect(
2465 NtUserInvalidateRgn(
2472 NtUserIsClipboardFormatAvailable(
2485 NtUserLoadKeyboardLayoutEx(
2488 IN PUNICODE_STRING puszKeyboardName
,
2490 IN PUNICODE_STRING puszKLID
,
2496 NtUserLockWindowStation(
2497 HWINSTA hWindowStation
);
2501 NtUserLockWindowUpdate(
2506 NtUserLockWorkStation(VOID
);
2510 NtUserMapVirtualKeyEx( UINT keyCode
,
2515 typedef struct tagDOSENDMESSAGE
2521 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2530 ULONG_PTR ResultInfo
,
2531 DWORD dwType
, // FNID_XX types
2538 UINT cmd
, // Wine SW_ commands
2543 NtUserMNDragLeave(VOID
);
2553 NtUserModifyUserStartupInfoFlags(
2570 NtUserNotifyIMEStatus(
2577 NtUserNotifyProcessCreate(
2578 HANDLE NewProcessId
,
2579 HANDLE ParentThreadId
,
2585 NtUserNotifyWinEvent(
2593 NtUserOpenClipboard(
2600 POBJECT_ATTRIBUTES ObjectAttributes
,
2602 ACCESS_MASK dwDesiredAccess
);
2606 NtUserOpenInputDesktop(
2609 ACCESS_MASK dwDesiredAccess
);
2613 NtUserOpenWindowStation(
2614 POBJECT_ATTRIBUTES ObjectAttributes
,
2615 ACCESS_MASK dwDesiredAccess
);
2633 NtUserPeekMessage( PMSG pMsg
,
2649 NtUserPostThreadMessage(
2664 NtUserProcessConnect(
2665 IN HANDLE ProcessHandle
,
2666 OUT PUSERCONNECT pUserConnect
,
2667 IN ULONG Size
); // sizeof(USERCONNECT)
2671 NtUserQueryInformationThread(
2672 IN HANDLE ThreadHandle
,
2673 IN USERTHREADINFOCLASS ThreadInformationClass
,
2674 OUT PVOID ThreadInformation
,
2675 IN ULONG ThreadInformationLength
2680 NtUserQueryInputContext(
2686 NtUserQuerySendMessage(
2691 NtUserQueryUserCounters(
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
2713 NtUserRealInternalGetMessage(
2723 NtUserRealChildWindowFromPoint(
2730 NtUserRealWaitMessageEx(
2739 CONST RECT
*lprcUpdate
,
2746 NtUserRegisterClassExWOW(
2748 PUNICODE_STRING pustrClassName
,
2749 PUNICODE_STRING pustrCNVersion
,
2750 PCLSMENUNAME pClassMenuName
,
2757 NtUserRegisterRawInputDevices(
2758 IN PCRAWINPUTDEVICE pRawInputDevices
,
2759 IN UINT uiNumDevices
,
2764 NtUserRegisterUserApiHook(
2765 PUNICODE_STRING m_dllname1
,
2766 PUNICODE_STRING m_funname1
,
2772 NtUserRegisterHotKey(HWND hWnd
,
2779 NtUserRegisterTasklist(
2783 NtUserRegisterWindowMessage(PUNICODE_STRING MessageName
);
2787 NtUserRemoteConnect(
2794 NtUserRemoteRedrawRectangle(
2802 NtUserRemoteRedrawScreen(VOID
);
2806 NtUserRemoteStopScreenUpdates(VOID
);
2809 NtUserRemoveProp(HWND hWnd
, ATOM Atom
);
2813 NtUserResolveDesktop(
2821 NtUserResolveDesktopForWOW(
2838 CONST RECT
*lprcScroll
,
2839 CONST RECT
*lprcClip
,
2844 NtUserScrollWindowEx(HWND hWnd
, INT dx
, INT dy
, const RECT
*rect
,
2845 const RECT
*clipRect
, HRGN hrgnUpdate
, LPRECT rcUpdate
, UINT flags
);
2855 NtUserSetActiveWindow(HWND Wnd
);
2859 NtUserSetAppImeLevel(
2864 NtUserSetCapture(HWND Wnd
);
2870 ULONG_PTR dwNewLong
,
2882 NtUserSetClipboardData(
2889 NtUserSetClipboardViewer(
2890 HWND hWndNewViewer
);
2894 NtUserSelectPalette(
2897 BOOL ForceBackground
2902 NtUserSetConsoleReserveKeys(
2913 NtUserSetCursorContents(
2915 PICONINFO IconInfo
);
2917 #ifdef NEW_CURSORICON
2920 NtUserSetCursorIconData(
2921 _In_ HCURSOR hCursor
,
2922 _In_ PUNICODE_STRING pustrModule
,
2923 _In_ PUNICODE_STRING puSrcName
,
2924 _In_
const CURSORDATA
* pCursorData
);
2926 typedef struct _tagFINDEXISTINGCURICONPARAM
2931 } FINDEXISTINGCURICONPARAM
;
2935 NtUserFindExistingCursorIcon(
2936 _In_ PUNICODE_STRING pustrModule
,
2937 _In_ PUNICODE_STRING pustrRsrc
,
2938 _In_ FINDEXISTINGCURICONPARAM
* param
);
2942 NtUserSetCursorIconData(
2952 NtUserFindExistingCursorIcon(
2982 PIMEINFOEX pImeInfoEx
);
2986 NtUserSetImeOwnerWindow(
2992 NtUserSetInformationProcess(
3000 NtUserSetInformationThread(
3001 IN HANDLE ThreadHandle
,
3002 IN USERTHREADINFOCLASS ThreadInformationClass
,
3003 IN PVOID ThreadInformation
,
3004 IN ULONG ThreadInformationLength
3009 NtUserSetInternalWindowPos(
3017 NtUserSetKeyboardState(
3022 NtUserSetLayeredWindowAttributes(
3030 NtUserSetLogonNotifyWindow(
3035 NtUserSetObjectInformation(
3038 PVOID pvInformation
,
3045 HWND hWndNewParent
);
3049 NtUserSetProcessWindowStation(
3050 HWINSTA hWindowStation
);
3053 NtUserSetProp(HWND hWnd
, ATOM Atom
, HANDLE Data
);
3063 NtUserSetScrollInfo(
3071 NtUserSetShellWindowEx(
3073 HWND hwndShellListView
);
3079 IN CONST INT
*lpaElements
,
3080 IN CONST COLORREF
*lpaRgbValues
,
3085 NtUserSetSystemCursor(
3091 NtUserSetThreadDesktop(
3096 NtUserSetThreadState(
3102 NtUserSetSystemTimer
3107 TIMERPROC lpTimerFunc
3112 NtUserSetThreadLayoutHandles(
3123 TIMERPROC lpTimerFunc
3128 NtUserSetWindowFNID(
3134 NtUserSetWindowLong(
3142 NtUserSetWindowPlacement(
3144 WINDOWPLACEMENT
*lpwndpl
);
3147 NTAPI
NtUserSetWindowPos(
3149 HWND hWndInsertAfter
,
3166 NtUserSetWindowsHookAW(
3173 NtUserSetWindowsHookEx(
3175 PUNICODE_STRING ModuleName
,
3183 NtUserSetWindowStationUser(
3190 NtUserSetWindowWord(HWND hWnd
, INT Index
, WORD NewVal
);
3194 NtUserSetWinEventHook(
3197 HMODULE hmodWinEventProc
,
3198 PUNICODE_STRING puString
,
3199 WINEVENTPROC lpfnWinEventProc
,
3216 NtUserShowScrollBar(HWND hWnd
, int wBar
, DWORD bShow
);
3226 NtUserShowWindowAsync(
3232 NtUserSoundSentry(VOID
);
3236 NtUserSwitchDesktop(
3241 NtUserSystemParametersInfo(
3249 NtUserTestForInteractiveUser(
3265 NtUserTrackMouseEvent(
3266 LPTRACKMOUSEEVENT lpEventTrack
);
3270 NtUserTranslateAccelerator(
3277 NtUserTranslateMessage(
3283 NtUserUnhookWindowsHookEx(
3288 NtUserUnhookWinEvent(
3289 HWINEVENTHOOK hWinEventHook
);
3293 NtUserUnloadKeyboardLayout(
3298 NtUserUnlockWindowStation(
3299 HWINSTA hWindowStation
);
3303 NtUserUnregisterClass(
3304 PUNICODE_STRING ClassNameOrAtom
,
3305 HINSTANCE hInstance
,
3306 PCLSMENUNAME pClassMenuName
);
3310 NtUserUnregisterHotKey(HWND hWnd
,
3315 NtUserUnregisterUserApiHook(VOID
);
3319 NtUserUpdateInputContext(
3326 NtUserUpdateInstance(
3333 NtUserUpdateLayeredWindow(
3341 BLENDFUNCTION
*pblend
,
3347 NtUserUpdatePerUserSystemParameters(
3353 NtUserUserHandleGrantAccess(
3354 IN HANDLE hUserHandle
,
3360 NtUserValidateHandleSecure(
3368 CONST RECT
*lpRect
);
3372 NtUserValidateTimerCallback(
3386 NtUserWaitForInputIdle(
3388 IN DWORD dwMilliseconds
,
3389 IN BOOL Unknown2
); // Always FALSE
3393 NtUserWaitForMsgAndEvent(
3398 NtUserWaitMessage(VOID
);
3402 NtUserWin32PoolAllocationStats(
3412 NtUserWindowFromPoint(
3418 NtUserYieldTask(VOID
);
3420 /* lParam of DDE messages */
3421 typedef struct tagKMDDEEXECUTEDATA
3425 /* BYTE Data[DataSize] */
3426 } KMDDEEXECUTEDATA
, *PKMDDEEXECUTEDATA
;
3428 typedef struct tagDDEPACK
3432 } DDEPACK
, *PDDEPACK
;
3439 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
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
3461 NtUserGetMonitorInfo(
3462 IN HMONITOR hMonitor
,
3463 OUT LPMONITORINFO pMonitorInfo
);
3465 /* Should be done in usermode */
3467 /* (other FocusedItem values give the position of the focused item) */
3468 #define NO_SELECTED_ITEM 0xffff
3470 typedef struct tagROSMENUINFO
3472 /* ----------- MENUINFO ----------- */
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 */
3487 PWND spwndNotify
; /* window receiving the messages for ownerdraw */
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
;
3497 typedef struct tagROSMENUITEMINFO
3499 /* ----------- MENUITEMINFOW ----------- */
3506 HBITMAP hbmpChecked
;
3507 HBITMAP hbmpUnchecked
;
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
;
3521 NtUserMonitorFromPoint(
3527 NtUserMonitorFromRect(
3533 NtUserMonitorFromWindow(
3537 typedef struct _SETSCROLLBARINFO
3541 DWORD rgstate
[CCHILDREN_SCROLLBAR
+1];
3542 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3546 NtUserSetScrollBarInfo(
3549 SETSCROLLBARINFO
*info
);
3553 #endif /* __WIN32K_NTUSER_H */