2 * Copyright 2021 Jacek Caban for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
28 /* KernelCallbackTable codes, not compatible with Windows */
31 /* user32 callbacks */
32 NtUserCallEnumDisplayMonitor
,
33 NtUserCallSendAsyncCallback
,
34 NtUserCallWinEventHook
,
36 NtUserCallWindowsHook
,
38 NtUserDrawNonClientButton
,
41 NtUserFreeCachedClipboardData
,
43 NtUserImmTranslateMessage
,
44 NtUserInitBuiltinClasses
,
49 NtUserRenderSynthesizedFormat
,
50 NtUserUnpackDDEMessage
,
55 NtUserCallVulkanDebugReportCallback
,
56 NtUserCallVulkanDebugUtilsCallback
,
58 NtUserCallOpenGLDebugMessageCallback
,
59 /* Driver-specific callbacks */
60 NtUserDriverCallbackFirst
,
61 NtUserDriverCallbackLast
= NtUserDriverCallbackFirst
+ 9,
65 /* TEB thread info, not compatible with Windows */
66 struct ntuser_thread_info
68 UINT64 driver_data
; /* driver-specific data */
69 DWORD message_time
; /* value for GetMessageTime */
70 DWORD message_pos
; /* value for GetMessagePos */
71 UINT64 message_extra
; /* value for GetMessageExtraInfo */
72 INPUT_MESSAGE_SOURCE msg_source
; /* Message source for current message */
73 WORD recursion_count
; /* SendMessage recursion counter */
74 UINT receive_flags
; /* currently received message flags */
75 UINT top_window
; /* desktop window */
76 UINT msg_window
; /* HWND_MESSAGE parent window */
77 DPI_AWARENESS dpi_awareness
; /* DPI awareness */
78 UINT default_imc
; /* default input context */
79 UINT64 client_imm
; /* client IMM thread info */
80 UINT64 wmchar_data
; /* client data for WM_CHAR mappings */
83 static inline struct ntuser_thread_info
*NtUserGetThreadInfo(void)
86 if (NtCurrentTeb()->GdiBatchCount
)
88 TEB64
*teb64
= (TEB64
*)(UINT_PTR
)NtCurrentTeb()->GdiBatchCount
;
89 return (struct ntuser_thread_info
*)teb64
->Win32ClientInfo
;
92 return (struct ntuser_thread_info
*)NtCurrentTeb()->Win32ClientInfo
;
95 /* NtUserCallEnumDisplayMonitor params */
96 struct enum_display_monitor_params
105 /* NtUserCallSendAsyncCallback params */
106 struct send_async_params
108 SENDASYNCPROC callback
;
115 /* NtUserCallWinEventHook params */
116 struct win_event_hook_params
126 WCHAR module
[MAX_PATH
];
129 /* type of message-sending functions that need special WM_CHAR handling */
132 WMCHAR_MAP_POSTMESSAGE
,
133 WMCHAR_MAP_SENDMESSAGE
,
134 WMCHAR_MAP_SENDMESSAGETIMEOUT
,
135 WMCHAR_MAP_RECVMESSAGE
,
136 WMCHAR_MAP_DISPATCHMESSAGE
,
137 WMCHAR_MAP_CALLWINDOWPROC
,
139 WMCHAR_MAP_NOMAPPING
= WMCHAR_MAP_COUNT
142 /* NtUserCallWindowProc params */
143 struct win_proc_params
154 enum wm_char_mapping mapping
;
155 DPI_AWARENESS_CONTEXT dpi_awareness
;
160 /* NtUserCallWindowsHook params */
161 struct win_hook_params
176 /* NtUserCopyImage params */
177 struct copy_image_params
186 /* NtUserDrawText params */
187 struct draw_text_params
192 RECT
*ret_rect
; /* FIXME: Use NtCallbackReturn instead */
197 /* NtUserFreeCachedClipboardData params */
198 struct free_cached_data_params
204 /* NtUserImmProcessKey params */
205 struct imm_process_key_params
213 /* NtUserImmTranslateMessage params */
214 struct imm_translate_message_params
222 /* NtUserLoadImage params */
223 struct load_image_params
233 /* NtUserLoadSysMenu params */
234 struct load_sys_menu_params
239 /* NtUserPostDDEMessage params */
240 struct post_dde_message_params
250 /* NtUserRenderSynthesizedFormat params */
251 struct render_synthesized_format_params
257 /* NtUserUnpackDDEMessage params */
258 struct unpack_dde_message_result
264 struct unpack_dde_message_params
266 struct unpack_dde_message_result
*result
; /* FIXME: Use NtCallbackReturn instead */
274 /* process DPI awareness contexts */
275 #define NTUSER_DPI_UNAWARE 0x00006010
276 #define NTUSER_DPI_SYSTEM_AWARE 0x00006011
277 #define NTUSER_DPI_PER_MONITOR_AWARE 0x00000012
278 #define NTUSER_DPI_PER_MONITOR_AWARE_V2 0x00000022
279 #define NTUSER_DPI_PER_UNAWARE_GDISCALED 0x40006010
281 /* message spy definitions */
282 #define SPY_DISPATCHMESSAGE 0x0100
283 #define SPY_SENDMESSAGE 0x0101
284 #define SPY_DEFWNDPROC 0x0102
286 #define SPY_RESULT_OK 0x0001
287 #define SPY_RESULT_DEFWND 0x0002
289 /* CreateDesktop wine specific flag */
290 #define DF_WINE_CREATE_DESKTOP 0x80000000
292 /* NtUserMessageCall codes */
295 NtUserScrollBarWndProc
= 0x029a,
296 NtUserPopupMenuWndProc
= 0x029c,
297 NtUserDesktopWindowProc
= 0x029d,
298 NtUserDefWindowProc
= 0x029e,
299 NtUserCallWindowProc
= 0x02ab,
300 NtUserSendMessage
= 0x02b1,
301 NtUserSendMessageTimeout
= 0x02b3,
302 NtUserSendNotifyMessage
= 0x02b7,
303 NtUserSendMessageCallback
= 0x02b8,
304 /* Wine-specific exports */
305 NtUserClipboardWindowProc
= 0x0300,
306 NtUserGetDispatchParams
= 0x3001,
307 NtUserSendDriverMessage
= 0x3002,
308 NtUserSpyGetMsgName
= 0x3003,
309 NtUserSpyEnter
= 0x0304,
310 NtUserSpyExit
= 0x0305,
311 NtUserWinProcResult
= 0x0306,
312 NtUserImeDriverCall
= 0x0307,
315 /* NtUserThunkedMenuItemInfo codes */
318 NtUserSetMenuItemInfo
,
319 NtUserInsertMenuItem
,
320 /* Wine extensions */
321 NtUserCheckMenuRadioItem
,
322 NtUserGetMenuDefaultItem
,
324 NtUserGetMenuItemInfoA
,
325 NtUserGetMenuItemInfoW
,
330 struct send_message_timeout_params
337 struct send_message_callback_params
339 SENDASYNCPROC callback
;
343 /* color index used to retrieve system 55aa brush */
344 #define COLOR_55AA_BRUSH 0x100
346 /* user object types */
347 #define NTUSER_OBJ_WINDOW 0x01
348 #define NTUSER_OBJ_MENU 0x02
349 #define NTUSER_OBJ_ICON 0x03
350 #define NTUSER_OBJ_WINPOS 0x04
351 #define NTUSER_OBJ_ACCEL 0x08
352 #define NTUSER_OBJ_HOOK 0x0f
353 #define NTUSER_OBJ_IMC 0x11
355 /* NtUserScrollWindowEx flag */
356 #define SW_NODCCACHE 0x8000
358 /* NtUserSetScrollInfo flag */
359 #define SIF_RETURNPREV 0x1000
361 /* NtUserInitializeClientPfnArrays parameter, not compatible with Windows */
362 struct user_client_procs
364 WNDPROC pButtonWndProc
;
365 WNDPROC pComboWndProc
;
366 WNDPROC pDefWindowProc
;
368 WNDPROC pEditWndProc
;
369 WNDPROC pListBoxWndProc
;
370 WNDPROC pMDIClientWndProc
;
371 WNDPROC pScrollBarWndProc
;
372 WNDPROC pStaticWndProc
;
374 WNDPROC pDesktopWndProc
;
375 WNDPROC pIconTitleWndProc
;
376 WNDPROC pPopupMenuWndProc
;
377 WNDPROC pMessageWndProc
;
380 /* NtUserSetCursorIconData parameter, not compatible with Windows */
381 struct cursoricon_frame
383 UINT width
; /* frame-specific width */
384 UINT height
; /* frame-specific height */
385 HBITMAP color
; /* color bitmap */
386 HBITMAP alpha
; /* pre-multiplied alpha bitmap for 32-bpp icons */
387 HBITMAP mask
; /* mask bitmap (followed by color for 1-bpp icons) */
391 struct cursoricon_desc
397 struct cursoricon_frame
*frames
;
403 struct client_menu_name
407 UNICODE_STRING
*nameUS
;
410 /* NtUserGetClipboardData params, not compatible with Windows */
411 struct get_clipboard_params
420 /* NtUserSetClipboardData params, not compatible with Windows */
421 struct set_clipboard_params
429 /* NtUserNonClientButton params */
430 struct draw_non_client_button_params
434 enum NONCLIENT_BUTTON_TYPE type
;
440 /* NtUserDrawScrollBar params */
441 struct draw_scroll_bar_params
447 struct SCROLL_TRACKING_INFO tracking_info
;
458 /* NtUserUpdateInputContext param, not compatible with Window */
459 enum input_context_attr
461 NtUserInputContextClientPtr
,
462 NtUserInputContextThreadId
,
465 /* NtUserAssociateInputContext result */
466 enum associate_input_context_result
473 /* internal messages codes */
474 enum wine_internal_message
476 WM_WINE_DESTROYWINDOW
= 0x80000000,
477 WM_WINE_SETWINDOWPOS
,
480 WM_WINE_SETWINDOWLONG
,
482 WM_WINE_SETACTIVEWINDOW
,
483 WM_WINE_KEYBOARD_LL_HOOK
,
484 WM_WINE_MOUSE_LL_HOOK
,
486 WM_WINE_UPDATEWINDOWSTATE
,
487 WM_WINE_FIRST_DRIVER_MSG
= 0x80001000, /* range of messages reserved for the USER driver */
488 WM_WINE_LAST_DRIVER_MSG
= 0x80001fff
491 /* internal IME message */
492 #define WM_IME_INTERNAL 0x287
493 #define IME_INTERNAL_ACTIVATE 0x17
494 #define IME_INTERNAL_DEACTIVATE 0x18
495 #define IME_INTERNAL_HKL_ACTIVATE 0x19
496 #define IME_INTERNAL_HKL_DEACTIVATE 0x20
498 /* internal WM_IME_NOTIFY wparams, not compatible with Windows */
499 #define IMN_WINE_SET_OPEN_STATUS 0x000f
500 #define IMN_WINE_SET_COMP_STRING 0x0010
502 /* builtin IME driver calls */
505 WINE_IME_PROCESS_KEY
,
506 WINE_IME_TO_ASCII_EX
,
509 /* NtUserImeDriverCall params */
510 struct ime_driver_call_params
514 COMPOSITIONSTRING
*compstr
;
517 #define WM_SYSTIMER 0x0118
519 /* the various structures that can be sent in messages, in platform-independent layout */
520 struct packed_CREATESTRUCTW
522 ULONGLONG lpCreateParams
;
539 struct packed_DRAWITEMSTRUCT
554 struct packed_MEASUREITEMSTRUCT
564 struct packed_DELETEITEMSTRUCT
574 struct packed_COMPAREITEMSTRUCT
588 struct packed_WINDOWPOS
592 UINT hwndInsertAfter
;
602 struct packed_COPYDATASTRUCT
609 struct packed_HELPINFO
616 ULONGLONG dwContextId
;
620 struct packed_NCCALCSIZE_PARAMS
626 UINT hwndInsertAfter
;
648 struct packed_MDINEXTMENU
658 struct packed_MDICREATESTRUCTW
672 HKL WINAPI
NtUserActivateKeyboardLayout( HKL layout
, UINT flags
);
673 BOOL WINAPI
NtUserAddClipboardFormatListener( HWND hwnd
);
674 UINT WINAPI
NtUserAssociateInputContext( HWND hwnd
, HIMC ctx
, ULONG flags
);
675 BOOL WINAPI
NtUserAttachThreadInput( DWORD from
, DWORD to
, BOOL attach
);
676 HDC WINAPI
NtUserBeginPaint( HWND hwnd
, PAINTSTRUCT
*ps
);
677 NTSTATUS WINAPI
NtUserBuildHimcList( UINT thread_id
, UINT count
, HIMC
*buffer
, UINT
*size
);
678 NTSTATUS WINAPI
NtUserBuildHwndList( HDESK desktop
, ULONG unk2
, ULONG unk3
, ULONG unk4
,
679 ULONG thread_id
, ULONG count
, HWND
*buffer
, ULONG
*size
);
680 ULONG_PTR WINAPI
NtUserCallHwnd( HWND hwnd
, DWORD code
);
681 ULONG_PTR WINAPI
NtUserCallHwndParam( HWND hwnd
, DWORD_PTR param
, DWORD code
);
682 LRESULT WINAPI
NtUserCallNextHookEx( HHOOK hhook
, INT code
, WPARAM wparam
, LPARAM lparam
);
683 BOOL WINAPI
NtUserCallMsgFilter( MSG
*msg
, INT code
);
684 ULONG_PTR WINAPI
NtUserCallNoParam( ULONG code
);
685 ULONG_PTR WINAPI
NtUserCallOneParam( ULONG_PTR arg
, ULONG code
);
686 ULONG_PTR WINAPI
NtUserCallTwoParam( ULONG_PTR arg1
, ULONG_PTR arg2
, ULONG code
);
687 BOOL WINAPI
NtUserChangeClipboardChain( HWND hwnd
, HWND next
);
688 LONG WINAPI
NtUserChangeDisplaySettings( UNICODE_STRING
*devname
, DEVMODEW
*devmode
, HWND hwnd
,
689 DWORD flags
, void *lparam
);
690 DWORD WINAPI
NtUserCheckMenuItem( HMENU handle
, UINT id
, UINT flags
);
691 HWND WINAPI
NtUserChildWindowFromPointEx( HWND parent
, LONG x
, LONG y
, UINT flags
);
692 BOOL WINAPI
NtUserClipCursor( const RECT
*rect
);
693 BOOL WINAPI
NtUserCloseClipboard(void);
694 BOOL WINAPI
NtUserCloseDesktop( HDESK handle
);
695 BOOL WINAPI
NtUserCloseWindowStation( HWINSTA handle
);
696 INT WINAPI
NtUserCopyAcceleratorTable( HACCEL src
, ACCEL
*dst
, INT count
);
697 INT WINAPI
NtUserCountClipboardFormats(void);
698 HACCEL WINAPI
NtUserCreateAcceleratorTable( ACCEL
*table
, INT count
);
699 BOOL WINAPI
NtUserCreateCaret( HWND hwnd
, HBITMAP bitmap
, int width
, int height
);
700 HDESK WINAPI
NtUserCreateDesktopEx( OBJECT_ATTRIBUTES
*attr
, UNICODE_STRING
*device
,
701 DEVMODEW
*devmode
, DWORD flags
, ACCESS_MASK access
,
703 HIMC WINAPI
NtUserCreateInputContext( UINT_PTR client_ptr
);
704 HWND WINAPI
NtUserCreateWindowEx( DWORD ex_style
, UNICODE_STRING
*class_name
,
705 UNICODE_STRING
*version
, UNICODE_STRING
*window_name
,
706 DWORD style
, INT x
, INT y
, INT cx
, INT cy
,
707 HWND parent
, HMENU menu
, HINSTANCE instance
, void *params
,
708 DWORD flags
, HINSTANCE client_instance
, DWORD unk
, BOOL ansi
);
709 HWINSTA WINAPI
NtUserCreateWindowStation( OBJECT_ATTRIBUTES
*attr
, ACCESS_MASK mask
, ULONG arg3
,
710 ULONG arg4
, ULONG arg5
, ULONG arg6
, ULONG arg7
);
711 HDWP WINAPI
NtUserDeferWindowPosAndBand( HDWP hdwp
, HWND hwnd
, HWND after
, INT x
, INT y
,
712 INT cx
, INT cy
, UINT flags
, UINT unk1
, UINT unk2
);
713 BOOL WINAPI
NtUserDeleteMenu( HMENU menu
, UINT id
, UINT flags
);
714 BOOL WINAPI
NtUserDestroyAcceleratorTable( HACCEL handle
);
715 BOOL WINAPI
NtUserDestroyCursor( HCURSOR cursor
, ULONG arg
);
716 BOOL WINAPI
NtUserDestroyInputContext( HIMC handle
);
717 BOOL WINAPI
NtUserDestroyMenu( HMENU menu
);
718 BOOL WINAPI
NtUserDestroyWindow( HWND hwnd
);
719 BOOL WINAPI
NtUserDisableThreadIme( DWORD thread_id
);
720 LRESULT WINAPI
NtUserDispatchMessage( const MSG
*msg
);
721 NTSTATUS WINAPI
NtUserDisplayConfigGetDeviceInfo( DISPLAYCONFIG_DEVICE_INFO_HEADER
*packet
);
722 BOOL WINAPI
NtUserDragDetect( HWND hwnd
, int x
, int y
);
723 DWORD WINAPI
NtUserDragObject( HWND parent
, HWND hwnd
, UINT fmt
, ULONG_PTR data
, HCURSOR cursor
);
724 BOOL WINAPI
NtUserDrawCaptionTemp( HWND hwnd
, HDC hdc
, const RECT
*rect
, HFONT font
,
725 HICON icon
, const WCHAR
*str
, UINT flags
);
726 BOOL WINAPI
NtUserDrawIconEx( HDC hdc
, INT x0
, INT y0
, HICON icon
, INT width
,
727 INT height
, UINT istep
, HBRUSH hbr
, UINT flags
);
728 DWORD WINAPI
NtUserDrawMenuBarTemp( HWND hwnd
, HDC hdc
, RECT
*rect
, HMENU handle
, HFONT font
);
729 BOOL WINAPI
NtUserEmptyClipboard(void);
730 BOOL WINAPI
NtUserEnableMenuItem( HMENU handle
, UINT id
, UINT flags
);
731 BOOL WINAPI
NtUserEnableMouseInPointer( BOOL
);
732 BOOL WINAPI
NtUserEnableScrollBar( HWND hwnd
, UINT bar
, UINT flags
);
733 BOOL WINAPI
NtUserEndDeferWindowPosEx( HDWP hdwp
, BOOL async
);
734 BOOL WINAPI
NtUserEndMenu(void);
735 BOOL WINAPI
NtUserEndPaint( HWND hwnd
, const PAINTSTRUCT
*ps
);
736 NTSTATUS WINAPI
NtUserEnumDisplayDevices( UNICODE_STRING
*device
, DWORD index
,
737 DISPLAY_DEVICEW
*info
, DWORD flags
);
738 BOOL WINAPI
NtUserEnumDisplayMonitors( HDC hdc
, RECT
*rect
, MONITORENUMPROC proc
, LPARAM lp
);
739 BOOL WINAPI
NtUserEnumDisplaySettings( UNICODE_STRING
*device
, DWORD mode
,
740 DEVMODEW
*dev_mode
, DWORD flags
);
741 INT WINAPI
NtUserExcludeUpdateRgn( HDC hdc
, HWND hwnd
);
742 HICON WINAPI
NtUserFindExistingCursorIcon( UNICODE_STRING
*module
, UNICODE_STRING
*res_name
,
744 HWND WINAPI
NtUserFindWindowEx( HWND parent
, HWND child
, UNICODE_STRING
*class,
745 UNICODE_STRING
*title
, ULONG unk
);
746 BOOL WINAPI
NtUserFlashWindowEx( FLASHWINFO
*info
);
747 HWND WINAPI
NtUserGetAncestor( HWND hwnd
, UINT type
);
748 SHORT WINAPI
NtUserGetAsyncKeyState( INT key
);
749 ULONG WINAPI
NtUserGetAtomName( ATOM atom
, UNICODE_STRING
*name
);
750 UINT WINAPI
NtUserGetCaretBlinkTime(void);
751 BOOL WINAPI
NtUserGetCaretPos( POINT
*point
);
752 ATOM WINAPI
NtUserGetClassInfoEx( HINSTANCE instance
, UNICODE_STRING
*name
, WNDCLASSEXW
*wc
,
753 struct client_menu_name
*menu_name
, BOOL ansi
);
754 INT WINAPI
NtUserGetClassName( HWND hwnd
, BOOL real
, UNICODE_STRING
*name
);
755 HANDLE WINAPI
NtUserGetClipboardData( UINT format
, struct get_clipboard_params
*params
);
756 INT WINAPI
NtUserGetClipboardFormatName( UINT format
, WCHAR
*buffer
, INT maxlen
);
757 HWND WINAPI
NtUserGetClipboardOwner(void);
758 DWORD WINAPI
NtUserGetClipboardSequenceNumber(void);
759 HWND WINAPI
NtUserGetClipboardViewer(void);
760 HCURSOR WINAPI
NtUserGetCursor(void);
761 HCURSOR WINAPI
NtUserGetCursorFrameInfo( HCURSOR hCursor
, DWORD istep
, DWORD
*rate_jiffies
,
763 BOOL WINAPI
NtUserGetCursorInfo( CURSORINFO
*info
);
764 HDC WINAPI
NtUserGetDC( HWND hwnd
);
765 HDC WINAPI
NtUserGetDCEx( HWND hwnd
, HRGN clip_rgn
, DWORD flags
);
766 LONG WINAPI
NtUserGetDisplayConfigBufferSizes( UINT32 flags
, UINT32
*num_path_info
,
767 UINT32
*num_mode_info
);
768 UINT WINAPI
NtUserGetDoubleClickTime(void);
769 BOOL WINAPI
NtUserGetDpiForMonitor( HMONITOR monitor
, UINT type
, UINT
*x
, UINT
*y
);
770 HWND WINAPI
NtUserGetForegroundWindow(void);
771 BOOL WINAPI
NtUserGetGUIThreadInfo( DWORD id
, GUITHREADINFO
*info
);
772 BOOL WINAPI
NtUserGetIconInfo( HICON icon
, ICONINFO
*info
, UNICODE_STRING
*module
,
773 UNICODE_STRING
*res_name
, DWORD
*bpp
, LONG unk
);
774 BOOL WINAPI
NtUserGetIconSize( HICON handle
, UINT step
, LONG
*width
, LONG
*height
);
775 UINT WINAPI
NtUserGetInternalWindowPos( HWND hwnd
, RECT
*rect
, POINT
*pt
);
776 INT WINAPI
NtUserGetKeyNameText( LONG lparam
, WCHAR
*buffer
, INT size
);
777 SHORT WINAPI
NtUserGetKeyState( INT vkey
);
778 HKL WINAPI
NtUserGetKeyboardLayout( DWORD thread_id
);
779 UINT WINAPI
NtUserGetKeyboardLayoutList( INT size
, HKL
*layouts
);
780 BOOL WINAPI
NtUserGetKeyboardLayoutName( WCHAR
*name
);
781 BOOL WINAPI
NtUserGetKeyboardState( BYTE
*state
);
782 BOOL WINAPI
NtUserGetLayeredWindowAttributes( HWND hwnd
, COLORREF
*key
, BYTE
*alpha
, DWORD
*flags
);
783 BOOL WINAPI
NtUserGetMenuBarInfo( HWND hwnd
, LONG id
, LONG item
, MENUBARINFO
*info
);
784 BOOL WINAPI
NtUserGetMenuItemRect( HWND hwnd
, HMENU menu
, UINT item
, RECT
*rect
);
785 BOOL WINAPI
NtUserGetMessage( MSG
*msg
, HWND hwnd
, UINT first
, UINT last
);
786 int WINAPI
NtUserGetMouseMovePointsEx( UINT size
, MOUSEMOVEPOINT
*ptin
, MOUSEMOVEPOINT
*ptout
,
787 int count
, DWORD resolution
);
788 BOOL WINAPI
NtUserGetObjectInformation( HANDLE handle
, INT index
, void *info
,
789 DWORD len
, DWORD
*needed
);
790 HWND WINAPI
NtUserGetOpenClipboardWindow(void);
791 BOOL WINAPI
NtUserGetPointerInfoList( UINT32 id
, POINTER_INPUT_TYPE type
, UINT_PTR
, UINT_PTR
, SIZE_T size
,
792 UINT32
*entry_count
, UINT32
*pointer_count
, void *pointer_info
);
793 INT WINAPI
NtUserGetPriorityClipboardFormat( UINT
*list
, INT count
);
794 HWINSTA WINAPI
NtUserGetProcessWindowStation(void);
795 HANDLE WINAPI
NtUserGetProp( HWND hwnd
, const WCHAR
*str
);
796 ULONG WINAPI
NtUserGetProcessDpiAwarenessContext( HANDLE process
);
797 DWORD WINAPI
NtUserGetQueueStatus( UINT flags
);
798 UINT WINAPI
NtUserGetRawInputBuffer( RAWINPUT
*data
, UINT
*data_size
, UINT header_size
);
799 UINT WINAPI
NtUserGetRawInputData( HRAWINPUT rawinput
, UINT command
, void *data
, UINT
*data_size
, UINT header_size
);
800 UINT WINAPI
NtUserGetRawInputDeviceInfo( HANDLE handle
, UINT command
, void *data
, UINT
*data_size
);
801 UINT WINAPI
NtUserGetRawInputDeviceList( RAWINPUTDEVICELIST
*devices
, UINT
*device_count
, UINT size
);
802 UINT WINAPI
NtUserGetRegisteredRawInputDevices( RAWINPUTDEVICE
*devices
, UINT
*device_count
, UINT size
);
803 BOOL WINAPI
NtUserGetScrollBarInfo( HWND hwnd
, LONG id
, SCROLLBARINFO
*info
);
804 ULONG WINAPI
NtUserGetSystemDpiForProcess( HANDLE process
);
805 HMENU WINAPI
NtUserGetSystemMenu( HWND hwnd
, BOOL revert
);
806 HDESK WINAPI
NtUserGetThreadDesktop( DWORD thread
);
807 BOOL WINAPI
NtUserGetTitleBarInfo( HWND hwnd
, TITLEBARINFO
*info
);
808 INT WINAPI
NtUserGetUpdateRgn( HWND hwnd
, HRGN hrgn
, BOOL erase
);
809 BOOL WINAPI
NtUserGetUpdatedClipboardFormats( UINT
*formats
, UINT size
, UINT
*out_size
);
810 BOOL WINAPI
NtUserGetUpdateRect( HWND hwnd
, RECT
*rect
, BOOL erase
);
811 HDC WINAPI
NtUserGetWindowDC( HWND hwnd
);
812 BOOL WINAPI
NtUserGetWindowPlacement( HWND hwnd
, WINDOWPLACEMENT
*placement
);
813 int WINAPI
NtUserGetWindowRgnEx( HWND hwnd
, HRGN hrgn
, UINT unk
);
814 BOOL WINAPI
NtUserHideCaret( HWND hwnd
);
815 BOOL WINAPI
NtUserHiliteMenuItem( HWND hwnd
, HMENU handle
, UINT item
, UINT hilite
);
816 NTSTATUS WINAPI
NtUserInitializeClientPfnArrays( const struct user_client_procs
*client_procsA
,
817 const struct user_client_procs
*client_procsW
,
818 const void *client_workers
, HINSTANCE user_module
);
819 HICON WINAPI
NtUserInternalGetWindowIcon( HWND hwnd
, UINT type
);
820 INT WINAPI
NtUserInternalGetWindowText( HWND hwnd
, WCHAR
*text
, INT count
);
821 BOOL WINAPI
NtUserIsClipboardFormatAvailable( UINT format
);
822 BOOL WINAPI
NtUserIsMouseInPointerEnabled(void);
823 BOOL WINAPI
NtUserInvalidateRect( HWND hwnd
, const RECT
*rect
, BOOL erase
);
824 BOOL WINAPI
NtUserInvalidateRgn( HWND hwnd
, HRGN hrgn
, BOOL erase
);
825 BOOL WINAPI
NtUserKillTimer( HWND hwnd
, UINT_PTR id
);
826 BOOL WINAPI
NtUserLockWindowUpdate( HWND hwnd
);
827 BOOL WINAPI
NtUserLogicalToPerMonitorDPIPhysicalPoint( HWND hwnd
, POINT
*pt
);
828 UINT WINAPI
NtUserMapVirtualKeyEx( UINT code
, UINT type
, HKL layout
);
829 INT WINAPI
NtUserMenuItemFromPoint( HWND hwnd
, HMENU handle
, int x
, int y
);
830 LRESULT WINAPI
NtUserMessageCall( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
,
831 void *result_info
, DWORD type
, BOOL ansi
);
832 BOOL WINAPI
NtUserMoveWindow( HWND hwnd
, INT x
, INT y
, INT cx
, INT cy
, BOOL repaint
);
833 DWORD WINAPI
NtUserMsgWaitForMultipleObjectsEx( DWORD count
, const HANDLE
*handles
,
834 DWORD timeout
, DWORD mask
, DWORD flags
);
835 void WINAPI
NtUserNotifyIMEStatus( HWND hwnd
, UINT status
);
836 void WINAPI
NtUserNotifyWinEvent( DWORD event
, HWND hwnd
, LONG object_id
, LONG child_id
);
837 HWINSTA WINAPI
NtUserOpenWindowStation( OBJECT_ATTRIBUTES
*attr
, ACCESS_MASK access
);
838 BOOL WINAPI
NtUserOpenClipboard( HWND hwnd
, ULONG unk
);
839 HDESK WINAPI
NtUserOpenDesktop( OBJECT_ATTRIBUTES
*attr
, DWORD flags
, ACCESS_MASK access
);
840 HDESK WINAPI
NtUserOpenInputDesktop( DWORD flags
, BOOL inherit
, ACCESS_MASK access
);
841 BOOL WINAPI
NtUserPeekMessage( MSG
*msg_out
, HWND hwnd
, UINT first
, UINT last
, UINT flags
);
842 BOOL WINAPI
NtUserPerMonitorDPIPhysicalToLogicalPoint( HWND hwnd
, POINT
*pt
);
843 BOOL WINAPI
NtUserPostMessage( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
);
844 BOOL WINAPI
NtUserPostThreadMessage( DWORD thread
, UINT msg
, WPARAM wparam
, LPARAM lparam
);
845 BOOL WINAPI
NtUserPrintWindow( HWND hwnd
, HDC hdc
, UINT flags
);
846 UINT_PTR WINAPI
NtUserQueryInputContext( HIMC handle
, UINT attr
);
847 HWND WINAPI
NtUserRealChildWindowFromPoint( HWND parent
, LONG x
, LONG y
);
848 BOOL WINAPI
NtUserRedrawWindow( HWND hwnd
, const RECT
*rect
, HRGN hrgn
, UINT flags
);
849 ATOM WINAPI
NtUserRegisterClassExWOW( const WNDCLASSEXW
*wc
, UNICODE_STRING
*name
, UNICODE_STRING
*version
,
850 struct client_menu_name
*client_menu_name
, DWORD fnid
, DWORD flags
,
852 BOOL WINAPI
NtUserRegisterHotKey( HWND hwnd
, INT id
, UINT modifiers
, UINT vk
);
853 BOOL WINAPI
NtUserRegisterRawInputDevices( const RAWINPUTDEVICE
*devices
, UINT device_count
, UINT size
);
854 INT WINAPI
NtUserReleaseDC( HWND hwnd
, HDC hdc
);
855 BOOL WINAPI
NtUserRemoveClipboardFormatListener( HWND hwnd
);
856 BOOL WINAPI
NtUserRemoveMenu( HMENU menu
, UINT id
, UINT flags
);
857 HANDLE WINAPI
NtUserRemoveProp( HWND hwnd
, const WCHAR
*str
);
858 BOOL WINAPI
NtUserScrollDC( HDC hdc
, INT dx
, INT dy
, const RECT
*scroll
, const RECT
*clip
,
859 HRGN ret_update_rgn
, RECT
*update_rect
);
860 INT WINAPI
NtUserScrollWindowEx( HWND hwnd
, INT dx
, INT dy
, const RECT
*rect
,
861 const RECT
*clip_rect
, HRGN update_rgn
,
862 RECT
*update_rect
, UINT flags
) DECLSPEC_HIDDEN
;
863 HPALETTE WINAPI
NtUserSelectPalette( HDC hdc
, HPALETTE palette
, WORD force_background
);
864 UINT WINAPI
NtUserSendInput( UINT count
, INPUT
*inputs
, int size
);
865 HWND WINAPI
NtUserSetActiveWindow( HWND hwnd
);
866 HWND WINAPI
NtUserSetCapture( HWND hwnd
);
867 DWORD WINAPI
NtUserSetClassLong( HWND hwnd
, INT offset
, LONG newval
, BOOL ansi
);
868 ULONG_PTR WINAPI
NtUserSetClassLongPtr( HWND hwnd
, INT offset
, LONG_PTR newval
, BOOL ansi
);
869 WORD WINAPI
NtUserSetClassWord( HWND hwnd
, INT offset
, WORD newval
);
870 NTSTATUS WINAPI
NtUserSetClipboardData( UINT format
, HANDLE handle
, struct set_clipboard_params
*params
);
871 HWND WINAPI
NtUserSetClipboardViewer( HWND hwnd
);
872 HCURSOR WINAPI
NtUserSetCursor( HCURSOR cursor
);
873 BOOL WINAPI
NtUserSetCursorIconData( HCURSOR cursor
, UNICODE_STRING
*module
, UNICODE_STRING
*res_name
,
874 struct cursoricon_desc
*desc
);
875 BOOL WINAPI
NtUserSetCursorPos( INT x
, INT y
);
876 HWND WINAPI
NtUserSetFocus( HWND hwnd
);
877 void WINAPI
NtUserSetInternalWindowPos( HWND hwnd
, UINT cmd
, RECT
*rect
, POINT
*pt
);
878 BOOL WINAPI
NtUserSetKeyboardState( BYTE
*state
);
879 BOOL WINAPI
NtUserSetLayeredWindowAttributes( HWND hwnd
, COLORREF key
, BYTE alpha
, DWORD flags
);
880 BOOL WINAPI
NtUserSetMenu( HWND hwnd
, HMENU menu
);
881 BOOL WINAPI
NtUserSetMenuContextHelpId( HMENU handle
, DWORD id
);
882 BOOL WINAPI
NtUserSetMenuDefaultItem( HMENU handle
, UINT item
, UINT bypos
);
883 BOOL WINAPI
NtUserSetObjectInformation( HANDLE handle
, INT index
, void *info
, DWORD len
);
884 HWND WINAPI
NtUserSetParent( HWND hwnd
, HWND parent
);
885 BOOL WINAPI
NtUserSetProcessDpiAwarenessContext( ULONG awareness
, ULONG unknown
);
886 BOOL WINAPI
NtUserSetProcessWindowStation( HWINSTA handle
);
887 BOOL WINAPI
NtUserSetProp( HWND hwnd
, const WCHAR
*str
, HANDLE handle
);
888 INT WINAPI
NtUserSetScrollInfo( HWND hwnd
, INT bar
, const SCROLLINFO
*info
, BOOL redraw
);
889 BOOL WINAPI
NtUserSetShellWindowEx( HWND shell
, HWND list_view
);
890 BOOL WINAPI
NtUserSetSysColors( INT count
, const INT
*colors
, const COLORREF
*values
);
891 BOOL WINAPI
NtUserSetSystemMenu( HWND hwnd
, HMENU menu
);
892 UINT_PTR WINAPI
NtUserSetSystemTimer( HWND hwnd
, UINT_PTR id
, UINT timeout
);
893 BOOL WINAPI
NtUserSetThreadDesktop( HDESK handle
);
894 UINT_PTR WINAPI
NtUserSetTimer( HWND hwnd
, UINT_PTR id
, UINT timeout
, TIMERPROC proc
, ULONG tolerance
);
895 LONG WINAPI
NtUserSetWindowLong( HWND hwnd
, INT offset
, LONG newval
, BOOL ansi
);
896 LONG_PTR WINAPI
NtUserSetWindowLongPtr( HWND hwnd
, INT offset
, LONG_PTR newval
, BOOL ansi
);
897 BOOL WINAPI
NtUserSetWindowPlacement( HWND hwnd
, const WINDOWPLACEMENT
*wpl
);
898 BOOL WINAPI
NtUserSetWindowPos( HWND hwnd
, HWND after
, INT x
, INT y
, INT cx
, INT cy
, UINT flags
);
899 int WINAPI
NtUserSetWindowRgn( HWND hwnd
, HRGN hrgn
, BOOL redraw
);
900 WORD WINAPI
NtUserSetWindowWord( HWND hwnd
, INT offset
, WORD newval
);
901 HHOOK WINAPI
NtUserSetWindowsHookEx( HINSTANCE inst
, UNICODE_STRING
*module
, DWORD tid
, INT id
,
902 HOOKPROC proc
, BOOL ansi
);
903 HWINEVENTHOOK WINAPI
NtUserSetWinEventHook( DWORD event_min
, DWORD event_max
, HMODULE inst
,
904 UNICODE_STRING
*module
, WINEVENTPROC proc
,
905 DWORD pid
, DWORD tid
, DWORD flags
);
906 BOOL WINAPI
NtUserShowCaret( HWND hwnd
);
907 INT WINAPI
NtUserShowCursor( BOOL show
);
908 BOOL WINAPI
NtUserShowScrollBar( HWND hwnd
, INT bar
, BOOL show
);
909 BOOL WINAPI
NtUserShowWindow( HWND hwnd
, INT cmd
);
910 BOOL WINAPI
NtUserShowWindowAsync( HWND hwnd
, INT cmd
);
911 BOOL WINAPI
NtUserSystemParametersInfo( UINT action
, UINT val
, void *ptr
, UINT winini
);
912 BOOL WINAPI
NtUserSystemParametersInfoForDpi( UINT action
, UINT val
, PVOID ptr
, UINT winini
, UINT dpi
);
913 BOOL WINAPI
NtUserThunkedMenuInfo( HMENU menu
, const MENUINFO
*info
);
914 UINT WINAPI
NtUserThunkedMenuItemInfo( HMENU menu
, UINT pos
, UINT flags
, UINT method
,
915 MENUITEMINFOW
*info
, UNICODE_STRING
*str
);
916 INT WINAPI
NtUserToUnicodeEx( UINT virt
, UINT scan
, const BYTE
*state
,
917 WCHAR
*str
, int size
, UINT flags
, HKL layout
);
918 BOOL WINAPI
NtUserTrackMouseEvent( TRACKMOUSEEVENT
*info
);
919 BOOL WINAPI
NtUserTrackPopupMenuEx( HMENU handle
, UINT flags
, INT x
, INT y
, HWND hwnd
, TPMPARAMS
*params
);
920 INT WINAPI
NtUserTranslateAccelerator( HWND hwnd
, HACCEL accel
, MSG
*msg
);
921 BOOL WINAPI
NtUserTranslateMessage( const MSG
*msg
, UINT flags
);
922 BOOL WINAPI
NtUserUnhookWinEvent( HWINEVENTHOOK hEventHook
);
923 BOOL WINAPI
NtUserUnhookWindowsHookEx( HHOOK handle
);
924 BOOL WINAPI
NtUserUnregisterClass( UNICODE_STRING
*name
, HINSTANCE instance
,
925 struct client_menu_name
*client_menu_name
);
926 BOOL WINAPI
NtUserUnregisterHotKey( HWND hwnd
, INT id
);
927 BOOL WINAPI
NtUserUpdateInputContext( HIMC handle
, UINT attr
, UINT_PTR value
);
928 BOOL WINAPI
NtUserUpdateLayeredWindow( HWND hwnd
, HDC hdc_dst
, const POINT
*pts_dst
, const SIZE
*size
,
929 HDC hdc_src
, const POINT
*pts_src
, COLORREF key
,
930 const BLENDFUNCTION
*blend
, DWORD flags
, const RECT
*dirty
);
931 BOOL WINAPI
NtUserValidateRect( HWND hwnd
, const RECT
*rect
);
932 WORD WINAPI
NtUserVkKeyScanEx( WCHAR chr
, HKL layout
);
933 DWORD WINAPI
NtUserWaitForInputIdle( HANDLE process
, DWORD timeout
, BOOL wow
);
934 BOOL WINAPI
NtUserWaitMessage(void);
935 HWND WINAPI
NtUserWindowFromDC( HDC hdc
);
936 HWND WINAPI
NtUserWindowFromPoint( LONG x
, LONG y
);
938 /* NtUserCallNoParam codes, not compatible with Windows */
941 NtUserCallNoParam_DestroyCaret
,
942 NtUserCallNoParam_GetDesktopWindow
,
943 NtUserCallNoParam_GetDialogBaseUnits
,
944 NtUserCallNoParam_GetInputState
,
945 NtUserCallNoParam_GetProcessDefaultLayout
,
946 NtUserCallNoParam_GetProgmanWindow
,
947 NtUserCallNoParam_GetShellWindow
,
948 NtUserCallNoParam_GetTaskmanWindow
,
949 NtUserCallNoParam_ReleaseCapture
,
950 /* temporary exports */
955 static inline BOOL
NtUserDestroyCaret(void)
957 return NtUserCallNoParam( NtUserCallNoParam_DestroyCaret
);
960 static inline HWND
NtUserGetDesktopWindow(void)
962 return UlongToHandle( NtUserCallNoParam( NtUserCallNoParam_GetDesktopWindow
));
965 static inline DWORD
NtUserGetDialogBaseUnits(void)
967 return NtUserCallNoParam( NtUserCallNoParam_GetDialogBaseUnits
);
970 static inline BOOL
NtUserGetInputState(void)
972 return NtUserCallNoParam( NtUserCallNoParam_GetInputState
);
975 static inline DWORD
NtUserGetProcessDefaultLayout(void)
977 return NtUserCallNoParam( NtUserCallNoParam_GetProcessDefaultLayout
);
980 static inline HWND
NtUserGetProgmanWindow(void)
982 return UlongToHandle( NtUserCallNoParam( NtUserCallNoParam_GetProgmanWindow
));
985 static inline HWND
NtUserGetShellWindow(void)
987 return UlongToHandle( NtUserCallNoParam( NtUserCallNoParam_GetShellWindow
));
990 static inline HWND
NtUserGetTaskmanWindow(void)
992 return UlongToHandle( NtUserCallNoParam( NtUserCallNoParam_GetTaskmanWindow
));
995 static inline BOOL
NtUserReleaseCapture(void)
997 return NtUserCallNoParam( NtUserCallNoParam_ReleaseCapture
);
1000 /* NtUserCallOneParam codes, not compatible with Windows */
1003 NtUserCallOneParam_BeginDeferWindowPos
,
1004 NtUserCallOneParam_CreateCursorIcon
,
1005 NtUserCallOneParam_CreateMenu
,
1006 NtUserCallOneParam_EnableDC
,
1007 NtUserCallOneParam_EnableThunkLock
,
1008 NtUserCallOneParam_EnumClipboardFormats
,
1009 NtUserCallOneParam_GetClipCursor
,
1010 NtUserCallOneParam_GetCursorPos
,
1011 NtUserCallOneParam_GetIconParam
,
1012 NtUserCallOneParam_GetMenuItemCount
,
1013 NtUserCallOneParam_GetPrimaryMonitorRect
,
1014 NtUserCallOneParam_GetSysColor
,
1015 NtUserCallOneParam_GetSysColorBrush
,
1016 NtUserCallOneParam_GetSysColorPen
,
1017 NtUserCallOneParam_GetSystemMetrics
,
1018 NtUserCallOneParam_GetVirtualScreenRect
,
1019 NtUserCallOneParam_IsWindowRectFullScreen
,
1020 NtUserCallOneParam_MessageBeep
,
1021 NtUserCallOneParam_RealizePalette
,
1022 NtUserCallOneParam_ReplyMessage
,
1023 NtUserCallOneParam_SetCaretBlinkTime
,
1024 NtUserCallOneParam_SetProcessDefaultLayout
,
1025 /* temporary exports */
1026 NtUserGetDeskPattern
,
1029 static inline HDWP
NtUserBeginDeferWindowPos( INT count
)
1031 return UlongToHandle( NtUserCallOneParam( count
, NtUserCallOneParam_BeginDeferWindowPos
));
1034 static inline HICON
NtUserCreateCursorIcon( BOOL is_icon
)
1036 return UlongToHandle( NtUserCallOneParam( is_icon
, NtUserCallOneParam_CreateCursorIcon
));
1039 static inline HMENU
NtUserCreateMenu( BOOL is_popup
)
1041 return UlongToHandle( NtUserCallOneParam( is_popup
, NtUserCallOneParam_CreateMenu
));
1044 static inline WORD
NtUserEnableDC( HDC hdc
)
1046 return NtUserCallOneParam( HandleToUlong(hdc
), NtUserCallOneParam_EnableDC
);
1049 static inline void NtUserEnableThunkLock( BOOL enable
)
1051 NtUserCallOneParam( enable
, NtUserCallOneParam_EnableThunkLock
);
1054 static inline UINT
NtUserEnumClipboardFormats( UINT format
)
1056 return NtUserCallOneParam( format
, NtUserCallOneParam_EnumClipboardFormats
);
1059 static inline BOOL
NtUserGetClipCursor( RECT
*rect
)
1061 return NtUserCallOneParam( (UINT_PTR
)rect
, NtUserCallOneParam_GetClipCursor
);
1064 static inline BOOL
NtUserGetCursorPos( POINT
*pt
)
1066 return NtUserCallOneParam( (UINT_PTR
)pt
, NtUserCallOneParam_GetCursorPos
);
1069 static inline UINT_PTR
NtUserGetIconParam( HICON icon
)
1071 return NtUserCallOneParam( HandleToUlong(icon
), NtUserCallOneParam_GetIconParam
);
1074 static inline UINT_PTR
NtUserGetMenuItemCount( HMENU menu
)
1076 return NtUserCallOneParam( HandleToUlong(menu
), NtUserCallOneParam_GetMenuItemCount
);
1079 static inline RECT
NtUserGetPrimaryMonitorRect(void)
1082 NtUserCallOneParam( (UINT_PTR
)&primary
, NtUserCallOneParam_GetPrimaryMonitorRect
);
1086 static inline BOOL
NtUserSetCaretBlinkTime( unsigned int time
)
1088 return NtUserCallOneParam( time
, NtUserCallOneParam_SetCaretBlinkTime
);
1091 static inline COLORREF
NtUserGetSysColor( INT index
)
1093 return NtUserCallOneParam( index
, NtUserCallOneParam_GetSysColor
);
1096 static inline HBRUSH
NtUserGetSysColorBrush( INT index
)
1098 return UlongToHandle( NtUserCallOneParam( index
, NtUserCallOneParam_GetSysColorBrush
));
1101 static inline HPEN
NtUserGetSysColorPen( INT index
)
1103 return UlongToHandle( NtUserCallOneParam( index
, NtUserCallOneParam_GetSysColorPen
));
1106 static inline INT
NtUserGetSystemMetrics( INT index
)
1108 return NtUserCallOneParam( index
, NtUserCallOneParam_GetSystemMetrics
);
1111 static inline RECT
NtUserGetVirtualScreenRect(void)
1114 NtUserCallOneParam( (UINT_PTR
)&virtual, NtUserCallOneParam_GetVirtualScreenRect
);
1118 static inline BOOL
NtUserIsWindowRectFullScreen( const RECT
*rect
)
1120 return NtUserCallOneParam( (UINT_PTR
)rect
, NtUserCallOneParam_IsWindowRectFullScreen
);
1123 static inline BOOL
NtUserMessageBeep( UINT i
)
1125 return NtUserCallOneParam( i
, NtUserCallOneParam_MessageBeep
);
1128 static inline UINT
NtUserRealizePalette( HDC hdc
)
1130 return NtUserCallOneParam( HandleToUlong(hdc
), NtUserCallOneParam_RealizePalette
);
1133 static inline BOOL
NtUserReplyMessage( LRESULT result
)
1135 return NtUserCallOneParam( result
, NtUserCallOneParam_ReplyMessage
);
1138 static inline UINT
NtUserSetProcessDefaultLayout( DWORD layout
)
1140 return NtUserCallOneParam( layout
, NtUserCallOneParam_SetProcessDefaultLayout
);
1143 /* NtUserCallTwoParam codes, not compatible with Windows */
1146 NtUserCallTwoParam_GetDialogProc
,
1147 NtUserCallTwoParam_GetMenuInfo
,
1148 NtUserCallTwoParam_GetMonitorInfo
,
1149 NtUserCallTwoParam_GetSystemMetricsForDpi
,
1150 NtUserCallTwoParam_MonitorFromRect
,
1151 NtUserCallTwoParam_SetCaretPos
,
1152 NtUserCallTwoParam_SetIconParam
,
1153 NtUserCallTwoParam_UnhookWindowsHook
,
1154 /* temporary exports */
1158 static inline DLGPROC
NtUserGetDialogProc( DLGPROC proc
, BOOL ansi
)
1160 return (DLGPROC
)NtUserCallTwoParam( (UINT_PTR
)proc
, ansi
, NtUserCallTwoParam_GetDialogProc
);
1163 static inline BOOL
NtUserGetMenuInfo( HMENU menu
, MENUINFO
*info
)
1165 return NtUserCallTwoParam( HandleToUlong(menu
), (ULONG_PTR
)info
,
1166 NtUserCallTwoParam_GetMenuInfo
);
1169 static inline BOOL
NtUserGetMonitorInfo( HMONITOR monitor
, MONITORINFO
*info
)
1171 return NtUserCallTwoParam( HandleToUlong(monitor
), (ULONG_PTR
)info
,
1172 NtUserCallTwoParam_GetMonitorInfo
);
1175 static inline INT
NtUserGetSystemMetricsForDpi( INT index
, UINT dpi
)
1177 return NtUserCallTwoParam( index
, dpi
, NtUserCallTwoParam_GetSystemMetricsForDpi
);
1180 static inline HMONITOR
NtUserMonitorFromRect( const RECT
*rect
, DWORD flags
)
1182 ULONG ret
= NtUserCallTwoParam( (LONG_PTR
)rect
, flags
, NtUserCallTwoParam_MonitorFromRect
);
1183 return UlongToHandle( ret
);
1186 static inline BOOL
NtUserSetCaretPos( int x
, int y
)
1188 return NtUserCallTwoParam( x
, y
, NtUserCallTwoParam_SetCaretPos
);
1191 static inline UINT_PTR
NtUserSetIconParam( HICON icon
, ULONG_PTR param
)
1193 return NtUserCallTwoParam( HandleToUlong(icon
), param
, NtUserCallTwoParam_SetIconParam
);
1196 static inline BOOL
NtUserUnhookWindowsHook( INT id
, HOOKPROC proc
)
1198 return NtUserCallTwoParam( id
, (UINT_PTR
)proc
, NtUserCallTwoParam_UnhookWindowsHook
);
1201 /* NtUserCallHwnd codes, not compatible with Windows */
1204 NtUserCallHwnd_ActivateOtherWindow
,
1205 NtUserCallHwnd_ArrangeIconicWindows
,
1206 NtUserCallHwnd_DrawMenuBar
,
1207 NtUserCallHwnd_GetDefaultImeWindow
,
1208 NtUserCallHwnd_GetDialogInfo
,
1209 NtUserCallHwnd_GetDpiForWindow
,
1210 NtUserCallHwnd_GetMDIClientInfo
,
1211 NtUserCallHwnd_GetParent
,
1212 NtUserCallHwnd_GetWindowContextHelpId
,
1213 NtUserCallHwnd_GetWindowDpiAwarenessContext
,
1214 NtUserCallHwnd_GetWindowInputContext
,
1215 NtUserCallHwnd_GetWindowSysSubMenu
,
1216 NtUserCallHwnd_GetWindowTextLength
,
1217 NtUserCallHwnd_IsWindow
,
1218 NtUserCallHwnd_IsWindowEnabled
,
1219 NtUserCallHwnd_IsWindowUnicode
,
1220 NtUserCallHwnd_IsWindowVisible
,
1221 NtUserCallHwnd_SetForegroundWindow
,
1222 NtUserCallHwnd_SetProgmanWindow
,
1223 NtUserCallHwnd_SetTaskmanWindow
,
1224 /* temporary exports */
1225 NtUserGetFullWindowHandle
,
1226 NtUserIsCurrehtProcessWindow
,
1227 NtUserIsCurrehtThreadWindow
,
1230 static inline void NtUserActivateOtherWindow( HWND hwnd
)
1232 NtUserCallHwnd( hwnd
, NtUserCallHwnd_ActivateOtherWindow
);
1235 static inline UINT
NtUserArrangeIconicWindows( HWND parent
)
1237 return NtUserCallHwnd( parent
, NtUserCallHwnd_ArrangeIconicWindows
);
1240 static inline BOOL
NtUserDrawMenuBar( HWND hwnd
)
1242 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_DrawMenuBar
);
1245 static inline DWORD
NtUserGetWindowContextHelpId( HWND hwnd
)
1247 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetWindowContextHelpId
);
1250 static inline HWND
NtUserGetDefaultImeWindow( HWND hwnd
)
1252 return UlongToHandle( NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetDefaultImeWindow
));
1255 static inline void *NtUserGetDialogInfo( HWND hwnd
)
1257 return (void *)NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetDialogInfo
);
1260 static inline UINT
NtUserGetDpiForWindow( HWND hwnd
)
1262 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetDpiForWindow
);
1265 static inline void *NtUserGetMDIClientInfo( HWND hwnd
)
1267 return (void *)NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetMDIClientInfo
);
1270 static inline HWND
NtUserGetParent( HWND hwnd
)
1272 return UlongToHandle( NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetParent
));
1275 static inline DPI_AWARENESS_CONTEXT
NtUserGetWindowDpiAwarenessContext( HWND hwnd
)
1277 return (DPI_AWARENESS_CONTEXT
)NtUserCallHwnd( hwnd
,
1278 NtUserCallHwnd_GetWindowDpiAwarenessContext
);
1281 static inline HIMC
NtUserGetWindowInputContext( HWND hwnd
)
1283 return UlongToHandle( NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetWindowInputContext
));
1286 static inline HMENU
NtUserGetWindowSysSubMenu( HWND hwnd
)
1288 return UlongToHandle( NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetWindowSysSubMenu
));
1291 static inline INT
NtUserGetWindowTextLength( HWND hwnd
)
1293 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_GetWindowTextLength
);
1296 static inline BOOL
NtUserIsWindow( HWND hwnd
)
1298 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_IsWindow
);
1301 static inline BOOL
NtUserIsWindowEnabled( HWND hwnd
)
1303 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_IsWindowEnabled
);
1306 static inline BOOL
NtUserIsWindowUnicode( HWND hwnd
)
1308 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_IsWindowUnicode
);
1311 static inline BOOL
NtUserIsWindowVisible( HWND hwnd
)
1313 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_IsWindowVisible
);
1316 static inline BOOL
NtUserSetForegroundWindow( HWND hwnd
)
1318 return NtUserCallHwnd( hwnd
, NtUserCallHwnd_SetForegroundWindow
);
1321 static inline HWND
NtUserSetProgmanWindow( HWND hwnd
)
1323 return UlongToHandle( NtUserCallHwnd( hwnd
, NtUserCallHwnd_SetProgmanWindow
));
1326 static inline HWND
NtUserSetTaskmanWindow( HWND hwnd
)
1328 return UlongToHandle( NtUserCallHwnd( hwnd
, NtUserCallHwnd_SetTaskmanWindow
));
1331 /* NtUserCallHwndParam codes, not compatible with Windows */
1334 NtUserCallHwndParam_ClientToScreen
,
1335 NtUserCallHwndParam_EnableWindow
,
1336 NtUserCallHwndParam_GetChildRect
,
1337 NtUserCallHwndParam_GetClassLongA
,
1338 NtUserCallHwndParam_GetClassLongW
,
1339 NtUserCallHwndParam_GetClassLongPtrA
,
1340 NtUserCallHwndParam_GetClassLongPtrW
,
1341 NtUserCallHwndParam_GetClassWord
,
1342 NtUserCallHwndParam_GetClientRect
,
1343 NtUserCallHwndParam_GetScrollInfo
,
1344 NtUserCallHwndParam_GetWindowInfo
,
1345 NtUserCallHwndParam_GetWindowLongA
,
1346 NtUserCallHwndParam_GetWindowLongW
,
1347 NtUserCallHwndParam_GetWindowLongPtrA
,
1348 NtUserCallHwndParam_GetWindowLongPtrW
,
1349 NtUserCallHwndParam_GetWindowRect
,
1350 NtUserCallHwndParam_GetWindowRelative
,
1351 NtUserCallHwndParam_GetWindowThread
,
1352 NtUserCallHwndParam_GetWindowWord
,
1353 NtUserCallHwndParam_IsChild
,
1354 NtUserCallHwndParam_KillSystemTimer
,
1355 NtUserCallHwndParam_MapWindowPoints
,
1356 NtUserCallHwndParam_MirrorRgn
,
1357 NtUserCallHwndParam_MonitorFromWindow
,
1358 NtUserCallHwndParam_ScreenToClient
,
1359 NtUserCallHwndParam_SetDialogInfo
,
1360 NtUserCallHwndParam_SetMDIClientInfo
,
1361 NtUserCallHwndParam_SetWindowContextHelpId
,
1362 NtUserCallHwndParam_ShowOwnedPopups
,
1363 /* temporary exports */
1364 NtUserSetWindowStyle
,
1367 static inline BOOL
NtUserClientToScreen( HWND hwnd
, POINT
*pt
)
1369 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)pt
, NtUserCallHwndParam_ClientToScreen
);
1372 static inline BOOL
NtUserEnableWindow( HWND hwnd
, BOOL enable
)
1374 return NtUserCallHwndParam( hwnd
, enable
, NtUserCallHwndParam_EnableWindow
);
1377 static inline BOOL
NtUserGetChildRect( HWND hwnd
, RECT
*rect
)
1379 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)rect
, NtUserCallHwndParam_GetChildRect
);
1382 static inline DWORD
NtUserGetClassLongA( HWND hwnd
, INT offset
)
1384 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetClassLongA
);
1387 static inline ULONG_PTR
NtUserGetClassLongPtrA( HWND hwnd
, INT offset
)
1389 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetClassLongPtrA
);
1392 static inline ULONG_PTR
NtUserGetClassLongPtrW( HWND hwnd
, INT offset
)
1394 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetClassLongPtrW
);
1397 static inline DWORD
NtUserGetClassLongW( HWND hwnd
, INT offset
)
1399 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetClassLongW
);
1402 static inline WORD
NtUserGetClassWord( HWND hwnd
, INT offset
)
1404 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetClassWord
);
1407 static inline BOOL
NtUserGetClientRect( HWND hwnd
, RECT
*rect
)
1409 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)rect
, NtUserCallHwndParam_GetClientRect
);
1412 struct get_scroll_info_params
1418 static inline BOOL
NtUserGetScrollInfo( HWND hwnd
, INT bar
, SCROLLINFO
*info
)
1420 struct get_scroll_info_params params
= { .bar
= bar
, .info
= info
};
1421 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)¶ms
, NtUserCallHwndParam_GetScrollInfo
);
1424 static inline BOOL
NtUserGetWindowInfo( HWND hwnd
, WINDOWINFO
*info
)
1426 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)info
, NtUserCallHwndParam_GetWindowInfo
);
1429 static inline LONG
NtUserGetWindowLongA( HWND hwnd
, INT offset
)
1431 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetWindowLongA
);
1434 static inline LONG_PTR
NtUserGetWindowLongPtrA( HWND hwnd
, INT offset
)
1436 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetWindowLongPtrA
);
1439 static inline LONG_PTR
NtUserGetWindowLongPtrW( HWND hwnd
, INT offset
)
1441 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetWindowLongPtrW
);
1444 static inline LONG
NtUserGetWindowLongW( HWND hwnd
, INT offset
)
1446 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetWindowLongW
);
1449 static inline BOOL
NtUserGetWindowRect( HWND hwnd
, RECT
*rect
)
1451 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)rect
, NtUserCallHwndParam_GetWindowRect
);
1454 static inline HWND
NtUserGetWindowRelative( HWND hwnd
, UINT rel
)
1456 return UlongToHandle( NtUserCallHwndParam( hwnd
, rel
,
1457 NtUserCallHwndParam_GetWindowRelative
));
1460 static inline DWORD
NtUserGetWindowThread( HWND hwnd
, DWORD
*process
)
1462 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)process
, NtUserCallHwndParam_GetWindowThread
);
1465 static inline WORD
NtUserGetWindowWord( HWND hwnd
, INT offset
)
1467 return NtUserCallHwndParam( hwnd
, offset
, NtUserCallHwndParam_GetWindowWord
);
1470 static inline BOOL
NtUserIsChild( HWND parent
, HWND child
)
1472 return NtUserCallHwndParam( parent
, HandleToUlong(child
), NtUserCallHwndParam_IsChild
);
1475 static inline BOOL
NtUserKillSystemTimer( HWND hwnd
, UINT_PTR id
)
1477 return NtUserCallHwndParam( hwnd
, id
, NtUserCallHwndParam_KillSystemTimer
);
1480 struct map_window_points_params
1487 static inline int NtUserMapWindowPoints( HWND hwnd_from
, HWND hwnd_to
, POINT
*points
, UINT count
)
1489 struct map_window_points_params params
;
1490 params
.hwnd_to
= hwnd_to
;
1491 params
.points
= points
;
1492 params
.count
= count
;
1493 return NtUserCallHwndParam( hwnd_from
, (UINT_PTR
)¶ms
,
1494 NtUserCallHwndParam_MapWindowPoints
);
1497 static inline BOOL
NtUserMirrorRgn( HWND hwnd
, HRGN hrgn
)
1499 return NtUserCallHwndParam( hwnd
, HandleToUlong(hrgn
), NtUserCallHwndParam_MirrorRgn
);
1502 static inline HMONITOR
NtUserMonitorFromWindow( HWND hwnd
, DWORD flags
)
1504 ULONG ret
= NtUserCallHwndParam( hwnd
, flags
, NtUserCallHwndParam_MonitorFromWindow
);
1505 return UlongToHandle( ret
);
1508 static inline BOOL
NtUserScreenToClient( HWND hwnd
, POINT
*pt
)
1510 return NtUserCallHwndParam( hwnd
, (UINT_PTR
)pt
, NtUserCallHwndParam_ScreenToClient
);
1513 static inline void NtUserSetDialogInfo( HWND hwnd
, void *info
)
1515 NtUserCallHwndParam( hwnd
, (UINT_PTR
)info
, NtUserCallHwndParam_SetDialogInfo
);
1518 static inline void NtUserSetMDIClientInfo( HWND hwnd
, void *info
)
1520 NtUserCallHwndParam( hwnd
, (UINT_PTR
)info
, NtUserCallHwndParam_SetMDIClientInfo
);
1523 static inline BOOL
NtUserSetWindowContextHelpId( HWND hwnd
, DWORD id
)
1525 return NtUserCallHwndParam( hwnd
, id
, NtUserCallHwndParam_SetWindowContextHelpId
);
1528 static inline BOOL
NtUserShowOwnedPopups( HWND hwnd
, BOOL show
)
1530 return NtUserCallHwndParam( hwnd
, show
, NtUserCallHwndParam_ShowOwnedPopups
);
1533 /* Wine extensions */
1534 BOOL WINAPI
__wine_send_input( HWND hwnd
, const INPUT
*input
, const RAWINPUT
*rawinput
);
1536 #endif /* _NTUSER_ */