1 #ifndef __WIN32K_NTUSER_H
2 #define __WIN32K_NTUSER_H
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_DESTROY 1
17 #define HANDLEENTRY_INDESTROY 2
19 typedef struct _USER_HANDLE_ENTRY
21 void *ptr
; /* pointer to object */
25 struct _THREADINFO
*pti
; /* pointer to Win32ThreadInfo */
26 struct _PROCESSINFO
*ppi
; /* pointer to W32ProcessInfo */
28 unsigned char type
; /* object type (0 if free) */
30 unsigned short generation
; /* generation counter */
31 } USER_HANDLE_ENTRY
, *PUSER_HANDLE_ENTRY
;
33 typedef struct _USER_HANDLE_TABLE
35 PUSER_HANDLE_ENTRY handles
;
36 PUSER_HANDLE_ENTRY freelist
;
38 int allocated_handles
;
39 } USER_HANDLE_TABLE
, *PUSER_HANDLE_TABLE
;
41 typedef enum _HANDLE_TYPE
47 TYPE_SETWINDOWPOS
= 4,
58 TYPE_WINEVENTHOOK
= 15,
60 TYPE_INPUTCONTEXT
= 17,
63 TYPE_TOUCHINPUTINFO
= 20,
64 TYPE_GESTUREINFOOBJ
= 21,
67 } HANDLE_TYPE
, *PHANDLE_TYPE
;
69 typedef enum _USERTHREADINFOCLASS
71 UserThreadShutdownInformation
,
74 UserThreadWOWInformation
,
76 UserThreadInitiateShutdown
,
77 UserThreadEndShutdown
,
78 UserThreadUseActiveDesktop
,
80 UserThreadRestoreDesktop
,
82 } USERTHREADINFOCLASS
;
84 typedef struct _LARGE_UNICODE_STRING
87 ULONG MaximumLength
:31;
90 } LARGE_UNICODE_STRING
, *PLARGE_UNICODE_STRING
;
92 typedef struct _LARGE_STRING
95 ULONG MaximumLength
:31;
98 } LARGE_STRING
, *PLARGE_STRING
;
101 /* Based on ANSI_STRING */
102 typedef struct _LARGE_ANSI_STRING
105 ULONG MaximumLength
:31;
108 } LARGE_ANSI_STRING
, *PLARGE_ANSI_STRING
;
112 RtlInitLargeAnsiString(
113 IN OUT PLARGE_ANSI_STRING
,
119 RtlInitLargeUnicodeString(
120 IN OUT PLARGE_UNICODE_STRING
,
126 RtlLargeStringToUnicodeString(
130 #define NB_HOOKS (WH_MAXHOOK - WH_MINHOOK + 1)
132 typedef struct _DESKTOPINFO
135 PVOID pvDesktopLimit
;
138 LIST_ENTRY aphkStart
[NB_HOOKS
];
143 struct _WND
*spwndShell
;
144 struct _WND
*spwndBkGnd
;
146 struct _PROCESSINFO
*ppiShellProcess
;
153 UINT LastInputWasKbd
:1;
157 WCHAR szDesktopName
[1];
158 } DESKTOPINFO
, *PDESKTOPINFO
;
160 #define CTI_THREADSYSLOCK 0x0001
161 #define CTI_INSENDMESSAGE 0x0002
163 typedef struct _CLIENTTHREADINFO
168 WORD fsWakeBitsJournal
;
170 ULONG tickLastMsgChecked
;
172 } CLIENTTHREADINFO
, *PCLIENTTHREADINFO
;
180 typedef struct _THROBJHEAD
183 struct _THREADINFO
*pti
;
184 } THROBJHEAD
, *PTHROBJHEAD
;
186 typedef struct _THRDESKHEAD
189 struct _DESKTOP
*rpdesk
;
191 } THRDESKHEAD
, *PTHRDESKHEAD
;
193 typedef struct _PROCDESKHEAD
197 struct _DESKTOP
*rpdesk
;
199 } PROCDESKHEAD
, *PPROCDESKHEAD
;
201 typedef struct _PROCMARKHEAD
205 struct _PROCESSINFO
*ppi
;
206 } PROCMARKHEAD
, *PPROCMARKHEAD
;
208 #define UserHMGetHandle(obj) ((obj)->head.h)
210 /* Window Client Information structure */
213 #define WEF_SETBYWNDPTI 0x0001
215 typedef struct tagHOOK
218 struct tagHOOK
*phkNext
; /* This is for user space. */
219 int HookId
; /* Hook table index */
221 ULONG flags
; /* Some internal flags */
223 struct _THREADINFO
*ptiHooked
;
224 struct _DESKTOP
*rpdesk
;
226 LIST_ENTRY Chain
; /* Hook chain entry */
227 HOOKPROC Proc
; /* Hook function */
228 BOOLEAN Ansi
; /* Is it an Ansi hook? */
229 UNICODE_STRING ModuleName
; /* Module name for global hooks */
232 typedef struct tagCLIPBOARDDATA
237 } CLIPBOARDDATA
, *PCLIPBOARDDATA
;
239 /* THREADINFO Flags */
240 #define TIF_INCLEANUP 0x00000001
241 #define TIF_16BIT 0x00000002
242 #define TIF_SYSTEMTHREAD 0x00000004
243 #define TIF_CSRSSTHREAD 0x00000008
244 #define TIF_TRACKRECTVISIBLE 0x00000010
245 #define TIF_ALLOWFOREGROUNDACTIVATE 0x00000020
246 #define TIF_DONTATTACHQUEUE 0x00000040
247 #define TIF_DONTJOURNALATTACH 0x00000080
248 #define TIF_WOW64 0x00000100
249 #define TIF_INACTIVATEAPPMSG 0x00000200
250 #define TIF_SPINNING 0x00000400
251 #define TIF_PALETTEAWARE 0x00000800
252 #define TIF_SHAREDWOW 0x00001000
253 #define TIF_FIRSTIDLE 0x00002000
254 #define TIF_WAITFORINPUTIDLE 0x00004000
255 #define TIF_MOVESIZETRACKING 0x00008000
256 #define TIF_VDMAPP 0x00010000
257 #define TIF_DOSEMULATOR 0x00020000
258 #define TIF_GLOBALHOOKER 0x00040000
259 #define TIF_DELAYEDEVENT 0x00080000
260 #define TIF_MSGPOSCHANGED 0x00100000
261 #define TIF_SHUTDOWNCOMPLETE 0x00200000
262 #define TIF_IGNOREPLAYBACKDELAY 0x00400000
263 #define TIF_ALLOWOTHERACCOUNTHOOK 0x00800000
264 #define TIF_GUITHREADINITIALIZED 0x02000000
265 #define TIF_DISABLEIME 0x04000000
266 #define TIF_INGETTEXTLENGTH 0x08000000
267 #define TIF_ANSILENGTH 0x10000000
268 #define TIF_DISABLEHOOKS 0x20000000
270 typedef struct _CALLBACKWND
275 } CALLBACKWND
, *PCALLBACKWND
;
277 #define CI_TRANSACTION 0x00000001
278 #define CI_QUEUEMSG 0x00000002
279 #define CI_WOW 0x00000004
280 #define CI_INITTHREAD 0x00000008
281 #define CI_CURTHPRHOOK 0x00000010
282 #define CI_CLASSESREGISTERED 0x00000020
283 #define CI_IMMACTIVATE 0x00000040
285 typedef struct _CLIENTINFO
291 DWORD dwCompatFlags2
;
292 DWORD dwTIFlags
; /* ThreadInfo TIF_Xxx flags for User space. */
293 PDESKTOPINFO pDeskInfo
;
294 ULONG_PTR ulClientDelta
;
297 CALLBACKWND CallbackWnd
;
299 INT cInDDEMLCallback
;
300 PCLIENTTHREADINFO pClientThreadInfo
;
301 ULONG_PTR dwHookData
;
304 DWORD dwAsyncKeyCache
;
305 BYTE afAsyncKeyState
[8];
306 BYTE afAsyncKeyStateRecentDow
[8];
311 LPDWORD lpdwRegisteredClasses
;
312 ULONG Win32ClientInfo3
[26];
313 /* It's just a pointer reference not to be used w the structure in user space. */
314 struct _PROCESSINFO
*ppi
;
315 } CLIENTINFO
, *PCLIENTINFO
;
317 /* Make sure it fits into the TEB */
318 C_ASSERT(sizeof(CLIENTINFO
) <= sizeof(((PTEB
)0)->Win32ClientInfo
));
320 #define GetWin32ClientInfo() ((PCLIENTINFO)(NtCurrentTeb()->Win32ClientInfo))
322 typedef struct tagDDEPACK
326 } DDEPACK
, *PDDEPACK
;
328 #define HRGN_NULL ((HRGN)0) /* NULL empty region */
329 #define HRGN_WINDOW ((HRGN)1) /* region from window rcWindow */
330 #define HRGN_MONITOR ((HRGN)2) /* region from monitor region. */
332 /* Menu Item fType. */
333 #define MFT_RTOL 0x6000
335 /* Menu Item fState. */
336 #define MFS_HBMMENUBMP 0x20000000
338 typedef struct tagITEM
343 struct tagMENU
*spSubMenu
; /* Pop-up menu. */
345 HANDLE hbmpUnchecked
;
346 USHORT
*Xlpstr
; /* Item text pointer. */
348 DWORD_PTR dwItemData
;
349 ULONG xItem
; /* Item position. left */
350 ULONG yItem
; /* " top */
351 ULONG cxItem
; /* Item Size Width */
352 ULONG cyItem
; /* " Height */
353 ULONG dxTab
; /* X position of text after Tab */
354 ULONG ulX
; /* underline.. start position */
355 ULONG ulWidth
; /* underline.. width */
356 HBITMAP hbmp
; /* bitmap */
357 INT cxBmp
; /* Width Maximum size of the bitmap items in MIIM_BITMAP state */
358 INT cyBmp
; /* Height " */
360 UNICODE_STRING lpstr
;
363 typedef struct tagMENULIST
365 struct tagMENULIST
*pNext
;
366 struct tagMENU
*pMenu
;
367 } MENULIST
, *PMENULIST
;
369 /* Menu fFlags, upper byte is MNS_X style flags. */
370 #define MNF_POPUP 0x0001
371 #define MNF_UNDERLINE 0x0004
372 #define MNF_INACTIVE 0x0010
373 #define MNF_RTOL 0x0020
374 #define MNF_DESKTOPMN 0x0040
375 #define MNF_SYSDESKMN 0x0080
376 #define MNF_SYSSUBMENU 0x0100
378 #define MNF_SYSMENU 0x0200
380 /* (other FocusedItem values give the position of the focused item) */
381 #define NO_SELECTED_ITEM 0xffff
383 typedef struct tagMENU
386 ULONG fFlags
; /* [Style flags | Menu flags] */
387 INT iItem
; /* nPos of selected item, if -1 not selected. AKA focused item */
388 UINT cAlloced
; /* Number of allocated items. Inc's of 8 */
389 UINT cItems
; /* Number of items in the menu */
390 ULONG cxMenu
; /* Width of the whole menu */
391 ULONG cyMenu
; /* Height of the whole menu */
392 ULONG cxTextAlign
; /* Offset of text when items have both bitmaps and text */
393 struct _WND
*spwndNotify
; /* window receiving the messages for ownerdraw */
394 PITEM rgItems
; /* Array of menu items */
395 struct tagMENULIST
*pParentMenus
; /* If this is SubMenu, list of parents. */
396 DWORD dwContextHelpId
;
397 ULONG cyMax
; /* max height of the whole menu, 0 is screen height */
398 DWORD_PTR dwMenuData
; /* application defined value */
399 HBRUSH hbrBack
; /* brush for menu background */
400 INT iTop
; /* Current scroll position Top */
401 INT iMaxTop
; /* Current scroll position Max Top */
402 DWORD dwArrowsOn
:2; /* Arrows: 0 off, 1 on, 2 to the top, 3 to the bottom. */
404 LIST_ENTRY ListEntry
;
405 HWND hWnd
; /* Window containing the menu, use POPUPMENU */
409 typedef struct tagPOPUPMENU
414 ULONG fIsTrackPopup
:1;
415 ULONG fDroppedLeft
:1;
416 ULONG fHierarchyDropped
:1;
417 ULONG fRightButton
:1;
419 ULONG fSynchronous
:1;
421 ULONG fDropNextPopup
:1;
423 ULONG fAboutToHide
:1;
427 ULONG fDelayedFree
:1;
428 ULONG fFlushDelayedFree
:1;
431 ULONG fTrackMouseEvent
:1;
434 // ULONG fDesktopMenu:1;
436 ULONG fUseMonitorRect
:1;
437 struct _WND
*spwndNotify
;
438 struct _WND
*spwndPopupMenu
;
439 struct _WND
*spwndNextPopup
;
440 struct _WND
*spwndPrevPopup
;
442 PMENU spmenuAlternate
;
443 struct _WND
*spwndActivePopup
;
444 struct tagPOPUPMENU
*ppopupmenuRoot
;
445 struct tagPOPUPMENU
*ppmDelayedFree
;
446 UINT posSelectedItem
;
448 } POPUPMENU
, *PPOPUPMENU
;
450 typedef struct _REGISTER_SYSCLASS
452 /* This is a reactos specific class used to initialize the
453 system window classes during user32 initialization */
462 } REGISTER_SYSCLASS
, *PREGISTER_SYSCLASS
;
464 typedef struct _CLSMENUNAME
466 LPSTR pszClientAnsiMenuName
;
467 LPWSTR pwszClientUnicodeMenuName
;
468 PUNICODE_STRING pusMenuName
;
469 } CLSMENUNAME
, *PCLSMENUNAME
;
471 typedef struct tagSBDATA
479 typedef struct tagSBINFO
486 typedef struct tagSBCALC
508 UserGetCPDA2U
= 0x01, /* " Unicode " */
509 UserGetCPDU2A
= 0X02, /* " Ansi " */
510 UserGetCPDClass
= 0X10,
511 UserGetCPDWindow
= 0X20,
512 UserGetCPDDialog
= 0X40,
513 UserGetCPDWndtoCls
= 0X80
516 typedef struct _CALLPROCDATA
519 struct _CALLPROCDATA
*spcpdNext
;
520 WNDPROC pfnClientPrevious
;
522 } CALLPROCDATA
, *PCALLPROCDATA
;
524 #define CSF_SERVERSIDEPROC 0x0001
525 #define CSF_ANSIPROC 0x0002
526 #define CSF_WOWDEFERDESTROY 0x0004
527 #define CSF_SYSTEMCLASS 0x0008
528 #define CSF_WOWCLASS 0x0010
529 #define CSF_WOWEXTRA 0x0020
530 #define CSF_CACHEDSMICON 0x0040
531 #define CSF_WIN40COMPAT 0x0080
535 struct _CLS
*pclsNext
;
536 RTL_ATOM atomClassName
;
537 ATOM atomNVClassName
;
539 struct _DESKTOP
*rpdeskParent
;
542 PSTR lpszClientAnsiMenuName
; /* For client use */
543 PWSTR lpszClientUnicodeMenuName
; /* " " " */
544 PCALLPROCDATA spcpdFirst
;
545 struct _CLS
*pclsBase
;
546 struct _CLS
*pclsClone
;
547 ULONG cWndReferenceCount
;
553 struct _CURICON_OBJECT
*spicn
;
554 struct _CURICON_OBJECT
*spcur
;
555 HBRUSH hbrBackground
;
556 PWSTR lpszMenuName
; /* kernel use */
557 PSTR lpszAnsiClassName
; /* " */
558 struct _CURICON_OBJECT
*spicnSm
;
560 UINT Unicode
:1; // !CSF_ANSIPROC
561 UINT Global
:1; // CS_GLOBALCLASS or CSF_SERVERSIDEPROC
562 UINT MenuNameIsString
:1;
566 typedef struct _SBINFOEX
568 SCROLLBARINFO ScrollBarInfo
;
569 SCROLLINFO ScrollInfo
;
570 } SBINFOEX
, *PSBINFOEX
;
572 /* State Flags !Not Implemented! */
573 #define WNDS_HASMENU 0X00000001
574 #define WNDS_HASVERTICALSCROOLLBAR 0X00000002
575 #define WNDS_HASHORIZONTALSCROLLBAR 0X00000004
576 #define WNDS_HASCAPTION 0X00000008
577 #define WNDS_SENDSIZEMOVEMSGS 0X00000010
578 #define WNDS_MSGBOX 0X00000020
579 #define WNDS_ACTIVEFRAME 0X00000040
580 #define WNDS_HASSPB 0X00000080
581 #define WNDS_NONCPAINT 0X00000100
582 #define WNDS_SENDERASEBACKGROUND 0X00000200
583 #define WNDS_ERASEBACKGROUND 0X00000400
584 #define WNDS_SENDNCPAINT 0X00000800
585 #define WNDS_INTERNALPAINT 0X00001000
586 #define WNDS_UPDATEDIRTY 0X00002000
587 #define WNDS_HIDDENPOPUP 0X00004000
588 #define WNDS_FORCEMENUDRAW 0X00008000
589 #define WNDS_DIALOGWINDOW 0X00010000
590 #define WNDS_HASCREATESTRUCTNAME 0X00020000
591 #define WNDS_SERVERSIDEWINDOWPROC 0x00040000 /* Call proc inside win32k. */
592 #define WNDS_ANSIWINDOWPROC 0x00080000
593 #define WNDS_BEINGACTIVATED 0x00100000
594 #define WNDS_HASPALETTE 0x00200000
595 #define WNDS_PAINTNOTPROCESSED 0x00400000
596 #define WNDS_SYNCPAINTPENDING 0x00800000
597 #define WNDS_RECEIVEDQUERYSUSPENDMSG 0x01000000
598 #define WNDS_RECEIVEDSUSPENDMSG 0x02000000
599 #define WNDS_TOGGLETOPMOST 0x04000000
600 #define WNDS_REDRAWIFHUNG 0x08000000
601 #define WNDS_REDRAWFRAMEIFHUNG 0x10000000
602 #define WNDS_ANSICREATOR 0x20000000
603 #define WNDS_MAXIMIZESTOMONITOR 0x40000000
604 #define WNDS_DESTROYED 0x80000000
606 #define WNDSACTIVEFRAME 0x00000006
608 /* State2 Flags !Not Implemented! */
609 #define WNDS2_WMPAINTSENT 0X00000001
610 #define WNDS2_ENDPAINTINVALIDATE 0X00000002
611 #define WNDS2_STARTPAINT 0X00000004
612 #define WNDS2_OLDUI 0X00000008
613 #define WNDS2_HASCLIENTEDGE 0X00000010
614 #define WNDS2_BOTTOMMOST 0X00000020
615 #define WNDS2_FULLSCREEN 0X00000040
616 #define WNDS2_INDESTROY 0X00000080
617 #define WNDS2_WIN31COMPAT 0X00000100
618 #define WNDS2_WIN40COMPAT 0X00000200
619 #define WNDS2_WIN50COMPAT 0X00000400
620 #define WNDS2_MAXIMIZEDMONITORREGION 0X00000800
621 #define WNDS2_CLOSEBUTTONDOWN 0X00001000
622 #define WNDS2_MAXIMIZEBUTTONDOWN 0X00002000
623 #define WNDS2_MINIMIZEBUTTONDOWN 0X00004000
624 #define WNDS2_HELPBUTTONDOWN 0X00008000
625 #define WNDS2_SCROLLBARLINEUPBTNDOWN 0X00010000
626 #define WNDS2_SCROLLBARPAGEUPBTNDOWN 0X00020000
627 #define WNDS2_SCROLLBARPAGEDOWNBTNDOWN 0X00040000
628 #define WNDS2_SCROLLBARLINEDOWNBTNDOWN 0X00080000
629 #define WNDS2_ANYSCROLLBUTTONDOWN 0X00100000
630 #define WNDS2_SCROLLBARVERTICALTRACKING 0X00200000
631 #define WNDS2_FORCENCPAINT 0X00400000
632 #define WNDS2_FORCEFULLNCPAINTCLIPRGN 0X00800000
633 #define WNDS2_FULLSCREENMODE 0X01000000
634 #define WNDS2_CAPTIONTEXTTRUNCATED 0X08000000
635 #define WNDS2_NOMINMAXANIMATERECTS 0X10000000
636 #define WNDS2_SMALLICONFROMWMQUERYDRAG 0X20000000
637 #define WNDS2_SHELLHOOKREGISTERED 0X40000000
638 #define WNDS2_WMCREATEMSGPROCESSED 0X80000000
641 #define WS_EX2_CLIPBOARDLISTENER 0X00000001
642 #define WS_EX2_LAYEREDINVALIDATE 0X00000002
643 #define WS_EX2_REDIRECTEDFORPRINT 0X00000004
644 #define WS_EX2_LINKED 0X00000008
645 #define WS_EX2_LAYEREDFORDWM 0X00000010
646 #define WS_EX2_LAYEREDLIMBO 0X00000020
647 #define WS_EX2_HIGHTDPI_UNAWAR 0X00000040
648 #define WS_EX2_VERTICALLYMAXIMIZEDLEFT 0X00000080
649 #define WS_EX2_VERTICALLYMAXIMIZEDRIGHT 0X00000100
650 #define WS_EX2_HASOVERLAY 0X00000200
651 #define WS_EX2_CONSOLEWINDOW 0X00000400
652 #define WS_EX2_CHILDNOACTIVATE 0X00000800
654 #define WPF_MININIT 0x0008
655 #define WPF_MAXINIT 0x0010
663 /* These fields should be moved in the WW at some point. */
664 /* Plese do not change them to keep the same layout with WW. */
667 /* Extended style. */
671 /* Handle of the module that created the window. */
675 struct _WND
*spwndNext
;
676 struct _WND
*spwndPrev
;
677 struct _WND
*spwndParent
;
678 struct _WND
*spwndChild
;
679 struct _WND
*spwndOwner
;
683 /* Pointer to the window class. */
686 /* Property list head.*/
687 LIST_ENTRY PropListHead
;
691 /* system menu handle. */
694 /* Window menu handle or window id */
695 UINT_PTR IDMenu
; // Use spmenu
700 LARGE_UNICODE_STRING strName
;
701 /* Size of the extra data associated with the window. */
703 struct _WND
*spwndLastActive
;
704 HIMC hImc
; // Input context associated with this window.
707 //PD3DMATRIX pTransForm;
708 struct _WND
*spwndClipboardListener
;
717 UINT flags
; /* WPF_ flags. */
720 UINT Unicode
:1; /* !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? */
721 UINT InternalPosInitialized
:1;
722 UINT HideFocus
:1; /* WS_EX_UISTATEFOCUSRECTHIDDEN ? */
723 UINT HideAccel
:1; /* WS_EX_UISTATEKBACCELHIDDEN ? */
726 PSBINFOEX pSBInfoex
; // convert to PSBINFO
727 /* Entry in the list of thread windows. */
728 LIST_ENTRY ThreadListEntry
;
731 #define PWND_BOTTOM ((PWND)1)
733 typedef struct _SBWND
741 typedef struct _MDIWND
748 #define GWLP_MDIWND 4
750 typedef struct _MENUWND
753 PPOPUPMENU ppopupmenu
;
754 } MENUWND
, *PMENUWND
;
756 typedef struct _PFNCLIENT
758 WNDPROC pfnScrollBarWndProc
;
759 WNDPROC pfnTitleWndProc
;
760 WNDPROC pfnMenuWndProc
;
761 WNDPROC pfnDesktopWndProc
;
762 WNDPROC pfnDefWindowProc
;
763 WNDPROC pfnMessageWindowProc
;
764 WNDPROC pfnSwitchWindowProc
;
765 WNDPROC pfnButtonWndProc
;
766 WNDPROC pfnComboBoxWndProc
;
767 WNDPROC pfnComboListBoxProc
;
768 WNDPROC pfnDialogWndProc
;
769 WNDPROC pfnEditWndProc
;
770 WNDPROC pfnListBoxWndProc
;
771 WNDPROC pfnMDIClientWndProc
;
772 WNDPROC pfnStaticWndProc
;
773 WNDPROC pfnImeWndProc
;
774 WNDPROC pfnGhostWndProc
;
775 WNDPROC pfnHkINLPCWPSTRUCT
;
776 WNDPROC pfnHkINLPCWPRETSTRUCT
;
777 WNDPROC pfnDispatchHook
;
778 WNDPROC pfnDispatchDefWindowProc
;
779 WNDPROC pfnDispatchMessage
;
780 WNDPROC pfnMDIActivateDlgProc
;
781 } PFNCLIENT
, *PPFNCLIENT
;
784 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
785 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
789 (CALLBACK
*WNDPROC_EX
)(
796 typedef struct _PFNCLIENTWORKER
798 WNDPROC_EX pfnButtonWndProc
;
799 WNDPROC_EX pfnComboBoxWndProc
;
800 WNDPROC_EX pfnComboListBoxProc
;
801 WNDPROC_EX pfnDialogWndProc
;
802 WNDPROC_EX pfnEditWndProc
;
803 WNDPROC_EX pfnListBoxWndProc
;
804 WNDPROC_EX pfnMDIClientWndProc
;
805 WNDPROC_EX pfnStaticWndProc
;
806 WNDPROC_EX pfnImeWndProc
;
807 WNDPROC_EX pfnGhostWndProc
;
808 WNDPROC_EX pfnCtfHookProc
;
809 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
819 /* FNID's for NtUserSetWindowFNID, NtUserMessageCall */
820 #define FNID_FIRST 0x029A
821 #define FNID_SCROLLBAR 0x029A
822 #define FNID_ICONTITLE 0x029B
823 #define FNID_MENU 0x029C
824 #define FNID_DESKTOP 0x029D
825 #define FNID_DEFWINDOWPROC 0x029E
826 #define FNID_MESSAGEWND 0x029F
827 #define FNID_SWITCH 0x02A0
828 #define FNID_BUTTON 0x02A1
829 #define FNID_COMBOBOX 0x02A2
830 #define FNID_COMBOLBOX 0x02A3
831 #define FNID_DIALOG 0x02A4
832 #define FNID_EDIT 0x02A5
833 #define FNID_LISTBOX 0x02A6
834 #define FNID_MDICLIENT 0x02A7
835 #define FNID_STATIC 0x02A8
836 #define FNID_IME 0x02A9
837 #define FNID_GHOST 0x02AA
838 #define FNID_CALLWNDPROC 0x02AB
839 #define FNID_CALLWNDPROCRET 0x02AC
840 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
841 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
842 #define FNID_MB_DLGPROC 0x02AF
843 #define FNID_MDIACTIVATEDLGPROC 0x02B0
844 #define FNID_SENDMESSAGE 0x02B1
845 #define FNID_SENDMESSAGEFF 0x02B2
846 /* Kernel has option to use TimeOut or normal msg send, based on type of msg. */
847 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
848 #define FNID_SENDMESSAGECALLPROC 0x02B4
849 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
850 #define FNID_TOOLTIPS 0x02B6
851 #define FNID_SENDNOTIFYMESSAGE 0x02B7
852 #define FNID_SENDMESSAGECALLBACK 0x02B8
853 #define FNID_LAST 0x02B9
855 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
856 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
858 #define FNID_DDEML 0x2000 /* Registers DDEML */
859 #define FNID_DESTROY 0x4000 /* This is sent when WM_NCDESTROY or in the support routine. */
860 /* Seen during WM_CREATE on error exit too. */
861 #define FNID_FREED 0x8000 /* Window being Freed... */
863 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
865 #define GETPFNCLIENTA(fnid) \
866 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
867 #define GETPFNCLIENTW(fnid) \
868 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
870 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
872 /* ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays */
873 #define ICLS_BUTTON 0
875 #define ICLS_STATIC 2
876 #define ICLS_LISTBOX 3
877 #define ICLS_SCROLLBAR 4
878 #define ICLS_COMBOBOX 5
879 #define ICLS_MDICLIENT 6
880 #define ICLS_COMBOLBOX 7
881 #define ICLS_DDEMLEVENT 8
882 #define ICLS_DDEMLMOTHER 9
883 #define ICLS_DDEML16BIT 10
884 #define ICLS_DDEMLCLIENTA 11
885 #define ICLS_DDEMLCLIENTW 12
886 #define ICLS_DDEMLSERVERA 13
887 #define ICLS_DDEMLSERVERW 14
889 #define ICLS_GHOST 16
890 #define ICLS_DESKTOP 17
891 #define ICLS_DIALOG 18
893 #define ICLS_SWITCH 20
894 #define ICLS_ICONTITLE 21
895 #define ICLS_TOOLTIPS 22
896 #if (_WIN32_WINNT <= 0x0501)
897 #define ICLS_UNKNOWN 22
898 #define ICLS_NOTUSED 23
900 #define ICLS_SYSSHADOW 23
901 #define ICLS_HWNDMESSAGE 24
902 #define ICLS_NOTUSED 25
906 #define COLOR_LAST COLOR_MENUBAR
907 #define MAX_MB_STRINGS 11
909 #define SRVINFO_DBCSENABLED 0x0002
910 #define SRVINFO_IMM32 0x0004
911 #define SRVINFO_APIHOOK 0x0010
912 #define SRVINFO_METRICS 0x0020
913 #define SRVINFO_KBDPREF 0x0080
915 #define NUM_SYSCOLORS 31
917 typedef struct tagOEMBITMAPINFO
923 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
925 typedef enum _OBI_TYPES
936 typedef struct tagMBSTRING
941 } MBSTRING
, *PMBSTRING
;
943 typedef struct tagDPISERVERINFO
945 INT gclBorder
; /* 000 */
946 HFONT hCaptionFont
; /* 004 */
947 HFONT hMsgFont
; /* 008 */
948 INT cxMsgFontChar
; /* 00C */
949 INT cyMsgFontChar
; /* 010 */
950 UINT wMaxBtnSize
; /* 014 */
951 } DPISERVERINFO
, *PDPISERVERINFO
;
954 #define PUSIF_PALETTEDISPLAY 0x01
955 #define PUSIF_SNAPTO 0x02
956 #define PUSIF_COMBOBOXANIMATION 0x04
957 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
958 #define PUSIF_KEYBOARDCUES 0x20
960 typedef struct _PERUSERSERVERINFO
962 INT aiSysMet
[SM_CMETRICS
];
963 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
964 COLORREF argbSystem
[NUM_SYSCOLORS
];
965 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
969 DWORD dwLastRITEventTickCount
;
974 UINT ucWheelScrollLines
;
975 UINT ucWheelScrollChars
;
976 INT wMaxLeftOverlapChars
;
977 INT wMaxRightOverlapChars
;
980 TEXTMETRICW tmSysFont
;
981 DPISERVERINFO dpiSystem
;
982 HICON hIconSmWindows
;
985 DWORD dwAsyncKeyCache
;
987 OEMBITMAPINFO oembmi
[OBI_CTYPES
];
996 DWORD dwLastSystemRITEventTickCountUpdate
;
997 ULONG adwDBGTAGFlags
[35];
1000 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
1002 typedef struct tagSERVERINFO
1005 ULONG_PTR cHandleEntries
;
1006 PFN_FNID mpFnidPfn
[FNID_NUM
];
1007 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
1008 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
1009 PFNCLIENT apfnClientA
;
1010 PFNCLIENT apfnClientW
;
1011 PFNCLIENTWORKER apfnClientWorker
;
1012 ULONG cbHandleTable
;
1013 ATOM atomSysClass
[ICLS_NOTUSED
+1];
1014 DWORD dwDefaultHeapBase
;
1015 DWORD dwDefaultHeapSize
;
1017 MBSTRING MBStrings
[MAX_MB_STRINGS
];
1018 ATOM atomIconSmProp
;
1020 ATOM atomContextHelpIdProp
;
1021 ATOM atomFrostedWindowProp
;
1022 CHAR acOemToAnsi
[256];
1023 CHAR acAnsiToOem
[256];
1024 DWORD dwInstalledEventHooks
;
1026 } SERVERINFO
, *PSERVERINFO
;
1029 C_ASSERT(sizeof(SERVERINFO
) <= PAGE_SIZE
);
1033 /* Server event activity bits. */
1034 #define SRV_EVENT_MENU 0x0001
1035 #define SRV_EVENT_END_APPLICATION 0x0002
1036 #define SRV_EVENT_RUNNING 0x0004
1037 #define SRV_EVENT_NAMECHANGE 0x0008
1038 #define SRV_EVENT_VALUECHANGE 0x0010
1039 #define SRV_EVENT_STATECHANGE 0x0020
1040 #define SRV_EVENT_LOCATIONCHANGE 0x0040
1041 #define SRV_EVENT_CREATE 0x8000
1043 typedef struct _PROPLISTITEM
1047 } PROPLISTITEM
, *PPROPLISTITEM
;
1049 #define PROPERTY_FLAG_SYSTEM 1
1051 typedef struct _PROPERTY
1053 LIST_ENTRY PropListEntry
;
1057 } PROPERTY
, *PPROPERTY
;
1059 typedef struct _BROADCASTPARM
1066 } BROADCASTPARM
, *PBROADCASTPARM
;
1068 struct _THREADINFO
*GetW32ThreadInfo(VOID
);
1069 struct _PROCESSINFO
*GetW32ProcessInfo(VOID
);
1071 typedef struct _WNDMSG
1077 typedef struct _SHAREDINFO
1079 PSERVERINFO psi
; /* global Server Info */
1080 PVOID aheList
; /* Handle Entry List */
1081 PVOID pDispInfo
; /* global PDISPLAYINFO pointer */
1082 ULONG_PTR ulSharedDelta
; /* Heap delta */
1083 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
1084 WNDMSG DefWindowMsgs
;
1085 WNDMSG DefWindowSpecMsgs
;
1086 } SHAREDINFO
, *PSHAREDINFO
;
1088 /* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */
1089 typedef struct _USERCONNECT
1092 ULONG ulCurrentVersion
;
1093 DWORD dwDispatchCount
;
1094 SHAREDINFO siClient
;
1095 } USERCONNECT
, *PUSERCONNECT
;
1097 /* WinNT 5.0 compatible user32 / win32k */
1098 #define USER_VERSION MAKELONG(0x0000, 0x0005)
1100 #if defined(_M_IX86)
1101 C_ASSERT(sizeof(USERCONNECT
) == 0x124);
1104 typedef struct tagGETCLIPBDATA
1113 } GETCLIPBDATA
, *PGETCLIPBDATA
;
1115 typedef struct tagSETCLIPBDATA
1118 BOOL fIncSerialNumber
;
1119 } SETCLIPBDATA
, *PSETCLIPBDATA
;
1121 /* Used with NtUserSetCursorIconData, last parameter. */
1122 typedef struct tagCURSORDATA
1128 ULONG CURSORF_flags
;
1135 HBITMAP hbmUserAlpha
; /* Could be in W7U, not in W2k */
1141 struct tagCURSORDATA
*aspcur
;
1145 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1147 /* CURSORF_flags: */
1148 #define CURSORF_FROMRESOURCE 0x0001
1149 #define CURSORF_GLOBAL 0x0002
1150 #define CURSORF_LRSHARED 0x0004
1151 #define CURSORF_ACON 0x0008
1152 #define CURSORF_WOWCLEANUP 0x0010
1153 #define CURSORF_ACONFRAME 0x0040
1154 #define CURSORF_SECRET 0x0080
1155 #define CURSORF_LINKED 0x0100
1156 #define CURSORF_CURRENT 0x0200
1158 typedef struct tagIMEINFOEX
1162 WCHAR wszUIClass
[16];
1163 ULONG fdwInitConvMode
;
1166 DWORD dwProdVersion
;
1167 DWORD dwImeWinVersion
;
1168 WCHAR wszImeDescription
[50];
1169 WCHAR wszImeFile
[80];
1172 INT fSysWow64Only
:1;
1175 } IMEINFOEX
, *PIMEINFOEX
;
1177 typedef struct tagIMEUI
1190 UINT fChildThreadDef
:1;
1191 UINT fCtrlShowStatus
:1;
1192 UINT fFreeActiveEvent
:1;
1196 /* Window Extra data container. */
1197 typedef struct _IMEWND
1205 NtUserAssociateInputContext(
1212 NtUserBuildHimcList(
1229 NtUserCheckMenuItem(
1236 NtUserCtxDisplayIOCtl(
1243 NtUserDbgWin32HeapFail(
1249 NtUserDbgWin32HeapStat(
1267 NtUserDrawMenuBarTemp(
1276 NtUserEnableMenuItem(
1283 NtUserEndMenu(VOID
);
1287 NtUserGetMenuBarInfo(
1301 NtUserGetMenuItemRect(
1309 NtUserGetSystemMenu(
1315 NtUserHiliteMenuItem(
1323 NtUserMenuItemFromPoint(
1345 NtUserSetMenuContextHelpId(
1347 DWORD dwContextHelpId
);
1351 NtUserSetMenuDefaultItem(
1358 NtUserSetMenuFlagRtoL(
1363 NtUserSetSystemMenu(
1369 NtUserThunkedMenuInfo(
1375 NtUserThunkedMenuItemInfo(
1380 LPMENUITEMINFOW lpmii
,
1381 PUNICODE_STRING lpszCaption
);
1385 NtUserTrackPopupMenuEx(
1395 NtUserActivateKeyboardLayout(
1401 NtUserAlterWindowStyle(
1408 NtUserAttachThreadInput(
1410 IN DWORD idAttachTo
,
1437 NtUserBuildHwndList(
1448 NtUserBuildNameList(
1452 PULONG pRequiredSize
);
1456 NtUserBuildPropList(
1462 /* apfnSimpleCall indices from Windows XP SP 2 */
1463 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1464 #define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */
1466 enum SimpleCallRoutines
1468 NOPARAM_ROUTINE_CREATEMENU
,
1469 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1470 #if (WIN32K_VERSION >= NTDDI_VISTA)
1471 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1472 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1473 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1474 NOPARAM_ROUTINE_DESTROY_CARET
,
1476 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1477 #if (WIN32K_VERSION < NTDDI_VISTA)
1478 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1479 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1480 NOPARAM_ROUTINE_DESTROY_CARET
,
1482 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1483 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1484 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1485 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1486 #if (WIN32K_VERSION >= NTDDI_VISTA)
1487 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1489 NOPARAM_ROUTINE_GETREMOTEPROCESSID
,
1491 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1492 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1493 #if (WIN32K_VERSION >= NTDDI_VISTA)
1494 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1495 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1497 NOPARAM_ROUTINE_RELEASECAPTURE
,
1498 NOPARAM_ROUTINE_RESETDBLCLICK
,
1499 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1500 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1501 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1502 NOPARAM_ROUTINE_REMOTELOGOFF
,
1503 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1504 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1505 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1506 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1507 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1508 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1509 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1510 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1511 #if (WIN32K_VERSION >= NTDDI_VISTA)
1512 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1514 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1515 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1516 #if (WIN32K_VERSION < NTDDI_VISTA)
1517 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1519 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1520 #if (WIN32K_VERSION >= NTDDI_VISTA)
1521 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1523 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1524 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1525 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1526 #if (WIN32K_VERSION < NTDDI_VISTA)
1527 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1529 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1530 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1531 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1532 #if (WIN32K_VERSION < NTDDI_VISTA)
1533 ONEPARAM_ROUTINE_GETCURSORPOS
,
1535 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1536 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1537 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1538 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1539 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1540 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1541 #if (WIN32K_VERSION < NTDDI_VISTA)
1542 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1544 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1545 ONEPARAM_ROUTINE_LOADFONTS
,
1546 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1547 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1548 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1549 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1550 #if (WIN32K_VERSION < NTDDI_VISTA)
1551 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1553 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1554 ONEPARAM_ROUTINE_REGISTERLPK
,
1555 #if (WIN32K_VERSION >= NTDDI_VISTA)
1556 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1558 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1559 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1560 ONEPARAM_ROUTINE_RELEASEDC
,
1561 #if (WIN32K_VERSION >= NTDDI_VISTA)
1562 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1564 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1565 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1566 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1567 #if (WIN32K_VERSION < NTDDI_VISTA)
1568 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1570 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1571 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1572 #if (WIN32K_VERSION >= NTDDI_VISTA)
1573 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1575 ONEPARAM_ROUTINE_SHOWCURSOR
,
1576 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1577 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1578 X_ROUTINE_WOWMODULEUNLOAD
,
1579 #if (WIN32K_VERSION < NTDDI_VISTA)
1580 X_ROUTINE_REMOTENOTIFY
,
1582 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1583 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1584 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1585 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1586 HWND_ROUTINE_SETMSGBOX
,
1587 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1588 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1589 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1590 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1591 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1592 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1593 HWNDPARAM_ROUTINE_SETVISIBLE
,
1594 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1595 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1596 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1597 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1598 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1599 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1600 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1601 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1602 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1603 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1604 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1605 HWNDLOCK_ROUTINE_SETSYSMENU
,
1606 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1607 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1608 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1609 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1610 TWOPARAM_ROUTINE_REDRAWTITLE
,
1611 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1612 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1613 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1614 TWOPARAM_ROUTINE_VALIDATERGN
,
1615 #if (WIN32K_VERSION >= NTDDI_VISTA)
1616 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1617 TWOPARAM_ROUTINE_GETCURSORPOS
,
1619 TWOPARAM_ROUTINE_GETHDEVNAME
,
1620 TWOPARAM_ROUTINE_INITANSIOEM
,
1621 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1622 #if (WIN32K_VERSION >= NTDDI_VISTA)
1623 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1625 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1626 #if (WIN32K_VERSION >= NTDDI_VISTA)
1627 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1629 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1631 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1632 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1633 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1634 TWOPARAM_ROUTINE_SETCARETPOS
,
1635 TWOPARAM_ROUTINE_SETCURSORPOS
,
1636 #if (WIN32K_VERSION >= NTDDI_VISTA)
1637 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1639 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1640 TWOPARAM_ROUTINE_WOWCLEANUP
1663 NtUserCallHwndParam(
1670 NtUserCallHwndParamLock(
1677 NtUserCallMsgFilter(
1683 NtUserCallNextHookEx(
1709 NtUserChangeClipboardChain(
1715 NtUserChangeDisplaySettings(
1716 PUNICODE_STRING lpszDeviceName
,
1717 LPDEVMODEW lpDevMode
,
1723 NtUserCheckDesktopByThreadId(
1728 NtUserCheckWindowThreadDesktop(
1735 NtUserCheckImeHotKey(
1740 NtUserChildWindowFromPointEx(
1753 NtUserCloseClipboard(VOID
);
1762 NtUserCloseWindowStation(
1765 /* Console commands for NtUserConsoleControl */
1766 typedef enum _CONSOLECONTROL
1768 ConsoleCtrlDesktopConsoleThread
= 0,
1769 GuiConsoleWndClassAtom
= 1,
1770 ConsoleMakePalettePublic
= 5,
1771 ConsoleAcquireDisplayOwnership
,
1772 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1774 typedef struct _DESKTOP_CONSOLE_THREAD
1776 HDESK DesktopHandle
;
1778 } DESKTOP_CONSOLE_THREAD
, *PDESKTOP_CONSOLE_THREAD
;
1782 NtUserConsoleControl(
1783 IN CONSOLECONTROL ConsoleCtrl
,
1784 IN PVOID ConsoleCtrlInfo
,
1785 IN ULONG ConsoleCtrlInfoLength
);
1789 NtUserConvertMemHandle(
1795 NtUserCopyAcceleratorTable(
1798 ULONG EntriesCount
);
1802 NtUserCountClipboardFormats(VOID
);
1806 NtUserCreateAcceleratorTable(
1808 ULONG EntriesCount
);
1820 NtUserCreateDesktop(
1821 POBJECT_ATTRIBUTES poa
,
1822 PUNICODE_STRING lpszDesktopDevice
,
1825 ACCESS_MASK dwDesiredAccess
);
1829 NtUserCreateInputContext(
1834 NtUserCreateLocalMemHandle(
1842 NtUserCreateWindowEx(
1844 PLARGE_STRING plstrClassName
,
1845 PLARGE_STRING plstrClsVersion
,
1846 PLARGE_STRING plstrWindowName
,
1854 HINSTANCE hInstance
,
1861 NtUserCreateWindowStation(
1862 POBJECT_ATTRIBUTES ObjectAttributes
,
1863 ACCESS_MASK dwDesiredAccess
,
1872 NtUserDdeGetQualityOfService(
1875 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1879 NtUserDdeInitialize(
1888 NtUserDdeSetQualityOfService(
1890 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1891 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1895 NtUserDeferWindowPos(
1898 HWND WndInsertAfter
,
1909 PLARGE_STRING WindowText
);
1913 NtUserDestroyAcceleratorTable(
1918 NtUserDestroyCursor(
1924 NtUserDestroyInputContext(
1929 NtUserDestroyWindow(
1934 NtUserDisableThreadIme(
1939 NtUserDispatchMessage(
1959 NtUserDrawAnimatedRects(
1975 NtUserDrawCaptionTemp(
1981 const PUNICODE_STRING str
,
1984 /* Used with NtUserDrawIconEx, last parameter. */
1985 typedef struct _DRAWICONEXDATA
1991 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
2003 HBRUSH hbrFlickerFreeDraw
,
2010 NtUserEmptyClipboard(VOID
);
2014 NtUserEnableScrollBar(
2021 NtUserEndDeferWindowPosEx(
2029 CONST PAINTSTRUCT
*lPs
);
2033 NtUserEnumDisplayDevices(
2034 PUNICODE_STRING lpDevice
, /* device name */
2035 DWORD iDevNum
, /* display device */
2036 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
2037 DWORD dwFlags
); /* reserved */
2042 NtUserEnumDisplayMonitors(
2045 MONITORENUMPROC lpfnEnum,
2048 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
2051 NtUserEnumDisplayMonitors(
2052 OPTIONAL IN HDC hDC
,
2053 OPTIONAL IN LPCRECT pRect
,
2054 OPTIONAL OUT HMONITOR
*hMonitorList
,
2055 OPTIONAL OUT LPRECT monitorRectList
,
2056 OPTIONAL IN DWORD listSize
);
2061 NtUserEnumDisplaySettings(
2062 PUNICODE_STRING lpszDeviceName
,
2064 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
2074 NtUserExcludeUpdateRgn(
2090 HWND hwndChildAfter
,
2091 PUNICODE_STRING ucClassName
,
2092 PUNICODE_STRING ucWindowName
,
2097 NtUserFlashWindowEx(
2098 IN PFLASHWINFO pfwi
);
2102 NtUserGetAltTabInfo(
2118 NtUserGetAppImeLevel(
2123 NtUserGetAsyncKeyState(
2126 _Success_(return != 0)
2127 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return * 2 + 2))
2132 _Inout_ PUNICODE_STRING pustrName
);
2136 NtUserGetCaretBlinkTime(VOID
);
2146 HINSTANCE hInstance
,
2147 PUNICODE_STRING ClassName
,
2149 LPWSTR
*ppszMenuName
,
2156 BOOL Real
, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */
2157 PUNICODE_STRING ClassName
);
2161 NtUserGetClipboardData(
2163 PGETCLIPBDATA pgcd
);
2167 NtUserGetClipboardFormatName(
2169 LPWSTR lpszFormatName
,
2174 NtUserGetClipboardOwner(VOID
);
2178 NtUserGetClipboardSequenceNumber(VOID
);
2182 NtUserGetClipboardViewer(VOID
);
2186 NtUserGetClipCursor(
2191 NtUserGetComboBoxInfo(
2193 PCOMBOBOXINFO pcbi
);
2197 NtUserGetControlBrush(
2204 NtUserGetControlColor(
2219 NtUserGetCursorFrameInfo(
2227 NtUserGetCursorInfo(
2244 NtUserGetDoubleClickTime(VOID
);
2248 NtUserGetForegroundWindow(VOID
);
2252 NtUserGetGuiResources(
2258 NtUserGetGUIThreadInfo(
2260 LPGUITHREADINFO lpgui
);
2262 _Success_(return != FALSE
)
2266 _In_ HANDLE hCurIcon
,
2267 _Out_opt_ PICONINFO IconInfo
,
2268 _Inout_opt_ PUNICODE_STRING lpInstName
,
2269 _Inout_opt_ PUNICODE_STRING lpResName
,
2270 _Out_opt_ LPDWORD pbpp
,
2271 _In_ BOOL bInternal
);
2292 PIMEINFOEX pImeInfoEx
,
2297 NtUserGetInternalWindowPos(
2304 NtUserGetKeyboardLayout(
2309 NtUserGetKeyboardLayoutList(
2315 NtUserGetKeyboardLayoutName(
2320 NtUserGetKeyboardState(
2325 NtUserGetKeyboardType(
2330 NtUserGetKeyNameText(
2342 NtUserGetLayeredWindowAttributes(
2350 NtUserGetListBoxInfo(
2363 NtUserGetMouseMovePointsEx(
2365 LPMOUSEMOVEPOINT lppt
,
2366 LPMOUSEMOVEPOINT lpptBuf
,
2372 NtUserGetObjectInformation(
2375 PVOID pvInformation
,
2377 PDWORD nLengthNeeded
);
2381 NtUserGetOpenClipboardWindow(VOID
);
2385 NtUserGetPriorityClipboardFormat(
2386 UINT
*paFormatPriorityList
,
2391 NtUserGetProcessWindowStation(VOID
);
2395 NtUserGetRawInputBuffer(
2402 NtUserGetRawInputData(
2403 HRAWINPUT hRawInput
,
2411 NtUserGetRawInputDeviceInfo(
2419 NtUserGetRawInputDeviceList(
2420 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2421 PUINT puiNumDevices
,
2426 NtUserGetRegisteredRawInputDevices(
2427 PRAWINPUTDEVICE pRawInputDevices
,
2428 PUINT puiNumDevices
,
2433 NtUserGetScrollBarInfo(
2436 PSCROLLBARINFO psbi
);
2440 NtUserGetThreadDesktop(
2444 enum ThreadStateRoutines
2446 THREADSTATE_GETTHREADINFO
,
2447 THREADSTATE_INSENDMESSAGE
,
2448 THREADSTATE_FOCUSWINDOW
,
2449 THREADSTATE_ACTIVEWINDOW
,
2450 THREADSTATE_CAPTUREWINDOW
,
2451 THREADSTATE_PROGMANWINDOW
,
2452 THREADSTATE_TASKMANWINDOW
,
2453 THREADSTATE_GETMESSAGETIME
,
2454 THREADSTATE_GETINPUTSTATE
,
2455 THREADSTATE_UPTIMELASTREAD
,
2456 THREADSTATE_FOREGROUNDTHREAD
,
2457 THREADSTATE_GETCURSOR
,
2458 THREADSTATE_GETMESSAGEEXTRAINFO
2463 NtUserGetThreadState(
2468 NtUserGetTitleBarInfo(
2474 NtUserGetUpdateRect(
2493 NtUserGetWindowPlacement(
2495 WINDOWPLACEMENT
*lpwndpl
);
2500 HINSTANCE hInstance
,
2501 PUNICODE_STRING ClassName
);
2505 NtUserHardErrorControl(
2512 NtUserImpersonateDdeClientWindow(
2520 HANDLE hPowerRequestEvent
,
2521 HANDLE hMediaRequestEvent
);
2525 NtUserInitializeClientPfnArrays(
2526 PPFNCLIENT pfnClientA
,
2527 PPFNCLIENT pfnClientW
,
2528 PPFNCLIENTWORKER pfnClientWorker
,
2529 HINSTANCE hmodUser
);
2549 NtUserInternalGetWindowText(
2556 NtUserInvalidateRect(
2563 NtUserInvalidateRgn(
2570 NtUserIsClipboardFormatAvailable(
2581 NtUserLoadKeyboardLayoutEx(
2584 IN PUNICODE_STRING puszKeyboardName
,
2586 IN PUNICODE_STRING puszKLID
,
2592 NtUserLockWindowStation(
2593 HWINSTA hWindowStation
);
2597 NtUserLockWindowUpdate(
2602 NtUserLockWorkStation(VOID
);
2606 NtUserMapVirtualKeyEx(
2612 typedef struct tagDOSENDMESSAGE
2618 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2627 ULONG_PTR ResultInfo
,
2628 DWORD dwType
, /* FNID_XX types */
2635 UINT cmd
, /* Wine SW_ commands */
2640 NtUserMNDragLeave(VOID
);
2650 NtUserModifyUserStartupInfoFlags(
2667 NtUserNotifyIMEStatus(
2674 NtUserNotifyProcessCreate(
2675 HANDLE NewProcessId
,
2676 HANDLE ParentThreadId
,
2682 NtUserNotifyWinEvent(
2690 NtUserOpenClipboard(
2697 POBJECT_ATTRIBUTES ObjectAttributes
,
2699 ACCESS_MASK dwDesiredAccess
);
2703 NtUserOpenInputDesktop(
2706 ACCESS_MASK dwDesiredAccess
);
2710 NtUserOpenWindowStation(
2711 POBJECT_ATTRIBUTES ObjectAttributes
,
2712 ACCESS_MASK dwDesiredAccess
);
2725 ULONG right
, // width, // Scale the edge thickness, offset?
2727 BOOL bActive
); // DWORD Flags); DC_ACTIVE or WS_ACTIVECAPTION, by checking WNDS_ACTIVEFRAME and foreground.
2748 NtUserPostThreadMessage(
2763 NtUserProcessConnect(
2764 IN HANDLE ProcessHandle
,
2765 OUT PUSERCONNECT pUserConnect
,
2766 IN ULONG Size
); /* sizeof(USERCONNECT) */
2770 NtUserQueryInformationThread(
2771 IN HANDLE ThreadHandle
,
2772 IN USERTHREADINFOCLASS ThreadInformationClass
,
2773 OUT PVOID ThreadInformation
,
2774 IN ULONG ThreadInformationLength
);
2778 NtUserQueryInputContext(
2784 NtUserQuerySendMessage(
2789 NtUserQueryUserCounters(
2796 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2797 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2798 #define QUERY_WINDOW_ACTIVE 0x02
2799 #define QUERY_WINDOW_FOCUS 0x03
2800 #define QUERY_WINDOW_ISHUNG 0x04
2801 #define QUERY_WINDOW_REAL_ID 0x05
2802 #define QUERY_WINDOW_FOREGROUND 0x06
2812 NtUserRealInternalGetMessage(
2822 NtUserRealChildWindowFromPoint(
2829 NtUserRealWaitMessageEx(
2837 CONST RECT
*lprcUpdate
,
2843 NtUserRegisterClassExWOW(
2845 PUNICODE_STRING pustrClassName
,
2846 PUNICODE_STRING pustrCVersion
,
2847 PCLSMENUNAME pClassMenuName
,
2854 NtUserRegisterRawInputDevices(
2855 IN PCRAWINPUTDEVICE pRawInputDevices
,
2856 IN UINT uiNumDevices
,
2861 NtUserRegisterUserApiHook(
2862 PUNICODE_STRING m_dllname1
,
2863 PUNICODE_STRING m_funname1
,
2869 NtUserRegisterHotKey(
2877 NtUserRegisterTasklist(
2882 NtUserRegisterWindowMessage(
2883 PUNICODE_STRING MessageName
);
2887 NtUserRemoteConnect(
2894 NtUserRemoteRedrawRectangle(
2902 NtUserRemoteRedrawScreen(VOID
);
2906 NtUserRemoteStopScreenUpdates(VOID
);
2916 NtUserResolveDesktop(
2917 IN HANDLE ProcessHandle
,
2918 IN PUNICODE_STRING DesktopPath
,
2920 OUT HWINSTA
* phWinSta
);
2924 NtUserResolveDesktopForWOW(
2941 CONST RECT
*lprcScroll
,
2942 CONST RECT
*lprcClip
,
2948 NtUserScrollWindowEx(
2953 const RECT
*clipRect
,
2967 NtUserSetActiveWindow(
2972 NtUserSetAppImeLevel(
2986 ULONG_PTR dwNewLong
,
2998 NtUserSetClipboardData(
3005 NtUserSetClipboardViewer(
3006 HWND hWndNewViewer
);
3010 NtUserSelectPalette(
3013 BOOL ForceBackground
);
3017 NtUserSetConsoleReserveKeys(
3028 NtUserSetCursorContents(
3030 PICONINFO IconInfo
);
3034 NtUserSetCursorIconData(
3035 _In_ HCURSOR hCursor
,
3036 _In_opt_ PUNICODE_STRING pustrModule
,
3037 _In_opt_ PUNICODE_STRING puSrcName
,
3038 _In_
const CURSORDATA
*pCursorData
);
3040 typedef struct _tagFINDEXISTINGCURICONPARAM
3045 } FINDEXISTINGCURICONPARAM
;
3049 NtUserFindExistingCursorIcon(
3050 _In_ PUNICODE_STRING pustrModule
,
3051 _In_ PUNICODE_STRING pustrRsrc
,
3052 _In_ FINDEXISTINGCURICONPARAM
*param
);
3062 NtUserSetDbgTagCount(
3082 PIMEINFOEX pImeInfoEx
);
3086 NtUserSetImeOwnerWindow(
3092 NtUserSetInformationProcess(
3100 NtUserSetInformationThread(
3101 IN HANDLE ThreadHandle
,
3102 IN USERTHREADINFOCLASS ThreadInformationClass
,
3103 IN PVOID ThreadInformation
,
3104 IN ULONG ThreadInformationLength
);
3108 NtUserSetInternalWindowPos(
3116 NtUserSetKeyboardState(
3121 NtUserSetLayeredWindowAttributes(
3129 NtUserSetLogonNotifyWindow(
3134 NtUserSetObjectInformation(
3137 PVOID pvInformation
,
3144 HWND hWndNewParent
);
3148 NtUserSetProcessWindowStation(
3149 HWINSTA hWindowStation
);
3165 NtUserSetScrollInfo(
3173 NtUserSetShellWindowEx(
3175 HWND hwndShellListView
);
3181 IN CONST INT
*lpaElements
,
3182 IN CONST COLORREF
*lpaRgbValues
,
3187 NtUserSetSystemCursor(
3193 NtUserSetThreadDesktop(
3198 NtUserSetThreadState(
3204 NtUserSetSystemTimer(
3208 TIMERPROC lpTimerFunc
);
3212 NtUserSetThreadLayoutHandles(
3222 TIMERPROC lpTimerFunc
);
3226 NtUserSetWindowFNID(
3232 NtUserSetWindowLong(
3241 NtUserSetWindowLongPtr(
3250 NtUserSetWindowPlacement(
3252 WINDOWPLACEMENT
*lpwndpl
);
3258 HWND hWndInsertAfter
,
3274 NtUserSetWindowsHookAW(
3281 NtUserSetWindowsHookEx(
3283 PUNICODE_STRING ModuleName
,
3291 NtUserSetWindowStationUser(
3292 IN HWINSTA hWindowStation
,
3294 IN PSID psid OPTIONAL
,
3299 NtUserSetWindowWord(
3306 NtUserSetWinEventHook(
3309 HMODULE hmodWinEventProc
,
3310 PUNICODE_STRING puString
,
3311 WINEVENTPROC lpfnWinEventProc
,
3328 NtUserShowScrollBar(
3341 NtUserShowWindowAsync(
3347 NtUserSoundSentry(VOID
);
3351 NtUserSwitchDesktop(
3356 NtUserSystemParametersInfo(
3364 NtUserTestForInteractiveUser(
3380 NtUserTrackMouseEvent(
3381 LPTRACKMOUSEEVENT lpEventTrack
);
3385 NtUserTranslateAccelerator(
3392 NtUserTranslateMessage(
3398 NtUserUnhookWindowsHookEx(
3403 NtUserUnhookWinEvent(
3404 HWINEVENTHOOK hWinEventHook
);
3408 NtUserUnloadKeyboardLayout(
3413 NtUserUnlockWindowStation(
3414 HWINSTA hWindowStation
);
3418 NtUserUnregisterClass(
3419 PUNICODE_STRING ClassNameOrAtom
,
3420 HINSTANCE hInstance
,
3421 PCLSMENUNAME pClassMenuName
);
3425 NtUserUnregisterHotKey(
3431 NtUserUnregisterUserApiHook(VOID
);
3435 NtUserUpdateInputContext(
3442 NtUserUpdateInstance(
3449 NtUserUpdateLayeredWindow(
3457 BLENDFUNCTION
*pblend
,
3463 NtUserUpdatePerUserSystemParameters(
3469 NtUserUserHandleGrantAccess(
3470 IN HANDLE hUserHandle
,
3476 NtUserValidateHandleSecure(
3483 CONST RECT
*lpRect
);
3487 NtUserValidateTimerCallback(
3499 NtUserWaitForInputIdle(
3501 IN DWORD dwMilliseconds
,
3502 IN BOOL Unknown2
); /* Always FALSE */
3506 NtUserWaitForMsgAndEvent(
3511 NtUserWaitMessage(VOID
);
3515 NtUserWin32PoolAllocationStats(
3525 NtUserWindowFromPoint(
3531 NtUserYieldTask(VOID
);
3534 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3537 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3538 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3539 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3540 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3541 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051
3542 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052
3544 #define MSQ_STATE_CAPTURE 0x1
3545 #define MSQ_STATE_ACTIVE 0x2
3546 #define MSQ_STATE_FOCUS 0x3
3547 #define MSQ_STATE_MENUOWNER 0x4
3548 #define MSQ_STATE_MOVESIZE 0x5
3549 #define MSQ_STATE_CARET 0x6
3551 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3552 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3556 NtUserGetMonitorInfo(
3557 IN HMONITOR hMonitor
,
3558 OUT LPMONITORINFO pMonitorInfo
);
3560 /* Should be done in usermode */
3564 NtUserMonitorFromPoint(
3570 NtUserMonitorFromRect(
3576 NtUserMonitorFromWindow(
3580 typedef struct _SETSCROLLBARINFO
3584 DWORD rgstate
[CCHILDREN_SCROLLBAR
+ 1];
3585 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3589 NtUserSetScrollBarInfo(
3592 SETSCROLLBARINFO
*info
);
3594 #endif /* __WIN32K_NTUSER_H */