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
662 /* Extended style. */
666 /* Handle of the module that created the window. */
669 struct _WND
*spwndNext
;
670 struct _WND
*spwndPrev
;
671 struct _WND
*spwndParent
;
672 struct _WND
*spwndChild
;
673 struct _WND
*spwndOwner
;
677 /* Pointer to the window class. */
680 /* Property list head.*/
681 LIST_ENTRY PropListHead
;
685 /* system menu handle. */
688 /* Window menu handle or window id */
689 UINT IDMenu
; // Use spmenu
694 LARGE_UNICODE_STRING strName
;
695 /* Size of the extra data associated with the window. */
697 struct _WND
*spwndLastActive
;
698 HIMC hImc
; // Input context associated with this window.
701 //PD3DMATRIX pTransForm;
702 struct _WND
*spwndClipboardListener
;
711 UINT flags
; /* WPF_ flags. */
714 UINT Unicode
:1; /* !(WNDS_ANSICREATOR|WNDS_ANSIWINDOWPROC) ? */
715 UINT InternalPosInitialized
:1;
716 UINT HideFocus
:1; /* WS_EX_UISTATEFOCUSRECTHIDDEN ? */
717 UINT HideAccel
:1; /* WS_EX_UISTATEKBACCELHIDDEN ? */
720 PSBINFOEX pSBInfoex
; // convert to PSBINFO
721 /* Entry in the list of thread windows. */
722 LIST_ENTRY ThreadListEntry
;
725 #define PWND_BOTTOM ((PWND)1)
727 typedef struct _SBWND
735 typedef struct _MDIWND
742 #define GWLP_MDIWND 4
744 typedef struct _MENUWND
747 PPOPUPMENU ppopupmenu
;
748 } MENUWND
, *PMENUWND
;
750 typedef struct _PFNCLIENT
752 WNDPROC pfnScrollBarWndProc
;
753 WNDPROC pfnTitleWndProc
;
754 WNDPROC pfnMenuWndProc
;
755 WNDPROC pfnDesktopWndProc
;
756 WNDPROC pfnDefWindowProc
;
757 WNDPROC pfnMessageWindowProc
;
758 WNDPROC pfnSwitchWindowProc
;
759 WNDPROC pfnButtonWndProc
;
760 WNDPROC pfnComboBoxWndProc
;
761 WNDPROC pfnComboListBoxProc
;
762 WNDPROC pfnDialogWndProc
;
763 WNDPROC pfnEditWndProc
;
764 WNDPROC pfnListBoxWndProc
;
765 WNDPROC pfnMDIClientWndProc
;
766 WNDPROC pfnStaticWndProc
;
767 WNDPROC pfnImeWndProc
;
768 WNDPROC pfnGhostWndProc
;
769 WNDPROC pfnHkINLPCWPSTRUCT
;
770 WNDPROC pfnHkINLPCWPRETSTRUCT
;
771 WNDPROC pfnDispatchHook
;
772 WNDPROC pfnDispatchDefWindowProc
;
773 WNDPROC pfnDispatchMessage
;
774 WNDPROC pfnMDIActivateDlgProc
;
775 } PFNCLIENT
, *PPFNCLIENT
;
778 Wine Common proc ( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, BOOL Unicode );
779 Windows uses Ansi == TRUE, Wine uses Unicode == TRUE.
783 (CALLBACK
*WNDPROC_EX
)(
790 typedef struct _PFNCLIENTWORKER
792 WNDPROC_EX pfnButtonWndProc
;
793 WNDPROC_EX pfnComboBoxWndProc
;
794 WNDPROC_EX pfnComboListBoxProc
;
795 WNDPROC_EX pfnDialogWndProc
;
796 WNDPROC_EX pfnEditWndProc
;
797 WNDPROC_EX pfnListBoxWndProc
;
798 WNDPROC_EX pfnMDIClientWndProc
;
799 WNDPROC_EX pfnStaticWndProc
;
800 WNDPROC_EX pfnImeWndProc
;
801 WNDPROC_EX pfnGhostWndProc
;
802 WNDPROC_EX pfnCtfHookProc
;
803 } PFNCLIENTWORKER
, *PPFNCLIENTWORKER
;
813 /* FNID's for NtUserSetWindowFNID, NtUserMessageCall */
814 #define FNID_FIRST 0x029A
815 #define FNID_SCROLLBAR 0x029A
816 #define FNID_ICONTITLE 0x029B
817 #define FNID_MENU 0x029C
818 #define FNID_DESKTOP 0x029D
819 #define FNID_DEFWINDOWPROC 0x029E
820 #define FNID_MESSAGEWND 0x029F
821 #define FNID_SWITCH 0x02A0
822 #define FNID_BUTTON 0x02A1
823 #define FNID_COMBOBOX 0x02A2
824 #define FNID_COMBOLBOX 0x02A3
825 #define FNID_DIALOG 0x02A4
826 #define FNID_EDIT 0x02A5
827 #define FNID_LISTBOX 0x02A6
828 #define FNID_MDICLIENT 0x02A7
829 #define FNID_STATIC 0x02A8
830 #define FNID_IME 0x02A9
831 #define FNID_GHOST 0x02AA
832 #define FNID_CALLWNDPROC 0x02AB
833 #define FNID_CALLWNDPROCRET 0x02AC
834 #define FNID_HKINLPCWPEXSTRUCT 0x02AD
835 #define FNID_HKINLPCWPRETEXSTRUCT 0x02AE
836 #define FNID_MB_DLGPROC 0x02AF
837 #define FNID_MDIACTIVATEDLGPROC 0x02B0
838 #define FNID_SENDMESSAGE 0x02B1
839 #define FNID_SENDMESSAGEFF 0x02B2
840 /* Kernel has option to use TimeOut or normal msg send, based on type of msg. */
841 #define FNID_SENDMESSAGEWTOOPTION 0x02B3
842 #define FNID_SENDMESSAGECALLPROC 0x02B4
843 #define FNID_BROADCASTSYSTEMMESSAGE 0x02B5
844 #define FNID_TOOLTIPS 0x02B6
845 #define FNID_SENDNOTIFYMESSAGE 0x02B7
846 #define FNID_SENDMESSAGECALLBACK 0x02B8
847 #define FNID_LAST 0x02B9
849 #define FNID_NUM FNID_LAST - FNID_FIRST + 1
850 #define FNID_NUMSERVERPROC FNID_SWITCH - FNID_FIRST + 1
852 #define FNID_DDEML 0x2000 /* Registers DDEML */
853 #define FNID_DESTROY 0x4000 /* This is sent when WM_NCDESTROY or in the support routine. */
854 /* Seen during WM_CREATE on error exit too. */
855 #define FNID_FREED 0x8000 /* Window being Freed... */
857 #define ICLASS_TO_MASK(iCls) (1 << ((iCls)))
859 #define GETPFNCLIENTA(fnid) \
860 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientA) + (fnid - FNID_FIRST)))
861 #define GETPFNCLIENTW(fnid) \
862 (WNDPROC)(*(((ULONG_PTR *)&gpsi->apfnClientW) + (fnid - FNID_FIRST)))
864 #define GETPFNSERVER(fnid) gpsi->aStoCidPfn[fnid - FNID_FIRST]
866 /* ICLS's for NtUserGetClassName FNID to ICLS, NtUserInitializeClientPfnArrays */
867 #define ICLS_BUTTON 0
869 #define ICLS_STATIC 2
870 #define ICLS_LISTBOX 3
871 #define ICLS_SCROLLBAR 4
872 #define ICLS_COMBOBOX 5
873 #define ICLS_MDICLIENT 6
874 #define ICLS_COMBOLBOX 7
875 #define ICLS_DDEMLEVENT 8
876 #define ICLS_DDEMLMOTHER 9
877 #define ICLS_DDEML16BIT 10
878 #define ICLS_DDEMLCLIENTA 11
879 #define ICLS_DDEMLCLIENTW 12
880 #define ICLS_DDEMLSERVERA 13
881 #define ICLS_DDEMLSERVERW 14
883 #define ICLS_GHOST 16
884 #define ICLS_DESKTOP 17
885 #define ICLS_DIALOG 18
887 #define ICLS_SWITCH 20
888 #define ICLS_ICONTITLE 21
889 #define ICLS_TOOLTIPS 22
890 #if (_WIN32_WINNT <= 0x0501)
891 #define ICLS_UNKNOWN 22
892 #define ICLS_NOTUSED 23
894 #define ICLS_SYSSHADOW 23
895 #define ICLS_HWNDMESSAGE 24
896 #define ICLS_NOTUSED 25
900 #define COLOR_LAST COLOR_MENUBAR
901 #define MAX_MB_STRINGS 11
903 #define SRVINFO_DBCSENABLED 0x0002
904 #define SRVINFO_IMM32 0x0004
905 #define SRVINFO_APIHOOK 0x0010
906 #define SRVINFO_METRICS 0x0020
907 #define SRVINFO_KBDPREF 0x0080
909 #define NUM_SYSCOLORS 31
911 typedef struct tagOEMBITMAPINFO
917 } OEMBITMAPINFO
, *POEMBITMAPINFO
;
919 typedef enum _OBI_TYPES
930 typedef struct tagMBSTRING
935 } MBSTRING
, *PMBSTRING
;
937 typedef struct tagDPISERVERINFO
939 INT gclBorder
; /* 000 */
940 HFONT hCaptionFont
; /* 004 */
941 HFONT hMsgFont
; /* 008 */
942 INT cxMsgFontChar
; /* 00C */
943 INT cyMsgFontChar
; /* 010 */
944 UINT wMaxBtnSize
; /* 014 */
945 } DPISERVERINFO
, *PDPISERVERINFO
;
948 #define PUSIF_PALETTEDISPLAY 0x01
949 #define PUSIF_SNAPTO 0x02
950 #define PUSIF_COMBOBOXANIMATION 0x04
951 #define PUSIF_LISTBOXSMOOTHSCROLLING 0x08
952 #define PUSIF_KEYBOARDCUES 0x20
954 typedef struct _PERUSERSERVERINFO
956 INT aiSysMet
[SM_CMETRICS
];
957 ULONG argbSystemUnmatched
[NUM_SYSCOLORS
];
958 COLORREF argbSystem
[NUM_SYSCOLORS
];
959 HBRUSH ahbrSystem
[NUM_SYSCOLORS
];
963 DWORD dwLastRITEventTickCount
;
968 UINT ucWheelScrollLines
;
969 UINT ucWheelScrollChars
;
970 INT wMaxLeftOverlapChars
;
971 INT wMaxRightOverlapChars
;
974 TEXTMETRICW tmSysFont
;
975 DPISERVERINFO dpiSystem
;
976 HICON hIconSmWindows
;
979 DWORD dwAsyncKeyCache
;
981 OEMBITMAPINFO oembmi
[OBI_CTYPES
];
990 DWORD dwLastSystemRITEventTickCountUpdate
;
991 ULONG adwDBGTAGFlags
[35];
994 } PERUSERSERVERINFO
, *PPERUSERSERVERINFO
;
996 typedef struct tagSERVERINFO
999 ULONG_PTR cHandleEntries
;
1000 PFN_FNID mpFnidPfn
[FNID_NUM
];
1001 WNDPROC aStoCidPfn
[FNID_NUMSERVERPROC
];
1002 USHORT mpFnid_serverCBWndProc
[FNID_NUM
];
1003 PFNCLIENT apfnClientA
;
1004 PFNCLIENT apfnClientW
;
1005 PFNCLIENTWORKER apfnClientWorker
;
1006 ULONG cbHandleTable
;
1007 ATOM atomSysClass
[ICLS_NOTUSED
+1];
1008 DWORD dwDefaultHeapBase
;
1009 DWORD dwDefaultHeapSize
;
1011 MBSTRING MBStrings
[MAX_MB_STRINGS
];
1012 ATOM atomIconSmProp
;
1014 ATOM atomContextHelpIdProp
;
1015 ATOM atomFrostedWindowProp
;
1016 CHAR acOemToAnsi
[256];
1017 CHAR acAnsiToOem
[256];
1018 DWORD dwInstalledEventHooks
;
1020 } SERVERINFO
, *PSERVERINFO
;
1023 C_ASSERT(sizeof(SERVERINFO
) <= PAGE_SIZE
);
1027 /* Server event activity bits. */
1028 #define SRV_EVENT_MENU 0x0001
1029 #define SRV_EVENT_END_APPLICATION 0x0002
1030 #define SRV_EVENT_RUNNING 0x0004
1031 #define SRV_EVENT_NAMECHANGE 0x0008
1032 #define SRV_EVENT_VALUECHANGE 0x0010
1033 #define SRV_EVENT_STATECHANGE 0x0020
1034 #define SRV_EVENT_LOCATIONCHANGE 0x0040
1035 #define SRV_EVENT_CREATE 0x8000
1037 typedef struct _PROPLISTITEM
1041 } PROPLISTITEM
, *PPROPLISTITEM
;
1043 #define PROPERTY_FLAG_SYSTEM 1
1045 typedef struct _PROPERTY
1047 LIST_ENTRY PropListEntry
;
1051 } PROPERTY
, *PPROPERTY
;
1053 typedef struct _BROADCASTPARM
1060 } BROADCASTPARM
, *PBROADCASTPARM
;
1062 struct _THREADINFO
*GetW32ThreadInfo(VOID
);
1063 struct _PROCESSINFO
*GetW32ProcessInfo(VOID
);
1065 typedef struct _WNDMSG
1071 typedef struct _SHAREDINFO
1073 PSERVERINFO psi
; /* global Server Info */
1074 PVOID aheList
; /* Handle Entry List */
1075 PVOID pDispInfo
; /* global PDISPLAYINFO pointer */
1076 ULONG_PTR ulSharedDelta
; /* Heap delta */
1077 WNDMSG awmControl
[FNID_LAST
- FNID_FIRST
];
1078 WNDMSG DefWindowMsgs
;
1079 WNDMSG DefWindowSpecMsgs
;
1080 } SHAREDINFO
, *PSHAREDINFO
;
1082 /* See also the USERSRV_API_CONNECTINFO #define in include/reactos/subsys/win/winmsg.h */
1083 typedef struct _USERCONNECT
1086 ULONG ulCurrentVersion
;
1087 DWORD dwDispatchCount
;
1088 SHAREDINFO siClient
;
1089 } USERCONNECT
, *PUSERCONNECT
;
1091 /* WinNT 5.0 compatible user32 / win32k */
1092 #define USER_VERSION MAKELONG(0x0000, 0x0005)
1094 #if defined(_M_IX86)
1095 C_ASSERT(sizeof(USERCONNECT
) == 0x124);
1098 typedef struct tagGETCLIPBDATA
1107 } GETCLIPBDATA
, *PGETCLIPBDATA
;
1109 typedef struct tagSETCLIPBDATA
1112 BOOL fIncSerialNumber
;
1113 } SETCLIPBDATA
, *PSETCLIPBDATA
;
1115 /* Used with NtUserSetCursorIconData, last parameter. */
1116 typedef struct tagCURSORDATA
1122 ULONG CURSORF_flags
;
1129 HBITMAP hbmUserAlpha
; /* Could be in W7U, not in W2k */
1135 struct tagCURSORDATA
*aspcur
;
1139 } CURSORDATA
, *PCURSORDATA
; /* !dso CURSORDATA */
1141 /* CURSORF_flags: */
1142 #define CURSORF_FROMRESOURCE 0x0001
1143 #define CURSORF_GLOBAL 0x0002
1144 #define CURSORF_LRSHARED 0x0004
1145 #define CURSORF_ACON 0x0008
1146 #define CURSORF_WOWCLEANUP 0x0010
1147 #define CURSORF_ACONFRAME 0x0040
1148 #define CURSORF_SECRET 0x0080
1149 #define CURSORF_LINKED 0x0100
1150 #define CURSORF_CURRENT 0x0200
1152 typedef struct tagIMEINFOEX
1156 WCHAR wszUIClass
[16];
1157 ULONG fdwInitConvMode
;
1160 DWORD dwProdVersion
;
1161 DWORD dwImeWinVersion
;
1162 WCHAR wszImeDescription
[50];
1163 WCHAR wszImeFile
[80];
1166 INT fSysWow64Only
:1;
1169 } IMEINFOEX
, *PIMEINFOEX
;
1171 typedef struct tagIMEUI
1184 UINT fChildThreadDef
:1;
1185 UINT fCtrlShowStatus
:1;
1186 UINT fFreeActiveEvent
:1;
1190 /* Window Extra data container. */
1191 typedef struct _IMEWND
1199 NtUserAssociateInputContext(
1206 NtUserBuildHimcList(
1223 NtUserCheckMenuItem(
1230 NtUserCtxDisplayIOCtl(
1237 NtUserDbgWin32HeapFail(
1243 NtUserDbgWin32HeapStat(
1261 NtUserDrawMenuBarTemp(
1270 NtUserEnableMenuItem(
1277 NtUserEndMenu(VOID
);
1281 NtUserGetMenuBarInfo(
1295 NtUserGetMenuItemRect(
1303 NtUserGetSystemMenu(
1309 NtUserHiliteMenuItem(
1317 NtUserMenuItemFromPoint(
1339 NtUserSetMenuContextHelpId(
1341 DWORD dwContextHelpId
);
1345 NtUserSetMenuDefaultItem(
1352 NtUserSetMenuFlagRtoL(
1357 NtUserSetSystemMenu(
1363 NtUserThunkedMenuInfo(
1369 NtUserThunkedMenuItemInfo(
1374 LPMENUITEMINFOW lpmii
,
1375 PUNICODE_STRING lpszCaption
);
1379 NtUserTrackPopupMenuEx(
1389 NtUserActivateKeyboardLayout(
1395 NtUserAlterWindowStyle(
1402 NtUserAttachThreadInput(
1404 IN DWORD idAttachTo
,
1431 NtUserBuildHwndList(
1442 NtUserBuildNameList(
1446 PULONG pRequiredSize
);
1450 NtUserBuildPropList(
1456 /* apfnSimpleCall indices from Windows XP SP 2 */
1457 /* TODO: Check for differences in Windows 2000, 2003 and 2008 */
1458 #define WIN32K_VERSION NTDDI_WINXPSP2 /* FIXME: this should go somewhere else */
1460 enum SimpleCallRoutines
1462 NOPARAM_ROUTINE_CREATEMENU
,
1463 NOPARAM_ROUTINE_CREATEMENUPOPUP
,
1464 #if (WIN32K_VERSION >= NTDDI_VISTA)
1465 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1466 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1467 NOPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1468 NOPARAM_ROUTINE_DESTROY_CARET
,
1470 NOPARAM_ROUTINE_ENABLEPROCWNDGHSTING
,
1471 #if (WIN32K_VERSION < NTDDI_VISTA)
1472 NOPARAM_ROUTINE_MSQCLEARWAKEMASK
,
1473 NOPARAM_ROUTINE_ALLOWFOREGNDACTIVATION
,
1474 NOPARAM_ROUTINE_DESTROY_CARET
,
1476 NOPARAM_ROUTINE_GETDEVICECHANGEINFO
,
1477 NOPARAM_ROUTINE_GETIMESHOWSTATUS
,
1478 NOPARAM_ROUTINE_GETINPUTDESKTOP
,
1479 NOPARAM_ROUTINE_GETMSESSAGEPOS
,
1480 #if (WIN32K_VERSION >= NTDDI_VISTA)
1481 NOPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1483 NOPARAM_ROUTINE_GETREMOTEPROCESSID
,
1485 NOPARAM_ROUTINE_HIDECURSORNOCAPTURE
,
1486 NOPARAM_ROUTINE_LOADCURSANDICOS
,
1487 #if (WIN32K_VERSION >= NTDDI_VISTA)
1488 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1489 NOPARAM_ROUTINE_PREPAREFORLOGOFF
, /* 0x0f */
1491 NOPARAM_ROUTINE_RELEASECAPTURE
,
1492 NOPARAM_ROUTINE_RESETDBLCLICK
,
1493 NOPARAM_ROUTINE_ZAPACTIVEANDFOUS
,
1494 NOPARAM_ROUTINE_REMOTECONSHDWSTOP
,
1495 NOPARAM_ROUTINE_REMOTEDISCONNECT
,
1496 NOPARAM_ROUTINE_REMOTELOGOFF
,
1497 NOPARAM_ROUTINE_REMOTENTSECURITY
,
1498 NOPARAM_ROUTINE_REMOTESHDWSETUP
,
1499 NOPARAM_ROUTINE_REMOTESHDWSTOP
,
1500 NOPARAM_ROUTINE_REMOTEPASSTHRUENABLE
,
1501 NOPARAM_ROUTINE_REMOTEPASSTHRUDISABLE
,
1502 NOPARAM_ROUTINE_REMOTECONNECTSTATE
,
1503 NOPARAM_ROUTINE_UPDATEPERUSERIMMENABLING
,
1504 NOPARAM_ROUTINE_USERPWRCALLOUTWORKER
,
1505 #if (WIN32K_VERSION >= NTDDI_VISTA)
1506 NOPARAM_ROUTINE_WAKERITFORSHTDWN
,
1508 NOPARAM_ROUTINE_INIT_MESSAGE_PUMP
,
1509 NOPARAM_ROUTINE_UNINIT_MESSAGE_PUMP
,
1510 #if (WIN32K_VERSION < NTDDI_VISTA)
1511 NOPARAM_ROUTINE_LOADUSERAPIHOOK
,
1513 ONEPARAM_ROUTINE_BEGINDEFERWNDPOS
,
1514 #if (WIN32K_VERSION >= NTDDI_VISTA)
1515 ONEPARAM_ROUTINE_GETSENDMSGRECVR
,
1517 ONEPARAM_ROUTINE_WINDOWFROMDC
,
1518 ONEPARAM_ROUTINE_ALLOWSETFOREGND
,
1519 ONEPARAM_ROUTINE_CREATEEMPTYCUROBJECT
,
1520 #if (WIN32K_VERSION < NTDDI_VISTA)
1521 ONEPARAM_ROUTINE_CREATESYSTEMTHREADS
,
1523 ONEPARAM_ROUTINE_CSDDEUNINITIALIZE
,
1524 ONEPARAM_ROUTINE_DIRECTEDYIELD
,
1525 ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS
,
1526 #if (WIN32K_VERSION < NTDDI_VISTA)
1527 ONEPARAM_ROUTINE_GETCURSORPOS
,
1529 ONEPARAM_ROUTINE_GETINPUTEVENT
,
1530 ONEPARAM_ROUTINE_GETKEYBOARDLAYOUT
,
1531 ONEPARAM_ROUTINE_GETKEYBOARDTYPE
,
1532 ONEPARAM_ROUTINE_GETPROCDEFLAYOUT
,
1533 ONEPARAM_ROUTINE_GETQUEUESTATUS
,
1534 ONEPARAM_ROUTINE_GETWINSTAINFO
,
1535 #if (WIN32K_VERSION < NTDDI_VISTA)
1536 ONEPARAM_ROUTINE_HANDLESYSTHRDCREATFAIL
,
1538 ONEPARAM_ROUTINE_LOCKFOREGNDWINDOW
,
1539 ONEPARAM_ROUTINE_LOADFONTS
,
1540 ONEPARAM_ROUTINE_MAPDEKTOPOBJECT
,
1541 ONEPARAM_ROUTINE_MESSAGEBEEP
,
1542 ONEPARAM_ROUTINE_PLAYEVENTSOUND
,
1543 ONEPARAM_ROUTINE_POSTQUITMESSAGE
,
1544 #if (WIN32K_VERSION < NTDDI_VISTA)
1545 ONEPARAM_ROUTINE_PREPAREFORLOGOFF
,
1547 ONEPARAM_ROUTINE_REALIZEPALETTE
,
1548 ONEPARAM_ROUTINE_REGISTERLPK
,
1549 #if (WIN32K_VERSION >= NTDDI_VISTA)
1550 ONEPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1552 ONEPARAM_ROUTINE_REMOTERECONNECT
,
1553 ONEPARAM_ROUTINE_REMOTETHINWIRESTATUS
,
1554 ONEPARAM_ROUTINE_RELEASEDC
,
1555 #if (WIN32K_VERSION >= NTDDI_VISTA)
1556 ONEPARAM_ROUTINE_REMOTENOTIFY
,
1558 ONEPARAM_ROUTINE_REPLYMESSAGE
,
1559 ONEPARAM_ROUTINE_SETCARETBLINKTIME
,
1560 ONEPARAM_ROUTINE_SETDBLCLICKTIME
,
1561 #if (WIN32K_VERSION < NTDDI_VISTA)
1562 ONEPARAM_ROUTINE_SETIMESHOWSTATUS
,
1564 ONEPARAM_ROUTINE_SETMESSAGEEXTRAINFO
,
1565 ONEPARAM_ROUTINE_SETPROCDEFLAYOUT
,
1566 #if (WIN32K_VERSION >= NTDDI_VISTA)
1567 ONEPARAM_ROUTINE_SETWATERMARKSTRINGS
,
1569 ONEPARAM_ROUTINE_SHOWCURSOR
,
1570 ONEPARAM_ROUTINE_SHOWSTARTGLASS
,
1571 ONEPARAM_ROUTINE_SWAPMOUSEBUTTON
,
1572 X_ROUTINE_WOWMODULEUNLOAD
,
1573 #if (WIN32K_VERSION < NTDDI_VISTA)
1574 X_ROUTINE_REMOTENOTIFY
,
1576 HWND_ROUTINE_DEREGISTERSHELLHOOKWINDOW
,
1577 HWND_ROUTINE_DWP_GETENABLEDPOPUP
,
1578 HWND_ROUTINE_GETWNDCONTEXTHLPID
,
1579 HWND_ROUTINE_REGISTERSHELLHOOKWINDOW
,
1580 HWND_ROUTINE_SETMSGBOX
,
1581 HWNDOPT_ROUTINE_SETPROGMANWINDOW
,
1582 HWNDOPT_ROUTINE_SETTASKMANWINDOW
,
1583 HWNDPARAM_ROUTINE_GETCLASSICOCUR
,
1584 HWNDPARAM_ROUTINE_CLEARWINDOWSTATE
,
1585 HWNDPARAM_ROUTINE_KILLSYSTEMTIMER
,
1586 HWNDPARAM_ROUTINE_SETDIALOGPOINTER
,
1587 HWNDPARAM_ROUTINE_SETVISIBLE
,
1588 HWNDPARAM_ROUTINE_SETWNDCONTEXTHLPID
,
1589 HWNDPARAM_ROUTINE_SETWINDOWSTATE
,
1590 HWNDLOCK_ROUTINE_WINDOWHASSHADOW
, /* correct prefix ? */
1591 HWNDLOCK_ROUTINE_ARRANGEICONICWINDOWS
,
1592 HWNDLOCK_ROUTINE_DRAWMENUBAR
,
1593 HWNDLOCK_ROUTINE_CHECKIMESHOWSTATUSINTHRD
,
1594 HWNDLOCK_ROUTINE_GETSYSMENUHANDLE
,
1595 HWNDLOCK_ROUTINE_REDRAWFRAME
,
1596 HWNDLOCK_ROUTINE_REDRAWFRAMEANDHOOK
,
1597 HWNDLOCK_ROUTINE_SETDLGSYSMENU
,
1598 HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOW
,
1599 HWNDLOCK_ROUTINE_SETSYSMENU
,
1600 HWNDLOCK_ROUTINE_UPDATECKIENTRECT
,
1601 HWNDLOCK_ROUTINE_UPDATEWINDOW
,
1602 X_ROUTINE_IMESHOWSTATUSCHANGE
,
1603 TWOPARAM_ROUTINE_ENABLEWINDOW
,
1604 TWOPARAM_ROUTINE_REDRAWTITLE
,
1605 TWOPARAM_ROUTINE_SHOWOWNEDPOPUPS
,
1606 TWOPARAM_ROUTINE_SWITCHTOTHISWINDOW
,
1607 TWOPARAM_ROUTINE_UPDATEWINDOWS
,
1608 TWOPARAM_ROUTINE_VALIDATERGN
,
1609 #if (WIN32K_VERSION >= NTDDI_VISTA)
1610 TWOPARAM_ROUTINE_CHANGEWNDMSGFILTER
,
1611 TWOPARAM_ROUTINE_GETCURSORPOS
,
1613 TWOPARAM_ROUTINE_GETHDEVNAME
,
1614 TWOPARAM_ROUTINE_INITANSIOEM
,
1615 TWOPARAM_ROUTINE_NLSSENDIMENOTIFY
,
1616 #if (WIN32K_VERSION >= NTDDI_VISTA)
1617 TWOPARAM_ROUTINE_REGISTERGHSTWND
,
1619 TWOPARAM_ROUTINE_REGISTERLOGONPROCESS
,
1620 #if (WIN32K_VERSION >= NTDDI_VISTA)
1621 TWOPARAM_ROUTINE_REGISTERSBLFROSTWND
,
1623 TWOPARAM_ROUTINE_REGISTERSYSTEMTHREAD
,
1625 TWOPARAM_ROUTINE_REGISTERUSERHUNGAPPHANDLERS
,
1626 TWOPARAM_ROUTINE_SHADOWCLEANUP
,
1627 TWOPARAM_ROUTINE_REMOTESHADOWSTART
,
1628 TWOPARAM_ROUTINE_SETCARETPOS
,
1629 TWOPARAM_ROUTINE_SETCURSORPOS
,
1630 #if (WIN32K_VERSION >= NTDDI_VISTA)
1631 TWOPARAM_ROUTINE_SETPHYSCURSORPOS
,
1633 TWOPARAM_ROUTINE_UNHOOKWINDOWSHOOK
,
1634 TWOPARAM_ROUTINE_WOWCLEANUP
1657 NtUserCallHwndParam(
1664 NtUserCallHwndParamLock(
1671 NtUserCallMsgFilter(
1677 NtUserCallNextHookEx(
1703 NtUserChangeClipboardChain(
1709 NtUserChangeDisplaySettings(
1710 PUNICODE_STRING lpszDeviceName
,
1711 LPDEVMODEW lpDevMode
,
1717 NtUserCheckDesktopByThreadId(
1722 NtUserCheckWindowThreadDesktop(
1729 NtUserCheckImeHotKey(
1734 NtUserChildWindowFromPointEx(
1747 NtUserCloseClipboard(VOID
);
1756 NtUserCloseWindowStation(
1759 /* Console commands for NtUserConsoleControl */
1760 typedef enum _CONSOLECONTROL
1762 ConsoleCtrlDesktopConsoleThread
= 0,
1763 GuiConsoleWndClassAtom
= 1,
1764 ConsoleMakePalettePublic
= 5,
1765 ConsoleAcquireDisplayOwnership
,
1766 } CONSOLECONTROL
, *PCONSOLECONTROL
;
1768 typedef struct _DESKTOP_CONSOLE_THREAD
1770 HDESK DesktopHandle
;
1772 } DESKTOP_CONSOLE_THREAD
, *PDESKTOP_CONSOLE_THREAD
;
1776 NtUserConsoleControl(
1777 IN CONSOLECONTROL ConsoleCtrl
,
1778 IN PVOID ConsoleCtrlInfo
,
1779 IN ULONG ConsoleCtrlInfoLength
);
1783 NtUserConvertMemHandle(
1789 NtUserCopyAcceleratorTable(
1792 ULONG EntriesCount
);
1796 NtUserCountClipboardFormats(VOID
);
1800 NtUserCreateAcceleratorTable(
1802 ULONG EntriesCount
);
1814 NtUserCreateDesktop(
1815 POBJECT_ATTRIBUTES poa
,
1816 PUNICODE_STRING lpszDesktopDevice
,
1819 ACCESS_MASK dwDesiredAccess
);
1823 NtUserCreateInputContext(
1828 NtUserCreateLocalMemHandle(
1836 NtUserCreateWindowEx(
1838 PLARGE_STRING plstrClassName
,
1839 PLARGE_STRING plstrClsVersion
,
1840 PLARGE_STRING plstrWindowName
,
1848 HINSTANCE hInstance
,
1855 NtUserCreateWindowStation(
1856 POBJECT_ATTRIBUTES ObjectAttributes
,
1857 ACCESS_MASK dwDesiredAccess
,
1866 NtUserDdeGetQualityOfService(
1869 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1873 NtUserDdeInitialize(
1882 NtUserDdeSetQualityOfService(
1884 IN PSECURITY_QUALITY_OF_SERVICE pqosNew
,
1885 OUT PSECURITY_QUALITY_OF_SERVICE pqosPrev
);
1889 NtUserDeferWindowPos(
1892 HWND WndInsertAfter
,
1903 PLARGE_STRING WindowText
);
1907 NtUserDestroyAcceleratorTable(
1912 NtUserDestroyCursor(
1918 NtUserDestroyInputContext(
1923 NtUserDestroyWindow(
1928 NtUserDisableThreadIme(
1933 NtUserDispatchMessage(
1953 NtUserDrawAnimatedRects(
1969 NtUserDrawCaptionTemp(
1975 const PUNICODE_STRING str
,
1978 /* Used with NtUserDrawIconEx, last parameter. */
1979 typedef struct _DRAWICONEXDATA
1985 } DRAWICONEXDATA
, *PDRAWICONEXDATA
;
1997 HBRUSH hbrFlickerFreeDraw
,
2004 NtUserEmptyClipboard(VOID
);
2008 NtUserEnableScrollBar(
2015 NtUserEndDeferWindowPosEx(
2023 CONST PAINTSTRUCT
*lPs
);
2027 NtUserEnumDisplayDevices(
2028 PUNICODE_STRING lpDevice
, /* device name */
2029 DWORD iDevNum
, /* display device */
2030 PDISPLAY_DEVICEW lpDisplayDevice
, /* device information */
2031 DWORD dwFlags
); /* reserved */
2036 NtUserEnumDisplayMonitors(
2039 MONITORENUMPROC lpfnEnum,
2042 /* FIXME: The call below is ros-specific and should be rewritten to use the same params as the correct call above. */
2045 NtUserEnumDisplayMonitors(
2046 OPTIONAL IN HDC hDC
,
2047 OPTIONAL IN LPCRECT pRect
,
2048 OPTIONAL OUT HMONITOR
*hMonitorList
,
2049 OPTIONAL OUT LPRECT monitorRectList
,
2050 OPTIONAL IN DWORD listSize
);
2055 NtUserEnumDisplaySettings(
2056 PUNICODE_STRING lpszDeviceName
,
2058 LPDEVMODEW lpDevMode
, /* FIXME is this correct? */
2068 NtUserExcludeUpdateRgn(
2084 HWND hwndChildAfter
,
2085 PUNICODE_STRING ucClassName
,
2086 PUNICODE_STRING ucWindowName
,
2091 NtUserFlashWindowEx(
2092 IN PFLASHWINFO pfwi
);
2096 NtUserGetAltTabInfo(
2112 NtUserGetAppImeLevel(
2117 NtUserGetAsyncKeyState(
2120 _Success_(return != 0)
2121 _At_(pustrName
->Buffer
, _Out_z_bytecap_post_bytecount_(pustrName
->MaximumLength
, return * 2 + 2))
2126 _Inout_ PUNICODE_STRING pustrName
);
2130 NtUserGetCaretBlinkTime(VOID
);
2140 HINSTANCE hInstance
,
2141 PUNICODE_STRING ClassName
,
2143 LPWSTR
*ppszMenuName
,
2150 BOOL Real
, /* 0 GetClassNameW, 1 RealGetWindowClassA/W */
2151 PUNICODE_STRING ClassName
);
2155 NtUserGetClipboardData(
2157 PGETCLIPBDATA pgcd
);
2161 NtUserGetClipboardFormatName(
2163 LPWSTR lpszFormatName
,
2168 NtUserGetClipboardOwner(VOID
);
2172 NtUserGetClipboardSequenceNumber(VOID
);
2176 NtUserGetClipboardViewer(VOID
);
2180 NtUserGetClipCursor(
2185 NtUserGetComboBoxInfo(
2187 PCOMBOBOXINFO pcbi
);
2191 NtUserGetControlBrush(
2198 NtUserGetControlColor(
2213 NtUserGetCursorFrameInfo(
2221 NtUserGetCursorInfo(
2238 NtUserGetDoubleClickTime(VOID
);
2242 NtUserGetForegroundWindow(VOID
);
2246 NtUserGetGuiResources(
2252 NtUserGetGUIThreadInfo(
2254 LPGUITHREADINFO lpgui
);
2256 _Success_(return != FALSE
)
2260 _In_ HANDLE hCurIcon
,
2261 _Out_opt_ PICONINFO IconInfo
,
2262 _Inout_opt_ PUNICODE_STRING lpInstName
,
2263 _Inout_opt_ PUNICODE_STRING lpResName
,
2264 _Out_opt_ LPDWORD pbpp
,
2265 _In_ BOOL bInternal
);
2286 PIMEINFOEX pImeInfoEx
,
2291 NtUserGetInternalWindowPos(
2298 NtUserGetKeyboardLayout(
2303 NtUserGetKeyboardLayoutList(
2309 NtUserGetKeyboardLayoutName(
2314 NtUserGetKeyboardState(
2319 NtUserGetKeyboardType(
2324 NtUserGetKeyNameText(
2336 NtUserGetLayeredWindowAttributes(
2344 NtUserGetListBoxInfo(
2357 NtUserGetMouseMovePointsEx(
2359 LPMOUSEMOVEPOINT lppt
,
2360 LPMOUSEMOVEPOINT lpptBuf
,
2366 NtUserGetObjectInformation(
2369 PVOID pvInformation
,
2371 PDWORD nLengthNeeded
);
2375 NtUserGetOpenClipboardWindow(VOID
);
2379 NtUserGetPriorityClipboardFormat(
2380 UINT
*paFormatPriorityList
,
2385 NtUserGetProcessWindowStation(VOID
);
2389 NtUserGetRawInputBuffer(
2396 NtUserGetRawInputData(
2397 HRAWINPUT hRawInput
,
2405 NtUserGetRawInputDeviceInfo(
2413 NtUserGetRawInputDeviceList(
2414 PRAWINPUTDEVICELIST pRawInputDeviceList
,
2415 PUINT puiNumDevices
,
2420 NtUserGetRegisteredRawInputDevices(
2421 PRAWINPUTDEVICE pRawInputDevices
,
2422 PUINT puiNumDevices
,
2427 NtUserGetScrollBarInfo(
2430 PSCROLLBARINFO psbi
);
2434 NtUserGetThreadDesktop(
2438 enum ThreadStateRoutines
2440 THREADSTATE_GETTHREADINFO
,
2441 THREADSTATE_INSENDMESSAGE
,
2442 THREADSTATE_FOCUSWINDOW
,
2443 THREADSTATE_ACTIVEWINDOW
,
2444 THREADSTATE_CAPTUREWINDOW
,
2445 THREADSTATE_PROGMANWINDOW
,
2446 THREADSTATE_TASKMANWINDOW
,
2447 THREADSTATE_GETMESSAGETIME
,
2448 THREADSTATE_GETINPUTSTATE
,
2449 THREADSTATE_UPTIMELASTREAD
,
2450 THREADSTATE_FOREGROUNDTHREAD
,
2451 THREADSTATE_GETCURSOR
,
2452 THREADSTATE_GETMESSAGEEXTRAINFO
2457 NtUserGetThreadState(
2462 NtUserGetTitleBarInfo(
2468 NtUserGetUpdateRect(
2487 NtUserGetWindowPlacement(
2489 WINDOWPLACEMENT
*lpwndpl
);
2494 HINSTANCE hInstance
,
2495 PUNICODE_STRING ClassName
);
2499 NtUserHardErrorControl(
2506 NtUserImpersonateDdeClientWindow(
2514 HANDLE hPowerRequestEvent
,
2515 HANDLE hMediaRequestEvent
);
2519 NtUserInitializeClientPfnArrays(
2520 PPFNCLIENT pfnClientA
,
2521 PPFNCLIENT pfnClientW
,
2522 PPFNCLIENTWORKER pfnClientWorker
,
2523 HINSTANCE hmodUser
);
2543 NtUserInternalGetWindowText(
2550 NtUserInvalidateRect(
2557 NtUserInvalidateRgn(
2564 NtUserIsClipboardFormatAvailable(
2575 NtUserLoadKeyboardLayoutEx(
2578 IN PUNICODE_STRING puszKeyboardName
,
2580 IN PUNICODE_STRING puszKLID
,
2586 NtUserLockWindowStation(
2587 HWINSTA hWindowStation
);
2591 NtUserLockWindowUpdate(
2596 NtUserLockWorkStation(VOID
);
2600 NtUserMapVirtualKeyEx(
2606 typedef struct tagDOSENDMESSAGE
2612 DOSENDMESSAGE
, *PDOSENDMESSAGE
;
2621 ULONG_PTR ResultInfo
,
2622 DWORD dwType
, /* FNID_XX types */
2629 UINT cmd
, /* Wine SW_ commands */
2634 NtUserMNDragLeave(VOID
);
2644 NtUserModifyUserStartupInfoFlags(
2661 NtUserNotifyIMEStatus(
2668 NtUserNotifyProcessCreate(
2669 HANDLE NewProcessId
,
2670 HANDLE ParentThreadId
,
2676 NtUserNotifyWinEvent(
2684 NtUserOpenClipboard(
2691 POBJECT_ATTRIBUTES ObjectAttributes
,
2693 ACCESS_MASK dwDesiredAccess
);
2697 NtUserOpenInputDesktop(
2700 ACCESS_MASK dwDesiredAccess
);
2704 NtUserOpenWindowStation(
2705 POBJECT_ATTRIBUTES ObjectAttributes
,
2706 ACCESS_MASK dwDesiredAccess
);
2721 BOOL bActive
); // DWORD Flags);
2742 NtUserPostThreadMessage(
2757 NtUserProcessConnect(
2758 IN HANDLE ProcessHandle
,
2759 OUT PUSERCONNECT pUserConnect
,
2760 IN ULONG Size
); /* sizeof(USERCONNECT) */
2764 NtUserQueryInformationThread(
2765 IN HANDLE ThreadHandle
,
2766 IN USERTHREADINFOCLASS ThreadInformationClass
,
2767 OUT PVOID ThreadInformation
,
2768 IN ULONG ThreadInformationLength
);
2772 NtUserQueryInputContext(
2778 NtUserQuerySendMessage(
2783 NtUserQueryUserCounters(
2790 #define QUERY_WINDOW_UNIQUE_PROCESS_ID 0x00
2791 #define QUERY_WINDOW_UNIQUE_THREAD_ID 0x01
2792 #define QUERY_WINDOW_ACTIVE 0x02
2793 #define QUERY_WINDOW_FOCUS 0x03
2794 #define QUERY_WINDOW_ISHUNG 0x04
2795 #define QUERY_WINDOW_REAL_ID 0x05
2796 #define QUERY_WINDOW_FOREGROUND 0x06
2806 NtUserRealInternalGetMessage(
2816 NtUserRealChildWindowFromPoint(
2823 NtUserRealWaitMessageEx(
2831 CONST RECT
*lprcUpdate
,
2837 NtUserRegisterClassExWOW(
2839 PUNICODE_STRING pustrClassName
,
2840 PUNICODE_STRING pustrCVersion
,
2841 PCLSMENUNAME pClassMenuName
,
2848 NtUserRegisterRawInputDevices(
2849 IN PCRAWINPUTDEVICE pRawInputDevices
,
2850 IN UINT uiNumDevices
,
2855 NtUserRegisterUserApiHook(
2856 PUNICODE_STRING m_dllname1
,
2857 PUNICODE_STRING m_funname1
,
2863 NtUserRegisterHotKey(
2871 NtUserRegisterTasklist(
2876 NtUserRegisterWindowMessage(
2877 PUNICODE_STRING MessageName
);
2881 NtUserRemoteConnect(
2888 NtUserRemoteRedrawRectangle(
2896 NtUserRemoteRedrawScreen(VOID
);
2900 NtUserRemoteStopScreenUpdates(VOID
);
2910 NtUserResolveDesktop(
2911 IN HANDLE ProcessHandle
,
2912 IN PUNICODE_STRING DesktopPath
,
2914 OUT HWINSTA
* phWinSta
);
2918 NtUserResolveDesktopForWOW(
2935 CONST RECT
*lprcScroll
,
2936 CONST RECT
*lprcClip
,
2942 NtUserScrollWindowEx(
2947 const RECT
*clipRect
,
2961 NtUserSetActiveWindow(
2966 NtUserSetAppImeLevel(
2980 ULONG_PTR dwNewLong
,
2992 NtUserSetClipboardData(
2999 NtUserSetClipboardViewer(
3000 HWND hWndNewViewer
);
3004 NtUserSelectPalette(
3007 BOOL ForceBackground
);
3011 NtUserSetConsoleReserveKeys(
3022 NtUserSetCursorContents(
3024 PICONINFO IconInfo
);
3028 NtUserSetCursorIconData(
3029 _In_ HCURSOR hCursor
,
3030 _In_opt_ PUNICODE_STRING pustrModule
,
3031 _In_opt_ PUNICODE_STRING puSrcName
,
3032 _In_
const CURSORDATA
*pCursorData
);
3034 typedef struct _tagFINDEXISTINGCURICONPARAM
3039 } FINDEXISTINGCURICONPARAM
;
3043 NtUserFindExistingCursorIcon(
3044 _In_ PUNICODE_STRING pustrModule
,
3045 _In_ PUNICODE_STRING pustrRsrc
,
3046 _In_ FINDEXISTINGCURICONPARAM
*param
);
3056 NtUserSetDbgTagCount(
3076 PIMEINFOEX pImeInfoEx
);
3080 NtUserSetImeOwnerWindow(
3086 NtUserSetInformationProcess(
3094 NtUserSetInformationThread(
3095 IN HANDLE ThreadHandle
,
3096 IN USERTHREADINFOCLASS ThreadInformationClass
,
3097 IN PVOID ThreadInformation
,
3098 IN ULONG ThreadInformationLength
);
3102 NtUserSetInternalWindowPos(
3110 NtUserSetKeyboardState(
3115 NtUserSetLayeredWindowAttributes(
3123 NtUserSetLogonNotifyWindow(
3128 NtUserSetObjectInformation(
3131 PVOID pvInformation
,
3138 HWND hWndNewParent
);
3142 NtUserSetProcessWindowStation(
3143 HWINSTA hWindowStation
);
3159 NtUserSetScrollInfo(
3167 NtUserSetShellWindowEx(
3169 HWND hwndShellListView
);
3175 IN CONST INT
*lpaElements
,
3176 IN CONST COLORREF
*lpaRgbValues
,
3181 NtUserSetSystemCursor(
3187 NtUserSetThreadDesktop(
3192 NtUserSetThreadState(
3198 NtUserSetSystemTimer(
3202 TIMERPROC lpTimerFunc
);
3206 NtUserSetThreadLayoutHandles(
3216 TIMERPROC lpTimerFunc
);
3220 NtUserSetWindowFNID(
3226 NtUserSetWindowLong(
3234 NtUserSetWindowPlacement(
3236 WINDOWPLACEMENT
*lpwndpl
);
3242 HWND hWndInsertAfter
,
3258 NtUserSetWindowsHookAW(
3265 NtUserSetWindowsHookEx(
3267 PUNICODE_STRING ModuleName
,
3275 NtUserSetWindowStationUser(
3276 HWINSTA hWindowStation
,
3283 NtUserSetWindowWord(
3290 NtUserSetWinEventHook(
3293 HMODULE hmodWinEventProc
,
3294 PUNICODE_STRING puString
,
3295 WINEVENTPROC lpfnWinEventProc
,
3312 NtUserShowScrollBar(
3325 NtUserShowWindowAsync(
3331 NtUserSoundSentry(VOID
);
3335 NtUserSwitchDesktop(
3340 NtUserSystemParametersInfo(
3348 NtUserTestForInteractiveUser(
3364 NtUserTrackMouseEvent(
3365 LPTRACKMOUSEEVENT lpEventTrack
);
3369 NtUserTranslateAccelerator(
3376 NtUserTranslateMessage(
3382 NtUserUnhookWindowsHookEx(
3387 NtUserUnhookWinEvent(
3388 HWINEVENTHOOK hWinEventHook
);
3392 NtUserUnloadKeyboardLayout(
3397 NtUserUnlockWindowStation(
3398 HWINSTA hWindowStation
);
3402 NtUserUnregisterClass(
3403 PUNICODE_STRING ClassNameOrAtom
,
3404 HINSTANCE hInstance
,
3405 PCLSMENUNAME pClassMenuName
);
3409 NtUserUnregisterHotKey(
3415 NtUserUnregisterUserApiHook(VOID
);
3419 NtUserUpdateInputContext(
3426 NtUserUpdateInstance(
3433 NtUserUpdateLayeredWindow(
3441 BLENDFUNCTION
*pblend
,
3447 NtUserUpdatePerUserSystemParameters(
3453 NtUserUserHandleGrantAccess(
3454 IN HANDLE hUserHandle
,
3460 NtUserValidateHandleSecure(
3467 CONST RECT
*lpRect
);
3471 NtUserValidateTimerCallback(
3483 NtUserWaitForInputIdle(
3485 IN DWORD dwMilliseconds
,
3486 IN BOOL Unknown2
); /* Always FALSE */
3490 NtUserWaitForMsgAndEvent(
3495 NtUserWaitMessage(VOID
);
3499 NtUserWin32PoolAllocationStats(
3509 NtUserWindowFromPoint(
3515 NtUserYieldTask(VOID
);
3518 * ReactOS-specific NtUser calls and their related structures, both which shouldn't exist.
3521 #define NOPARAM_ROUTINE_ISCONSOLEMODE 0xffff0001
3522 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
3523 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING 0xfffe000e
3524 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT 0xfffd0050
3525 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE 0xfffd0051
3526 #define HWNDLOCK_ROUTINE_SETFOREGROUNDWINDOWMOUSE 0xfffd0052
3528 #define MSQ_STATE_CAPTURE 0x1
3529 #define MSQ_STATE_ACTIVE 0x2
3530 #define MSQ_STATE_FOCUS 0x3
3531 #define MSQ_STATE_MENUOWNER 0x4
3532 #define MSQ_STATE_MOVESIZE 0x5
3533 #define MSQ_STATE_CARET 0x6
3535 #define TWOPARAM_ROUTINE_ROS_UPDATEUISTATE 0x1004
3536 #define HWNDPARAM_ROUTINE_ROS_NOTIFYWINEVENT 0x1005
3540 NtUserGetMonitorInfo(
3541 IN HMONITOR hMonitor
,
3542 OUT LPMONITORINFO pMonitorInfo
);
3544 /* Should be done in usermode */
3548 NtUserMonitorFromPoint(
3554 NtUserMonitorFromRect(
3560 NtUserMonitorFromWindow(
3564 typedef struct _SETSCROLLBARINFO
3568 DWORD rgstate
[CCHILDREN_SCROLLBAR
+ 1];
3569 } SETSCROLLBARINFO
, *PSETSCROLLBARINFO
;
3573 NtUserSetScrollBarInfo(
3576 SETSCROLLBARINFO
*info
);
3578 #endif /* __WIN32K_NTUSER_H */