win32u: Move menu tracking implementation from user32.
[wine.git] / include / ntuser.h
blob56c920aacdff6d25c91065fdf91d71cd1eb18643
1 /*
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
19 #ifndef _NTUSER_
20 #define _NTUSER_
22 #include <winuser.h>
23 #include <wingdi.h>
24 #include <winternl.h>
26 /* KernelCallbackTable codes, not compatible with Windows */
27 enum
29 /* user32 callbacks */
30 NtUserCallEnumDisplayMonitor,
31 NtUserCallSendAsyncCallback,
32 NtUserCallWinEventHook,
33 NtUserCallWinProc,
34 NtUserCallWindowsHook,
35 NtUserCopyImage,
36 NtUserDrawText,
37 NtUserFreeCachedClipboardData,
38 NtUserLoadDriver,
39 NtUserLoadImage,
40 NtUserRegisterBuiltinClasses,
41 NtUserRenderSynthesizedFormat,
42 /* win16 hooks */
43 NtUserCallFreeIcon,
44 NtUserThunkLock,
45 /* Vulkan support */
46 NtUserCallVulkanDebugReportCallback,
47 NtUserCallVulkanDebugUtilsCallback,
48 /* Driver-specific callbacks */
49 NtUserDriverCallbackFirst,
50 NtUserDriverCallbackLast = NtUserDriverCallbackFirst + 10,
51 NtUserCallCount
54 /* TEB thread info, not compatible with Windows */
55 struct ntuser_thread_info
57 void *driver_data; /* driver-specific data */
58 DWORD message_time; /* value for GetMessageTime */
59 DWORD message_pos; /* value for GetMessagePos */
60 ULONG_PTR message_extra; /* value for GetMessageExtraInfo */
61 HWND top_window; /* desktop window */
62 HWND msg_window; /* HWND_MESSAGE parent window */
65 static inline struct ntuser_thread_info *NtUserGetThreadInfo(void)
67 return (struct ntuser_thread_info *)NtCurrentTeb()->Win32ClientInfo;
70 /* NtUserCallEnumDisplayMonitor params */
71 struct enum_display_monitor_params
73 MONITORENUMPROC proc;
74 HMONITOR monitor;
75 HDC hdc;
76 RECT rect;
77 LPARAM lparam;
80 /* NtUserCallSendAsyncCallback params */
81 struct send_async_params
83 SENDASYNCPROC callback;
84 HWND hwnd;
85 UINT msg;
86 ULONG_PTR data;
87 LRESULT result;
90 /* NtUserCallWinEventHook params */
91 struct win_event_hook_params
93 DWORD event;
94 HWND hwnd;
95 LONG object_id;
96 LONG child_id;
97 void *handle;
98 DWORD tid;
99 DWORD time;
100 WINEVENTPROC proc;
101 WCHAR module[MAX_PATH];
104 /* type of message-sending functions that need special WM_CHAR handling */
105 enum wm_char_mapping
107 WMCHAR_MAP_POSTMESSAGE,
108 WMCHAR_MAP_SENDMESSAGE,
109 WMCHAR_MAP_SENDMESSAGETIMEOUT,
110 WMCHAR_MAP_RECVMESSAGE,
111 WMCHAR_MAP_DISPATCHMESSAGE,
112 WMCHAR_MAP_CALLWINDOWPROC,
113 WMCHAR_MAP_COUNT,
114 WMCHAR_MAP_NOMAPPING = WMCHAR_MAP_COUNT
117 /* NtUserCallWindowProc params */
118 struct win_proc_params
120 WNDPROC func;
121 HWND hwnd;
122 UINT msg;
123 WPARAM wparam;
124 LPARAM lparam;
125 LRESULT *result;
126 BOOL ansi;
127 BOOL ansi_dst;
128 BOOL is_dialog;
129 BOOL needs_unpack;
130 enum wm_char_mapping mapping;
131 DPI_AWARENESS_CONTEXT dpi_awareness;
132 WNDPROC procA;
133 WNDPROC procW;
136 /* NtUserCallWindowsHook params */
137 struct win_hook_params
139 void *proc;
140 void *handle;
141 DWORD pid;
142 DWORD tid;
143 int id;
144 int code;
145 WPARAM wparam;
146 LPARAM lparam;
147 BOOL prev_unicode;
148 BOOL next_unicode;
149 WCHAR module[MAX_PATH];
152 /* NtUserCopyImage params */
153 struct copy_image_params
155 HANDLE hwnd;
156 UINT type;
157 INT dx;
158 INT dy;
159 UINT flags;
162 /* NtUserDrawText params */
163 struct draw_text_params
165 HDC hdc;
166 int count;
167 RECT *rect; /* FIXME: Use NtCallbackReturn instead */
168 UINT flags;
169 WCHAR str[1];
172 /* NtUserFreeCachedClipboardData params */
173 struct free_cached_data_params
175 UINT format;
176 HANDLE handle;
179 /* NtUserLoadImage params */
180 struct load_image_params
182 HINSTANCE hinst;
183 const WCHAR *name;
184 UINT type;
185 INT dx;
186 INT dy;
187 UINT flags;
190 /* NtUserRenderSynthesizedFormat params */
191 struct render_synthesized_format_params
193 UINT format;
194 UINT from;
197 /* process DPI awareness contexts */
198 #define NTUSER_DPI_UNAWARE 0x00006010
199 #define NTUSER_DPI_SYSTEM_AWARE 0x00006011
200 #define NTUSER_DPI_PER_MONITOR_AWARE 0x00000012
201 #define NTUSER_DPI_PER_MONITOR_AWARE_V2 0x00000022
202 #define NTUSER_DPI_PER_UNAWARE_GDISCALED 0x40006010
204 /* NtUserMessageCall codes */
205 enum
207 NtUserPopupMenuWndProc = 0x029c,
208 NtUserDesktopWindowProc = 0x029d,
209 NtUserDefWindowProc = 0x029e,
210 NtUserCallWindowProc = 0x02ab,
211 NtUserSendMessage = 0x02b1,
212 NtUserSendMessageTimeout = 0x02b3,
213 NtUserSendNotifyMessage = 0x02b7,
214 NtUserSendMessageCallback = 0x02b8,
215 /* Wine-specific exports */
216 NtUserClipboardWindowProc = 0x0300,
217 NtUserSpyEnter = 0x0301,
218 NtUserSpyExit = 0x0302,
221 /* NtUserThunkedMenuItemInfo codes */
222 enum
224 NtUserSetMenuItemInfo,
225 NtUserInsertMenuItem,
226 /* Wine extensions */
227 NtUserGetMenuState,
230 struct send_message_timeout_params
232 UINT flags;
233 UINT timeout;
234 DWORD_PTR result;
237 struct send_message_callback_params
239 SENDASYNCPROC callback;
240 ULONG_PTR data;
243 /* color index used to retrieve system 55aa brush */
244 #define COLOR_55AA_BRUSH 0x100
246 /* user object types */
247 #define NTUSER_OBJ_WINDOW 0x01
248 #define NTUSER_OBJ_MENU 0x02
249 #define NTUSER_OBJ_ICON 0x03
250 #define NTUSER_OBJ_WINPOS 0x04
251 #define NTUSER_OBJ_ACCEL 0x08
252 #define NTUSER_OBJ_HOOK 0x0f
254 /* NtUserScrollWindowEx flag */
255 #define SW_NODCCACHE 0x8000
257 /* NtUserInitializeClientPfnArrays parameter, not compatible with Windows */
258 struct user_client_procs
260 WNDPROC pButtonWndProc;
261 WNDPROC pComboWndProc;
262 WNDPROC pDefWindowProc;
263 WNDPROC pDefDlgProc;
264 WNDPROC pEditWndProc;
265 WNDPROC pListBoxWndProc;
266 WNDPROC pMDIClientWndProc;
267 WNDPROC pScrollBarWndProc;
268 WNDPROC pStaticWndProc;
269 WNDPROC pImeWndProc;
270 WNDPROC pDesktopWndProc;
271 WNDPROC pIconTitleWndProc;
272 WNDPROC pPopupMenuWndProc;
273 WNDPROC pMessageWndProc;
276 /* NtUserSetCursorIconData parameter, not compatible with Windows */
277 struct cursoricon_frame
279 UINT width; /* frame-specific width */
280 UINT height; /* frame-specific height */
281 HBITMAP color; /* color bitmap */
282 HBITMAP alpha; /* pre-multiplied alpha bitmap for 32-bpp icons */
283 HBITMAP mask; /* mask bitmap (followed by color for 1-bpp icons) */
284 POINT hotspot;
287 struct cursoricon_desc
289 UINT flags;
290 UINT num_steps;
291 UINT num_frames;
292 UINT delay;
293 struct cursoricon_frame *frames;
294 DWORD *frame_seq;
295 DWORD *frame_rates;
296 HRSRC rsrc;
299 struct client_menu_name
301 char *nameA;
302 WCHAR *nameW;
303 UNICODE_STRING *nameUS;
306 /* NtUserGetClipboardData params, not compatible with Windows */
307 struct get_clipboard_params
309 void *data;
310 size_t size;
311 size_t data_size;
312 UINT seqno;
313 BOOL data_only;
316 /* NtUserSetClipboardData params, not compatible with Windows */
317 struct set_clipboard_params
319 void *data;
320 size_t size;
321 BOOL cache_only;
322 UINT seqno;
325 /* internal messages codes */
326 enum wine_internal_message
328 WM_WINE_DESTROYWINDOW = 0x80000000,
329 WM_WINE_SETWINDOWPOS,
330 WM_WINE_SHOWWINDOW,
331 WM_WINE_SETPARENT,
332 WM_WINE_SETWINDOWLONG,
333 WM_WINE_SETSTYLE,
334 WM_WINE_SETACTIVEWINDOW,
335 WM_WINE_KEYBOARD_LL_HOOK,
336 WM_WINE_MOUSE_LL_HOOK,
337 WM_WINE_CLIPCURSOR,
338 WM_WINE_UPDATEWINDOWSTATE,
339 WM_WINE_FIRST_DRIVER_MSG = 0x80001000, /* range of messages reserved for the USER driver */
340 WM_WINE_LAST_DRIVER_MSG = 0x80001fff
343 /* the various structures that can be sent in messages, in platform-independent layout */
344 struct packed_CREATESTRUCTW
346 ULONGLONG lpCreateParams;
347 ULONGLONG hInstance;
348 UINT hMenu;
349 DWORD __pad1;
350 UINT hwndParent;
351 DWORD __pad2;
352 INT cy;
353 INT cx;
354 INT y;
355 INT x;
356 LONG style;
357 ULONGLONG lpszName;
358 ULONGLONG lpszClass;
359 DWORD dwExStyle;
360 DWORD __pad3;
363 struct packed_DRAWITEMSTRUCT
365 UINT CtlType;
366 UINT CtlID;
367 UINT itemID;
368 UINT itemAction;
369 UINT itemState;
370 UINT hwndItem;
371 DWORD __pad1;
372 UINT hDC;
373 DWORD __pad2;
374 RECT rcItem;
375 ULONGLONG itemData;
378 struct packed_MEASUREITEMSTRUCT
380 UINT CtlType;
381 UINT CtlID;
382 UINT itemID;
383 UINT itemWidth;
384 UINT itemHeight;
385 ULONGLONG itemData;
388 struct packed_DELETEITEMSTRUCT
390 UINT CtlType;
391 UINT CtlID;
392 UINT itemID;
393 UINT hwndItem;
394 DWORD __pad;
395 ULONGLONG itemData;
398 struct packed_COMPAREITEMSTRUCT
400 UINT CtlType;
401 UINT CtlID;
402 UINT hwndItem;
403 DWORD __pad1;
404 UINT itemID1;
405 ULONGLONG itemData1;
406 UINT itemID2;
407 ULONGLONG itemData2;
408 DWORD dwLocaleId;
409 DWORD __pad2;
412 struct packed_WINDOWPOS
414 UINT hwnd;
415 DWORD __pad1;
416 UINT hwndInsertAfter;
417 DWORD __pad2;
418 INT x;
419 INT y;
420 INT cx;
421 INT cy;
422 UINT flags;
423 DWORD __pad3;
426 struct packed_COPYDATASTRUCT
428 ULONGLONG dwData;
429 DWORD cbData;
430 ULONGLONG lpData;
433 struct packed_HELPINFO
435 UINT cbSize;
436 INT iContextType;
437 INT iCtrlId;
438 UINT hItemHandle;
439 DWORD __pad;
440 ULONGLONG dwContextId;
441 POINT MousePos;
444 struct packed_NCCALCSIZE_PARAMS
446 RECT rgrc[3];
447 ULONGLONG __pad1;
448 UINT hwnd;
449 DWORD __pad2;
450 UINT hwndInsertAfter;
451 DWORD __pad3;
452 INT x;
453 INT y;
454 INT cx;
455 INT cy;
456 UINT flags;
457 DWORD __pad4;
460 struct packed_MSG
462 UINT hwnd;
463 DWORD __pad1;
464 UINT message;
465 ULONGLONG wParam;
466 ULONGLONG lParam;
467 DWORD time;
468 POINT pt;
469 DWORD __pad2;
472 struct packed_MDINEXTMENU
474 UINT hmenuIn;
475 DWORD __pad1;
476 UINT hmenuNext;
477 DWORD __pad2;
478 UINT hwndNext;
479 DWORD __pad3;
482 struct packed_MDICREATESTRUCTW
484 ULONGLONG szClass;
485 ULONGLONG szTitle;
486 ULONGLONG hOwner;
487 INT x;
488 INT y;
489 INT cx;
490 INT cy;
491 DWORD style;
492 ULONGLONG lParam;
496 HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags );
497 BOOL WINAPI NtUserAddClipboardFormatListener( HWND hwnd );
498 BOOL WINAPI NtUserAttachThreadInput( DWORD from, DWORD to, BOOL attach );
499 HDC WINAPI NtUserBeginPaint( HWND hwnd, PAINTSTRUCT *ps );
500 NTSTATUS WINAPI NtUserBuildHwndList( HDESK desktop, ULONG unk2, ULONG unk3, ULONG unk4,
501 ULONG thread_id, ULONG count, HWND *buffer, ULONG *size );
502 ULONG_PTR WINAPI NtUserCallHwnd( HWND hwnd, DWORD code );
503 ULONG_PTR WINAPI NtUserCallHwndParam( HWND hwnd, DWORD_PTR param, DWORD code );
504 LRESULT WINAPI NtUserCallNextHookEx( HHOOK hhook, INT code, WPARAM wparam, LPARAM lparam );
505 BOOL WINAPI NtUserCallMsgFilter( MSG *msg, INT code );
506 ULONG_PTR WINAPI NtUserCallNoParam( ULONG code );
507 ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code );
508 ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code );
509 BOOL WINAPI NtUserChangeClipboardChain( HWND hwnd, HWND next );
510 LONG WINAPI NtUserChangeDisplaySettings( UNICODE_STRING *devname, DEVMODEW *devmode, HWND hwnd,
511 DWORD flags, void *lparam );
512 DWORD WINAPI NtUserCheckMenuItem( HMENU handle, UINT id, UINT flags );
513 HWND WINAPI NtUserChildWindowFromPointEx( HWND parent, LONG x, LONG y, UINT flags );
514 BOOL WINAPI NtUserClipCursor( const RECT *rect );
515 BOOL WINAPI NtUserCloseClipboard(void);
516 BOOL WINAPI NtUserCloseDesktop( HDESK handle );
517 BOOL WINAPI NtUserCloseWindowStation( HWINSTA handle );
518 INT WINAPI NtUserCopyAcceleratorTable( HACCEL src, ACCEL *dst, INT count );
519 INT WINAPI NtUserCountClipboardFormats(void);
520 HACCEL WINAPI NtUserCreateAcceleratorTable( ACCEL *table, INT count );
521 BOOL WINAPI NtUserCreateCaret( HWND hwnd, HBITMAP bitmap, int width, int height );
522 HDESK WINAPI NtUserCreateDesktopEx( OBJECT_ATTRIBUTES *attr, UNICODE_STRING *device,
523 DEVMODEW *devmode, DWORD flags, ACCESS_MASK access,
524 ULONG heap_size );
525 HWND WINAPI NtUserCreateWindowEx( DWORD ex_style, UNICODE_STRING *class_name,
526 UNICODE_STRING *version, UNICODE_STRING *window_name,
527 DWORD style, INT x, INT y, INT cx, INT cy,
528 HWND parent, HMENU menu, HINSTANCE instance, void *params,
529 DWORD flags, CBT_CREATEWNDW *cbtc, DWORD unk, BOOL ansi );
530 HWINSTA WINAPI NtUserCreateWindowStation( OBJECT_ATTRIBUTES *attr, ACCESS_MASK mask, ULONG arg3,
531 ULONG arg4, ULONG arg5, ULONG arg6, ULONG arg7 );
532 HDWP WINAPI NtUserDeferWindowPosAndBand( HDWP hdwp, HWND hwnd, HWND after, INT x, INT y,
533 INT cx, INT cy, UINT flags, UINT unk1, UINT unk2 );
534 BOOL WINAPI NtUserDeleteMenu( HMENU menu, UINT id, UINT flags );
535 BOOL WINAPI NtUserDestroyAcceleratorTable( HACCEL handle );
536 BOOL WINAPI NtUserDestroyCursor( HCURSOR cursor, ULONG arg );
537 BOOL WINAPI NtUserDestroyMenu( HMENU menu );
538 BOOL WINAPI NtUserDestroyWindow( HWND hwnd );
539 LRESULT WINAPI NtUserDispatchMessage( const MSG *msg );
540 BOOL WINAPI NtUserDragDetect( HWND hwnd, int x, int y );
541 BOOL WINAPI NtUserDrawIconEx( HDC hdc, INT x0, INT y0, HICON icon, INT width,
542 INT height, UINT istep, HBRUSH hbr, UINT flags );
543 DWORD WINAPI NtUserDrawMenuBarTemp( HWND hwnd, HDC hdc, RECT *rect, HMENU handle, HFONT font );
544 BOOL WINAPI NtUserEmptyClipboard(void);
545 BOOL WINAPI NtUserEnableMenuItem( HMENU handle, UINT id, UINT flags );
546 BOOL WINAPI NtUserEndDeferWindowPosEx( HDWP hdwp, BOOL async );
547 BOOL WINAPI NtUserEndMenu(void);
548 BOOL WINAPI NtUserEndPaint( HWND hwnd, const PAINTSTRUCT *ps );
549 NTSTATUS WINAPI NtUserEnumDisplayDevices( UNICODE_STRING *device, DWORD index,
550 DISPLAY_DEVICEW *info, DWORD flags );
551 BOOL WINAPI NtUserEnumDisplayMonitors( HDC hdc, RECT *rect, MONITORENUMPROC proc, LPARAM lp );
552 BOOL WINAPI NtUserEnumDisplaySettings( UNICODE_STRING *device, DWORD mode,
553 DEVMODEW *dev_mode, DWORD flags );
554 INT WINAPI NtUserExcludeUpdateRgn( HDC hdc, HWND hwnd );
555 HICON WINAPI NtUserFindExistingCursorIcon( UNICODE_STRING *module, UNICODE_STRING *res_name,
556 void *desc );
557 HWND WINAPI NtUserFindWindowEx( HWND parent, HWND child, UNICODE_STRING *class,
558 UNICODE_STRING *title, ULONG unk );
559 BOOL WINAPI NtUserFlashWindowEx( FLASHWINFO *info );
560 HWND WINAPI NtUserGetAncestor( HWND hwnd, UINT type );
561 SHORT WINAPI NtUserGetAsyncKeyState( INT key );
562 ULONG WINAPI NtUserGetAtomName( ATOM atom, UNICODE_STRING *name );
563 UINT WINAPI NtUserGetCaretBlinkTime(void);
564 BOOL WINAPI NtUserGetCaretPos( POINT *point );
565 ATOM WINAPI NtUserGetClassInfoEx( HINSTANCE instance, UNICODE_STRING *name, WNDCLASSEXW *wc,
566 struct client_menu_name *menu_name, BOOL ansi );
567 INT WINAPI NtUserGetClassName( HWND hwnd, BOOL real, UNICODE_STRING *name );
568 HANDLE WINAPI NtUserGetClipboardData( UINT format, struct get_clipboard_params *params );
569 INT WINAPI NtUserGetClipboardFormatName( UINT format, WCHAR *buffer, INT maxlen );
570 HWND WINAPI NtUserGetClipboardOwner(void);
571 DWORD WINAPI NtUserGetClipboardSequenceNumber(void);
572 HWND WINAPI NtUserGetClipboardViewer(void);
573 HCURSOR WINAPI NtUserGetCursor(void);
574 HCURSOR WINAPI NtUserGetCursorFrameInfo( HCURSOR hCursor, DWORD istep, DWORD *rate_jiffies,
575 DWORD *num_steps );
576 BOOL WINAPI NtUserGetCursorInfo( CURSORINFO *info );
577 HDC WINAPI NtUserGetDCEx( HWND hwnd, HRGN clip_rgn, DWORD flags );
578 LONG WINAPI NtUserGetDisplayConfigBufferSizes( UINT32 flags, UINT32 *num_path_info,
579 UINT32 *num_mode_info );
580 UINT WINAPI NtUserGetDoubleClickTime(void);
581 BOOL WINAPI NtUserGetDpiForMonitor( HMONITOR monitor, UINT type, UINT *x, UINT *y );
582 HWND WINAPI NtUserGetForegroundWindow(void);
583 BOOL WINAPI NtUserGetGUIThreadInfo( DWORD id, GUITHREADINFO *info );
584 BOOL WINAPI NtUserGetIconInfo( HICON icon, ICONINFO *info, UNICODE_STRING *module,
585 UNICODE_STRING *res_name, DWORD *bpp, LONG unk );
586 BOOL WINAPI NtUserGetIconSize( HICON handle, UINT step, LONG *width, LONG *height );
587 INT WINAPI NtUserGetKeyNameText( LONG lparam, WCHAR *buffer, INT size );
588 SHORT WINAPI NtUserGetKeyState( INT vkey );
589 HKL WINAPI NtUserGetKeyboardLayout( DWORD thread_id );
590 UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts );
591 BOOL WINAPI NtUserGetKeyboardLayoutName( WCHAR *name );
592 BOOL WINAPI NtUserGetKeyboardState( BYTE *state );
593 BOOL WINAPI NtUserGetLayeredWindowAttributes( HWND hwnd, COLORREF *key, BYTE *alpha, DWORD *flags );
594 BOOL WINAPI NtUserGetMenuBarInfo( HWND hwnd, LONG id, LONG item, MENUBARINFO *info );
595 BOOL WINAPI NtUserGetMenuItemRect( HWND hwnd, HMENU menu, UINT item, RECT *rect );
596 BOOL WINAPI NtUserGetMessage( MSG *msg, HWND hwnd, UINT first, UINT last );
597 int WINAPI NtUserGetMouseMovePointsEx( UINT size, MOUSEMOVEPOINT *ptin, MOUSEMOVEPOINT *ptout,
598 int count, DWORD resolution );
599 BOOL WINAPI NtUserGetObjectInformation( HANDLE handle, INT index, void *info,
600 DWORD len, DWORD *needed );
601 HWND WINAPI NtUserGetOpenClipboardWindow(void);
602 INT WINAPI NtUserGetPriorityClipboardFormat( UINT *list, INT count );
603 HWINSTA WINAPI NtUserGetProcessWindowStation(void);
604 HANDLE WINAPI NtUserGetProp( HWND hwnd, const WCHAR *str );
605 ULONG WINAPI NtUserGetProcessDpiAwarenessContext( HANDLE process );
606 DWORD WINAPI NtUserGetQueueStatus( UINT flags );
607 ULONG WINAPI NtUserGetSystemDpiForProcess( HANDLE process );
608 HMENU WINAPI NtUserGetSystemMenu( HWND hwnd, BOOL revert );
609 HDESK WINAPI NtUserGetThreadDesktop( DWORD thread );
610 INT WINAPI NtUserGetUpdateRgn( HWND hwnd, HRGN hrgn, BOOL erase );
611 BOOL WINAPI NtUserGetUpdatedClipboardFormats( UINT *formats, UINT size, UINT *out_size );
612 BOOL WINAPI NtUserGetUpdateRect( HWND hwnd, RECT *rect, BOOL erase );
613 BOOL WINAPI NtUserGetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *placement );
614 int WINAPI NtUserGetWindowRgnEx( HWND hwnd, HRGN hrgn, UINT unk );
615 BOOL WINAPI NtUserHideCaret( HWND hwnd );
616 BOOL WINAPI NtUserHiliteMenuItem( HWND hwnd, HMENU handle, UINT item, UINT hilite );
617 NTSTATUS WINAPI NtUserInitializeClientPfnArrays( const struct user_client_procs *client_procsA,
618 const struct user_client_procs *client_procsW,
619 const void *client_workers, HINSTANCE user_module );
620 HICON WINAPI NtUserInternalGetWindowIcon( HWND hwnd, UINT type );
621 INT WINAPI NtUserInternalGetWindowText( HWND hwnd, WCHAR *text, INT count );
622 BOOL WINAPI NtUserIsClipboardFormatAvailable( UINT format );
623 BOOL WINAPI NtUserInvalidateRect( HWND hwnd, const RECT *rect, BOOL erase );
624 BOOL WINAPI NtUserInvalidateRgn( HWND hwnd, HRGN hrgn, BOOL erase );
625 BOOL WINAPI NtUserKillTimer( HWND hwnd, UINT_PTR id );
626 BOOL WINAPI NtUserLockWindowUpdate( HWND hwnd );
627 UINT WINAPI NtUserMapVirtualKeyEx( UINT code, UINT type, HKL layout );
628 INT WINAPI NtUserMenuItemFromPoint( HWND hwnd, HMENU handle, int x, int y );
629 LRESULT WINAPI NtUserMessageCall( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam,
630 void *result_info, DWORD type, BOOL ansi );
631 BOOL WINAPI NtUserMoveWindow( HWND hwnd, INT x, INT y, INT cx, INT cy, BOOL repaint );
632 DWORD WINAPI NtUserMsgWaitForMultipleObjectsEx( DWORD count, const HANDLE *handles,
633 DWORD timeout, DWORD mask, DWORD flags );
634 void WINAPI NtUserNotifyWinEvent( DWORD event, HWND hwnd, LONG object_id, LONG child_id );
635 HWINSTA WINAPI NtUserOpenWindowStation( OBJECT_ATTRIBUTES *attr, ACCESS_MASK access );
636 BOOL WINAPI NtUserSetObjectInformation( HANDLE handle, INT index, void *info, DWORD len );
637 BOOL WINAPI NtUserOpenClipboard( HWND hwnd, ULONG unk );
638 HDESK WINAPI NtUserOpenDesktop( OBJECT_ATTRIBUTES *attr, DWORD flags, ACCESS_MASK access );
639 HDESK WINAPI NtUserOpenInputDesktop( DWORD flags, BOOL inherit, ACCESS_MASK access );
640 BOOL WINAPI NtUserPeekMessage( MSG *msg_out, HWND hwnd, UINT first, UINT last, UINT flags );
641 BOOL WINAPI NtUserPostMessage( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam );
642 BOOL WINAPI NtUserPostThreadMessage( DWORD thread, UINT msg, WPARAM wparam, LPARAM lparam );
643 BOOL WINAPI NtUserRedrawWindow( HWND hwnd, const RECT *rect, HRGN hrgn, UINT flags );
644 ATOM WINAPI NtUserRegisterClassExWOW( const WNDCLASSEXW *wc, UNICODE_STRING *name, UNICODE_STRING *version,
645 struct client_menu_name *client_menu_name, DWORD fnid, DWORD flags,
646 DWORD *wow );
647 BOOL WINAPI NtUserRegisterHotKey( HWND hwnd, INT id, UINT modifiers, UINT vk );
648 INT WINAPI NtUserReleaseDC( HWND hwnd, HDC hdc );
649 BOOL WINAPI NtUserRemoveClipboardFormatListener( HWND hwnd );
650 BOOL WINAPI NtUserRemoveMenu( HMENU menu, UINT id, UINT flags );
651 HANDLE WINAPI NtUserRemoveProp( HWND hwnd, const WCHAR *str );
652 BOOL WINAPI NtUserScrollDC( HDC hdc, INT dx, INT dy, const RECT *scroll, const RECT *clip,
653 HRGN ret_update_rgn, RECT *update_rect );
654 INT WINAPI NtUserScrollWindowEx( HWND hwnd, INT dx, INT dy, const RECT *rect,
655 const RECT *clip_rect, HRGN update_rgn,
656 RECT *update_rect, UINT flags ) DECLSPEC_HIDDEN;
657 HPALETTE WINAPI NtUserSelectPalette( HDC hdc, HPALETTE palette, WORD force_background );
658 UINT WINAPI NtUserSendInput( UINT count, INPUT *inputs, int size );
659 HWND WINAPI NtUserSetActiveWindow( HWND hwnd );
660 HWND WINAPI NtUserSetCapture( HWND hwnd );
661 DWORD WINAPI NtUserSetClassLong( HWND hwnd, INT offset, LONG newval, BOOL ansi );
662 ULONG_PTR WINAPI NtUserSetClassLongPtr( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi );
663 WORD WINAPI NtUserSetClassWord( HWND hwnd, INT offset, WORD newval );
664 NTSTATUS WINAPI NtUserSetClipboardData( UINT format, HANDLE handle, struct set_clipboard_params *params );
665 HWND WINAPI NtUserSetClipboardViewer( HWND hwnd );
666 HCURSOR WINAPI NtUserSetCursor( HCURSOR cursor );
667 BOOL WINAPI NtUserSetCursorIconData( HCURSOR cursor, UNICODE_STRING *module, UNICODE_STRING *res_name,
668 struct cursoricon_desc *desc );
669 BOOL WINAPI NtUserSetCursorPos( INT x, INT y );
670 HWND WINAPI NtUserSetFocus( HWND hwnd );
671 void WINAPI NtUserSetInternalWindowPos( HWND hwnd, UINT cmd, RECT *rect, POINT *pt );
672 BOOL WINAPI NtUserSetKeyboardState( BYTE *state );
673 BOOL WINAPI NtUserSetLayeredWindowAttributes( HWND hwnd, COLORREF key, BYTE alpha, DWORD flags );
674 BOOL WINAPI NtUserSetMenu( HWND hwnd, HMENU menu );
675 BOOL WINAPI NtUserSetMenuContextHelpId( HMENU handle, DWORD id );
676 BOOL WINAPI NtUserSetMenuDefaultItem( HMENU handle, UINT item, UINT bypos );
677 HWND WINAPI NtUserSetParent( HWND hwnd, HWND parent );
678 BOOL WINAPI NtUserSetProcessDpiAwarenessContext( ULONG awareness, ULONG unknown );
679 BOOL WINAPI NtUserSetProcessWindowStation( HWINSTA handle );
680 BOOL WINAPI NtUserSetProp( HWND hwnd, const WCHAR *str, HANDLE handle );
681 BOOL WINAPI NtUserSetSysColors( INT count, const INT *colors, const COLORREF *values );
682 BOOL WINAPI NtUserSetSystemMenu( HWND hwnd, HMENU menu );
683 UINT_PTR WINAPI NtUserSetSystemTimer( HWND hwnd, UINT_PTR id, UINT timeout );
684 BOOL WINAPI NtUserSetThreadDesktop( HDESK handle );
685 UINT_PTR WINAPI NtUserSetTimer( HWND hwnd, UINT_PTR id, UINT timeout, TIMERPROC proc, ULONG tolerance );
686 LONG WINAPI NtUserSetWindowLong( HWND hwnd, INT offset, LONG newval, BOOL ansi );
687 LONG_PTR WINAPI NtUserSetWindowLongPtr( HWND hwnd, INT offset, LONG_PTR newval, BOOL ansi );
688 BOOL WINAPI NtUserSetWindowPlacement( HWND hwnd, const WINDOWPLACEMENT *wpl );
689 BOOL WINAPI NtUserSetWindowPos( HWND hwnd, HWND after, INT x, INT y, INT cx, INT cy, UINT flags );
690 int WINAPI NtUserSetWindowRgn( HWND hwnd, HRGN hrgn, BOOL redraw );
691 WORD WINAPI NtUserSetWindowWord( HWND hwnd, INT offset, WORD newval );
692 HHOOK WINAPI NtUserSetWindowsHookEx( HINSTANCE inst, UNICODE_STRING *module, DWORD tid, INT id,
693 HOOKPROC proc, BOOL ansi );
694 HWINEVENTHOOK WINAPI NtUserSetWinEventHook( DWORD event_min, DWORD event_max, HMODULE inst,
695 UNICODE_STRING *module, WINEVENTPROC proc,
696 DWORD pid, DWORD tid, DWORD flags );
697 BOOL WINAPI NtUserShowCaret( HWND hwnd );
698 INT WINAPI NtUserShowCursor( BOOL show );
699 BOOL WINAPI NtUserShowWindow( HWND hwnd, INT cmd );
700 BOOL WINAPI NtUserShowWindowAsync( HWND hwnd, INT cmd );
701 BOOL WINAPI NtUserSystemParametersInfo( UINT action, UINT val, void *ptr, UINT winini );
702 BOOL WINAPI NtUserSystemParametersInfoForDpi( UINT action, UINT val, PVOID ptr, UINT winini, UINT dpi );
703 BOOL WINAPI NtUserThunkedMenuInfo( HMENU menu, const MENUINFO *info );
704 UINT WINAPI NtUserThunkedMenuItemInfo( HMENU menu, UINT pos, UINT flags, UINT method,
705 MENUITEMINFOW *info, UNICODE_STRING *str );
706 INT WINAPI NtUserToUnicodeEx( UINT virt, UINT scan, const BYTE *state,
707 WCHAR *str, int size, UINT flags, HKL layout );
708 BOOL WINAPI NtUserTrackMouseEvent( TRACKMOUSEEVENT *info );
709 BOOL WINAPI NtUserTrackPopupMenuEx( HMENU handle, UINT flags, INT x, INT y, HWND hwnd, TPMPARAMS *params );
710 INT WINAPI NtUserTranslateAccelerator( HWND hwnd, HACCEL accel, MSG *msg );
711 BOOL WINAPI NtUserTranslateMessage( const MSG *msg, UINT flags );
712 BOOL WINAPI NtUserUnhookWinEvent( HWINEVENTHOOK hEventHook );
713 BOOL WINAPI NtUserUnhookWindowsHookEx( HHOOK handle );
714 BOOL WINAPI NtUserUnregisterClass( UNICODE_STRING *name, HINSTANCE instance,
715 struct client_menu_name *client_menu_name );
716 BOOL WINAPI NtUserUnregisterHotKey( HWND hwnd, INT id );
717 BOOL WINAPI NtUserUpdateLayeredWindow( HWND hwnd, HDC hdc_dst, const POINT *pts_dst, const SIZE *size,
718 HDC hdc_src, const POINT *pts_src, COLORREF key,
719 const BLENDFUNCTION *blend, DWORD flags, const RECT *dirty );
720 WORD WINAPI NtUserVkKeyScanEx( WCHAR chr, HKL layout );
721 DWORD WINAPI NtUserWaitForInputIdle( HANDLE process, DWORD timeout, BOOL wow );
722 HWND WINAPI NtUserWindowFromDC( HDC hdc );
723 HWND WINAPI NtUserWindowFromPoint( LONG x, LONG y );
725 /* NtUserCallNoParam codes, not compatible with Windows */
726 enum
728 NtUserCallNoParam_DestroyCaret,
729 NtUserCallNoParam_GetDesktopWindow,
730 NtUserCallNoParam_GetDialogBaseUnits,
731 NtUserCallNoParam_GetInputState,
732 NtUserCallNoParam_GetProcessDefaultLayout,
733 NtUserCallNoParam_ReleaseCapture,
734 /* temporary exports */
735 NtUserExitingThread,
736 NtUserThreadDetach,
739 static inline BOOL NtUserDestroyCaret(void)
741 return NtUserCallNoParam( NtUserCallNoParam_DestroyCaret );
744 static inline HWND NtUserGetDesktopWindow(void)
746 return UlongToHandle( NtUserCallNoParam( NtUserCallNoParam_GetDesktopWindow ));
749 static inline DWORD NtUserGetDialogBaseUnits(void)
751 return NtUserCallNoParam( NtUserCallNoParam_GetDialogBaseUnits );
754 static inline BOOL NtUserGetInputState(void)
756 return NtUserCallNoParam( NtUserCallNoParam_GetInputState );
759 static inline DWORD NtUserGetProcessDefaultLayout(void)
761 return NtUserCallNoParam( NtUserCallNoParam_GetProcessDefaultLayout );
764 static inline BOOL NtUserReleaseCapture(void)
766 return NtUserCallNoParam( NtUserCallNoParam_ReleaseCapture );
769 /* NtUserCallOneParam codes, not compatible with Windows */
770 enum
772 NtUserCallOneParam_BeginDeferWindowPos,
773 NtUserCallOneParam_CreateCursorIcon,
774 NtUserCallOneParam_CreateMenu,
775 NtUserCallOneParam_DispatchMessageA,
776 NtUserCallOneParam_EnableDC,
777 NtUserCallOneParam_EnableThunkLock,
778 NtUserCallOneParam_EnumClipboardFormats,
779 NtUserCallOneParam_GetClipCursor,
780 NtUserCallOneParam_GetCursorPos,
781 NtUserCallOneParam_GetIconParam,
782 NtUserCallOneParam_GetMenuItemCount,
783 NtUserCallOneParam_GetPrimaryMonitorRect,
784 NtUserCallOneParam_GetSysColor,
785 NtUserCallOneParam_GetSysColorBrush,
786 NtUserCallOneParam_GetSysColorPen,
787 NtUserCallOneParam_GetSystemMetrics,
788 NtUserCallOneParam_GetVirtualScreenRect,
789 NtUserCallOneParam_IsWindowRectFullScreen,
790 NtUserCallOneParam_MessageBeep,
791 NtUserCallOneParam_RealizePalette,
792 NtUserCallOneParam_SetCaretBlinkTime,
793 NtUserCallOneParam_SetProcessDefaultLayout,
794 /* temporary exports */
795 NtUserCallHooks,
796 NtUserGetDeskPattern,
797 NtUserGetWinProcPtr,
798 NtUserLock,
799 NtUserSetCallbacks,
800 NtUserSpyGetVKeyName,
803 static inline HDWP NtUserBeginDeferWindowPos( INT count )
805 return UlongToHandle( NtUserCallOneParam( count, NtUserCallOneParam_BeginDeferWindowPos ));
808 static inline HICON NtUserCreateCursorIcon( BOOL is_icon )
810 return UlongToHandle( NtUserCallOneParam( is_icon, NtUserCallOneParam_CreateCursorIcon ));
813 static inline HMENU NtUserCreateMenu( BOOL is_popup )
815 return UlongToHandle( NtUserCallOneParam( is_popup, NtUserCallOneParam_CreateMenu ));
818 static inline LRESULT NtUserDispatchMessageA( const MSG *msg )
820 return NtUserCallOneParam( (UINT_PTR)msg, NtUserCallOneParam_DispatchMessageA );
823 static inline WORD NtUserEnableDC( HDC hdc )
825 return NtUserCallOneParam( HandleToUlong(hdc), NtUserCallOneParam_EnableDC );
828 static inline void NtUserEnableThunkLock( BOOL enable )
830 NtUserCallOneParam( enable, NtUserCallOneParam_EnableThunkLock );
833 static inline UINT NtUserEnumClipboardFormats( UINT format )
835 return NtUserCallOneParam( format, NtUserCallOneParam_EnumClipboardFormats );
838 static inline BOOL NtUserGetClipCursor( RECT *rect )
840 return NtUserCallOneParam( (UINT_PTR)rect, NtUserCallOneParam_GetClipCursor );
843 static inline BOOL NtUserGetCursorPos( POINT *pt )
845 return NtUserCallOneParam( (UINT_PTR)pt, NtUserCallOneParam_GetCursorPos );
848 static inline UINT_PTR NtUserGetIconParam( HICON icon )
850 return NtUserCallOneParam( HandleToUlong(icon), NtUserCallOneParam_GetIconParam );
853 static inline UINT_PTR NtUserGetMenuItemCount( HMENU menu )
855 return NtUserCallOneParam( HandleToUlong(menu), NtUserCallOneParam_GetMenuItemCount );
858 static inline RECT NtUserGetPrimaryMonitorRect(void)
860 RECT primary;
861 NtUserCallOneParam( (UINT_PTR)&primary, NtUserCallOneParam_GetPrimaryMonitorRect );
862 return primary;
865 static inline BOOL NtUserSetCaretBlinkTime( unsigned int time )
867 return NtUserCallOneParam( time, NtUserCallOneParam_SetCaretBlinkTime );
870 static inline COLORREF NtUserGetSysColor( INT index )
872 return NtUserCallOneParam( index, NtUserCallOneParam_GetSysColor );
875 static inline HBRUSH NtUserGetSysColorBrush( INT index )
877 return UlongToHandle( NtUserCallOneParam( index, NtUserCallOneParam_GetSysColorBrush ));
880 static inline HPEN NtUserGetSysColorPen( INT index )
882 return UlongToHandle( NtUserCallOneParam( index, NtUserCallOneParam_GetSysColorPen ));
885 static inline INT NtUserGetSystemMetrics( INT index )
887 return NtUserCallOneParam( index, NtUserCallOneParam_GetSystemMetrics );
890 static inline RECT NtUserGetVirtualScreenRect(void)
892 RECT virtual;
893 NtUserCallOneParam( (UINT_PTR)&virtual, NtUserCallOneParam_GetVirtualScreenRect );
894 return virtual;
897 static inline BOOL NtUserIsWindowRectFullScreen( const RECT *rect )
899 return NtUserCallOneParam( (UINT_PTR)rect, NtUserCallOneParam_IsWindowRectFullScreen );
902 static inline BOOL NtUserMessageBeep( UINT i )
904 return NtUserCallOneParam( i, NtUserCallOneParam_MessageBeep );
907 static inline UINT NtUserRealizePalette( HDC hdc )
909 return NtUserCallOneParam( HandleToUlong(hdc), NtUserCallOneParam_RealizePalette );
912 static inline UINT NtUserSetProcessDefaultLayout( DWORD layout )
914 return NtUserCallOneParam( layout, NtUserCallOneParam_SetProcessDefaultLayout );
917 /* NtUserCallTwoParam codes, not compatible with Windows */
918 enum
920 NtUserCallTwoParam_GetMenuInfo,
921 NtUserCallTwoParam_GetMonitorInfo,
922 NtUserCallTwoParam_GetSystemMetricsForDpi,
923 NtUserCallTwoParam_MonitorFromRect,
924 NtUserCallTwoParam_ReplyMessage,
925 NtUserCallTwoParam_SetCaretPos,
926 NtUserCallTwoParam_SetIconParam,
927 NtUserCallTwoParam_UnhookWindowsHook,
928 /* temporary exports */
929 NtUserAllocWinProc,
930 NtUserGetHandlePtr,
933 static inline BOOL NtUserGetMenuInfo( HMENU menu, MENUINFO *info )
935 return NtUserCallTwoParam( HandleToUlong(menu), (ULONG_PTR)info,
936 NtUserCallTwoParam_GetMenuInfo );
939 static inline BOOL NtUserGetMonitorInfo( HMONITOR monitor, MONITORINFO *info )
941 return NtUserCallTwoParam( HandleToUlong(monitor), (ULONG_PTR)info,
942 NtUserCallTwoParam_GetMonitorInfo );
945 static inline INT NtUserGetSystemMetricsForDpi( INT index, UINT dpi )
947 return NtUserCallTwoParam( index, dpi, NtUserCallTwoParam_GetSystemMetricsForDpi );
950 static inline HMONITOR NtUserMonitorFromRect( const RECT *rect, DWORD flags )
952 ULONG ret = NtUserCallTwoParam( (LONG_PTR)rect, flags, NtUserCallTwoParam_MonitorFromRect );
953 return UlongToHandle( ret );
956 static inline BOOL NtUserReplyMessage( LRESULT result, MSG *msg )
958 return NtUserCallTwoParam( result, (UINT_PTR)msg, NtUserCallTwoParam_ReplyMessage );
961 static inline BOOL NtUserSetCaretPos( int x, int y )
963 return NtUserCallTwoParam( x, y, NtUserCallTwoParam_SetCaretPos );
966 static inline UINT_PTR NtUserSetIconParam( HICON icon, ULONG_PTR param )
968 return NtUserCallTwoParam( HandleToUlong(icon), param, NtUserCallTwoParam_SetIconParam );
971 static inline BOOL NtUserUnhookWindowsHook( INT id, HOOKPROC proc )
973 return NtUserCallTwoParam( id, (UINT_PTR)proc, NtUserCallTwoParam_UnhookWindowsHook );
976 /* NtUserCallHwnd codes, not compatible with Windows */
977 enum
979 NtUserCallHwnd_ArrangeIconicWindows,
980 NtUserCallHwnd_DrawMenuBar,
981 NtUserCallHwnd_GetDpiForWindow,
982 NtUserCallHwnd_GetParent,
983 NtUserCallHwnd_GetWindowContextHelpId,
984 NtUserCallHwnd_GetWindowDpiAwarenessContext,
985 NtUserCallHwnd_GetWindowTextLength,
986 NtUserCallHwnd_IsWindow,
987 NtUserCallHwnd_IsWindowEnabled,
988 NtUserCallHwnd_IsWindowUnicode,
989 NtUserCallHwnd_IsWindowVisible,
990 NtUserCallHwnd_SetForegroundWindow,
993 static inline UINT NtUserArrangeIconicWindows( HWND parent )
995 return NtUserCallHwnd( parent, NtUserCallHwnd_ArrangeIconicWindows );
998 static inline BOOL NtUserDrawMenuBar( HWND hwnd )
1000 return NtUserCallHwnd( hwnd, NtUserCallHwnd_DrawMenuBar );
1003 static inline DWORD NtUserGetWindowContextHelpId( HWND hwnd )
1005 return NtUserCallHwnd( hwnd, NtUserCallHwnd_GetWindowContextHelpId );
1008 static inline UINT NtUserGetDpiForWindow( HWND hwnd )
1010 return NtUserCallHwnd( hwnd, NtUserCallHwnd_GetDpiForWindow );
1013 static inline HWND NtUserGetParent( HWND hwnd )
1015 return UlongToHandle( NtUserCallHwnd( hwnd, NtUserCallHwnd_GetParent ));
1018 static inline DPI_AWARENESS_CONTEXT NtUserGetWindowDpiAwarenessContext( HWND hwnd )
1020 return (DPI_AWARENESS_CONTEXT)NtUserCallHwnd( hwnd,
1021 NtUserCallHwnd_GetWindowDpiAwarenessContext );
1024 static inline INT NtUserGetWindowTextLength( HWND hwnd )
1026 return NtUserCallHwnd( hwnd, NtUserCallHwnd_GetWindowTextLength );
1029 static inline BOOL NtUserIsWindow( HWND hwnd )
1031 return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindow );
1034 static inline BOOL NtUserIsWindowEnabled( HWND hwnd )
1036 return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindowEnabled );
1039 static inline BOOL NtUserIsWindowUnicode( HWND hwnd )
1041 return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindowUnicode );
1044 static inline BOOL NtUserIsWindowVisible( HWND hwnd )
1046 return NtUserCallHwnd( hwnd, NtUserCallHwnd_IsWindowVisible );
1049 static inline BOOL NtUserSetForegroundWindow( HWND hwnd )
1051 return NtUserCallHwnd( hwnd, NtUserCallHwnd_SetForegroundWindow );
1054 /* NtUserCallHwndParam codes, not compatible with Windows */
1055 enum
1057 NtUserCallHwndParam_ClientToScreen,
1058 NtUserCallHwndParam_EnableWindow,
1059 NtUserCallHwndParam_GetClassLongA,
1060 NtUserCallHwndParam_GetClassLongW,
1061 NtUserCallHwndParam_GetClassLongPtrA,
1062 NtUserCallHwndParam_GetClassLongPtrW,
1063 NtUserCallHwndParam_GetClassWord,
1064 NtUserCallHwndParam_GetClientRect,
1065 NtUserCallHwndParam_GetWindowInfo,
1066 NtUserCallHwndParam_GetWindowLongA,
1067 NtUserCallHwndParam_GetWindowLongW,
1068 NtUserCallHwndParam_GetWindowLongPtrA,
1069 NtUserCallHwndParam_GetWindowLongPtrW,
1070 NtUserCallHwndParam_GetWindowRect,
1071 NtUserCallHwndParam_GetWindowRelative,
1072 NtUserCallHwndParam_GetWindowThread,
1073 NtUserCallHwndParam_GetWindowWord,
1074 NtUserCallHwndParam_IsChild,
1075 NtUserCallHwndParam_KillSystemTimer,
1076 NtUserCallHwndParam_MapWindowPoints,
1077 NtUserCallHwndParam_MirrorRgn,
1078 NtUserCallHwndParam_MonitorFromWindow,
1079 NtUserCallHwndParam_ScreenToClient,
1080 NtUserCallHwndParam_SetWindowContextHelpId,
1081 NtUserCallHwndParam_SetWindowPixelFormat,
1082 NtUserCallHwndParam_ShowOwnedPopups,
1083 /* temporary exports */
1084 NtUserIsWindowDrawable,
1085 NtUserSetWindowStyle,
1086 NtUserSpyGetMsgName,
1089 static inline BOOL NtUserClientToScreen( HWND hwnd, POINT *pt )
1091 return NtUserCallHwndParam( hwnd, (UINT_PTR)pt, NtUserCallHwndParam_ClientToScreen );
1094 static inline BOOL NtUserEnableWindow( HWND hwnd, BOOL enable )
1096 return NtUserCallHwndParam( hwnd, enable, NtUserCallHwndParam_EnableWindow );
1099 static inline DWORD NtUserGetClassLongA( HWND hwnd, INT offset )
1101 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetClassLongA );
1104 static inline ULONG_PTR NtUserGetClassLongPtrA( HWND hwnd, INT offset )
1106 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetClassLongPtrA );
1109 static inline ULONG_PTR NtUserGetClassLongPtrW( HWND hwnd, INT offset )
1111 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetClassLongPtrW );
1114 static inline DWORD NtUserGetClassLongW( HWND hwnd, INT offset )
1116 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetClassLongW );
1119 static inline WORD NtUserGetClassWord( HWND hwnd, INT offset )
1121 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetClassWord );
1124 static inline BOOL NtUserGetClientRect( HWND hwnd, RECT *rect )
1126 return NtUserCallHwndParam( hwnd, (UINT_PTR)rect, NtUserCallHwndParam_GetClientRect );
1129 static inline BOOL NtUserGetWindowInfo( HWND hwnd, WINDOWINFO *info )
1131 return NtUserCallHwndParam( hwnd, (UINT_PTR)info, NtUserCallHwndParam_GetWindowInfo );
1134 static inline LONG NtUserGetWindowLongA( HWND hwnd, INT offset )
1136 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetWindowLongA );
1139 static inline LONG_PTR NtUserGetWindowLongPtrA( HWND hwnd, INT offset )
1141 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetWindowLongPtrA );
1144 static inline LONG_PTR NtUserGetWindowLongPtrW( HWND hwnd, INT offset )
1146 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetWindowLongPtrW );
1149 static inline LONG NtUserGetWindowLongW( HWND hwnd, INT offset )
1151 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetWindowLongW );
1154 static inline BOOL NtUserGetWindowRect( HWND hwnd, RECT *rect )
1156 return NtUserCallHwndParam( hwnd, (UINT_PTR)rect, NtUserCallHwndParam_GetWindowRect );
1159 static inline HWND NtUserGetWindowRelative( HWND hwnd, UINT rel )
1161 return UlongToHandle( NtUserCallHwndParam( hwnd, rel,
1162 NtUserCallHwndParam_GetWindowRelative ));
1165 static inline DWORD NtUserGetWindowThread( HWND hwnd, DWORD *process )
1167 return NtUserCallHwndParam( hwnd, (UINT_PTR)process, NtUserCallHwndParam_GetWindowThread );
1170 static inline WORD NtUserGetWindowWord( HWND hwnd, INT offset )
1172 return NtUserCallHwndParam( hwnd, offset, NtUserCallHwndParam_GetWindowWord );
1175 static inline BOOL NtUserIsChild( HWND parent, HWND child )
1177 return NtUserCallHwndParam( parent, HandleToUlong(child), NtUserCallHwndParam_IsChild );
1180 static inline BOOL NtUserKillSystemTimer( HWND hwnd, UINT_PTR id )
1182 return NtUserCallHwndParam( hwnd, id, NtUserCallHwndParam_KillSystemTimer );
1185 struct map_window_points_params
1187 HWND hwnd_to;
1188 POINT *points;
1189 UINT count;
1192 static inline int NtUserMapWindowPoints( HWND hwnd_from, HWND hwnd_to, POINT *points, UINT count )
1194 struct map_window_points_params params;
1195 params.hwnd_to = hwnd_to;
1196 params.points = points;
1197 params.count = count;
1198 return NtUserCallHwndParam( hwnd_from, (UINT_PTR)&params,
1199 NtUserCallHwndParam_MapWindowPoints );
1202 static inline BOOL NtUserMirrorRgn( HWND hwnd, HRGN hrgn )
1204 return NtUserCallHwndParam( hwnd, HandleToUlong(hrgn), NtUserCallHwndParam_MirrorRgn );
1207 static inline HMONITOR NtUserMonitorFromWindow( HWND hwnd, DWORD flags )
1209 ULONG ret = NtUserCallHwndParam( hwnd, flags, NtUserCallHwndParam_MonitorFromWindow );
1210 return UlongToHandle( ret );
1213 static inline BOOL NtUserScreenToClient( HWND hwnd, POINT *pt )
1215 return NtUserCallHwndParam( hwnd, (UINT_PTR)pt, NtUserCallHwndParam_ScreenToClient );
1218 static inline BOOL NtUserSetWindowContextHelpId( HWND hwnd, DWORD id )
1220 return NtUserCallHwndParam( hwnd, id, NtUserCallHwndParam_SetWindowContextHelpId );
1223 static inline BOOL NtUserSetWindowPixelFormat( HWND hwnd, int format )
1225 return NtUserCallHwndParam( hwnd, format, NtUserCallHwndParam_SetWindowPixelFormat );
1228 static inline BOOL NtUserShowOwnedPopups( HWND hwnd, BOOL show )
1230 return NtUserCallHwndParam( hwnd, show, NtUserCallHwndParam_ShowOwnedPopups );
1233 #endif /* _NTUSER_ */