4 * Copyright 2021 Jacek Caban for CodeWeavers
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WINE_WIN32U_PRIVATE
22 #define __WINE_WIN32U_PRIVATE
30 #include "wine/gdi_driver.h"
31 #include "wine/unixlib.h"
32 #include "wine/debug.h"
34 extern const struct user_callbacks
*user_callbacks DECLSPEC_HIDDEN
;
38 /* win32u functions */
39 INT (WINAPI
*pNtGdiAbortDoc
)( HDC hdc
);
40 BOOL (WINAPI
*pNtGdiAbortPath
)( HDC hdc
);
41 BOOL (WINAPI
*pNtGdiAlphaBlend
)( HDC hdc_dst
, int x_dst
, int y_dst
, int width_dst
, int height_dst
,
42 HDC hdc_src
, int x_src
, int y_src
, int width_src
, int height_src
,
43 BLENDFUNCTION blend_function
, HANDLE xform
);
44 BOOL (WINAPI
*pNtGdiAngleArc
)( HDC hdc
, INT x
, INT y
, DWORD radius
, FLOAT start_angle
,
46 BOOL (WINAPI
*pNtGdiArcInternal
)( UINT type
, HDC hdc
, INT left
, INT top
, INT right
, INT bottom
,
47 INT xstart
, INT ystart
, INT xend
, INT yend
);
48 BOOL (WINAPI
*pNtGdiBeginPath
)( HDC hdc
);
49 BOOL (WINAPI
*pNtGdiBitBlt
)( HDC hdc_dst
, INT x_dst
, INT y_dst
, INT width
, INT height
, HDC hdc_src
,
50 INT x_src
, INT y_src
, DWORD rop
, DWORD bk_color
, FLONG fl
);
51 BOOL (WINAPI
*pNtGdiCloseFigure
)( HDC hdc
);
52 BOOL (WINAPI
*pNtGdiComputeXformCoefficients
)( HDC hdc
);
53 HBITMAP (WINAPI
*pNtGdiCreateCompatibleBitmap
)( HDC hdc
, INT width
, INT height
);
54 HDC (WINAPI
*pNtGdiCreateCompatibleDC
)( HDC hdc
);
55 HBITMAP (WINAPI
*pNtGdiCreateDIBitmapInternal
)( HDC hdc
, INT width
, INT height
, DWORD init
,
56 const void *bits
, const BITMAPINFO
*data
,
57 UINT coloruse
, UINT max_info
, UINT max_bits
,
58 ULONG flags
, HANDLE xform
);
59 HDC (WINAPI
*pNtGdiCreateMetafileDC
)( HDC hdc
);
60 NTSTATUS (WINAPI
*pNtGdiDdDDICheckVidPnExclusiveOwnership
)( const D3DKMT_CHECKVIDPNEXCLUSIVEOWNERSHIP
*desc
);
61 NTSTATUS (WINAPI
*pNtGdiDdDDICloseAdapter
)( const D3DKMT_CLOSEADAPTER
*desc
);
62 NTSTATUS (WINAPI
*pNtGdiDdDDICreateDCFromMemory
)( D3DKMT_CREATEDCFROMMEMORY
*desc
);
63 NTSTATUS (WINAPI
*pNtGdiDdDDIDestroyDCFromMemory
)( const D3DKMT_DESTROYDCFROMMEMORY
*desc
);
64 NTSTATUS (WINAPI
*pNtGdiDdDDIDestroyDevice
)( const D3DKMT_DESTROYDEVICE
*desc
);
65 NTSTATUS (WINAPI
*pNtGdiDdDDIEscape
)( const D3DKMT_ESCAPE
*desc
);
66 NTSTATUS (WINAPI
*pNtGdiDdDDIOpenAdapterFromDeviceName
)( D3DKMT_OPENADAPTERFROMDEVICENAME
*desc
);
67 NTSTATUS (WINAPI
*pNtGdiDdDDIOpenAdapterFromLuid
)( D3DKMT_OPENADAPTERFROMLUID
*desc
);
68 NTSTATUS (WINAPI
*pNtGdiDdDDIQueryVideoMemoryInfo
)( D3DKMT_QUERYVIDEOMEMORYINFO
*desc
);
69 NTSTATUS (WINAPI
*pNtGdiDdDDISetVidPnSourceOwner
)( const D3DKMT_SETVIDPNSOURCEOWNER
*desc
);
70 BOOL (WINAPI
*pNtGdiDeleteObjectApp
)( HGDIOBJ obj
);
71 LONG (WINAPI
*pNtGdiDoPalette
)( HGDIOBJ handle
, WORD start
, WORD count
, void *entries
,
72 DWORD func
, BOOL inbound
);
73 BOOL (WINAPI
*pNtGdiEllipse
)( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
74 INT (WINAPI
*pNtGdiEndDoc
)(HDC hdc
);
75 BOOL (WINAPI
*pNtGdiEndPath
)( HDC hdc
);
76 INT (WINAPI
*pNtGdiEndPage
)( HDC hdc
);
77 BOOL (WINAPI
*pNtGdiEnumFonts
)( HDC hdc
, ULONG type
, ULONG win32_compat
, ULONG face_name_len
,
78 const WCHAR
*face_name
, ULONG charset
, ULONG
*count
, void *buf
);
79 INT (WINAPI
*pNtGdiExcludeClipRect
)( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
80 INT (WINAPI
*pNtGdiExtEscape
)( HDC hdc
, WCHAR
*driver
, INT driver_id
, INT escape
, INT input_size
,
81 const char *input
, INT output_size
, char *output
);
82 BOOL (WINAPI
*pNtGdiExtFloodFill
)( HDC hdc
, INT x
, INT y
, COLORREF color
, UINT type
);
83 BOOL (WINAPI
*pNtGdiExtTextOutW
)( HDC hdc
, INT x
, INT y
, UINT flags
, const RECT
*rect
,
84 const WCHAR
*str
, UINT count
, const INT
*dx
, DWORD cp
);
85 INT (WINAPI
*pNtGdiExtSelectClipRgn
)( HDC hdc
, HRGN region
, INT mode
);
86 BOOL (WINAPI
*pNtGdiFillPath
)( HDC hdc
);
87 BOOL (WINAPI
*pNtGdiFillRgn
)( HDC hdc
, HRGN hrgn
, HBRUSH hbrush
);
88 BOOL (WINAPI
*pNtGdiFontIsLinked
)( HDC hdc
);
89 BOOL (WINAPI
*pNtGdiFrameRgn
)( HDC hdc
, HRGN hrgn
, HBRUSH brush
, INT width
, INT height
);
90 BOOL (WINAPI
*pNtGdiGetAndSetDCDword
)( HDC hdc
, UINT method
, DWORD value
, DWORD
*result
);
91 INT (WINAPI
*pNtGdiGetAppClipBox
)( HDC hdc
, RECT
*rect
);
92 UINT (WINAPI
*pNtGdiGetBoundsRect
)( HDC hdc
, RECT
*rect
, UINT flags
);
93 BOOL (WINAPI
*pNtGdiGetCharABCWidthsW
)( HDC hdc
, UINT first
, UINT last
, WCHAR
*chars
,
94 ULONG flags
, void *buffer
);
95 BOOL (WINAPI
*pNtGdiGetCharWidthW
)( HDC hdc
, UINT first_char
, UINT last_char
, WCHAR
*chars
,
96 ULONG flags
, void *buffer
);
97 BOOL (WINAPI
*pNtGdiGetCharWidthInfo
)( HDC hdc
, struct char_width_info
*info
);
98 INT (WINAPI
*pNtGdiGetDIBitsInternal
)( HDC hdc
, HBITMAP hbitmap
, UINT startscan
, UINT lines
,
99 void *bits
, BITMAPINFO
*info
, UINT coloruse
,
100 UINT max_bits
, UINT max_info
);
101 INT (WINAPI
*pNtGdiGetDeviceCaps
)( HDC hdc
, INT cap
);
102 BOOL (WINAPI
*pNtGdiGetDeviceGammaRamp
)( HDC hdc
, void *ptr
);
103 DWORD (WINAPI
*pNtGdiGetFontData
)( HDC hdc
, DWORD table
, DWORD offset
, void *buffer
, DWORD length
);
104 DWORD (WINAPI
*pNtGdiGetFontUnicodeRanges
)( HDC hdc
, GLYPHSET
*lpgs
);
105 DWORD (WINAPI
*pNtGdiGetGlyphIndicesW
)( HDC hdc
, const WCHAR
*str
, INT count
,
106 WORD
*indices
, DWORD flags
);
107 DWORD (WINAPI
*pNtGdiGetGlyphOutline
)( HDC hdc
, UINT ch
, UINT format
, GLYPHMETRICS
*metrics
,
108 DWORD size
, void *buffer
, const MAT2
*mat2
,
109 BOOL ignore_rotation
);
110 DWORD (WINAPI
*pNtGdiGetKerningPairs
)( HDC hdc
, DWORD count
, KERNINGPAIR
*kern_pair
);
111 COLORREF (WINAPI
*pNtGdiGetNearestColor
)( HDC hdc
, COLORREF color
);
112 UINT (WINAPI
*pNtGdiGetOutlineTextMetricsInternalW
)( HDC hdc
, UINT cbData
,
113 OUTLINETEXTMETRICW
*otm
, ULONG opts
);
114 COLORREF (WINAPI
*pNtGdiGetPixel
)( HDC hdc
, INT x
, INT y
);
115 INT (WINAPI
*pNtGdiGetRandomRgn
)( HDC hdc
, HRGN region
, INT code
);
116 BOOL (WINAPI
*pNtGdiGetRasterizerCaps
)( RASTERIZER_STATUS
*status
, UINT size
);
117 BOOL (WINAPI
*pNtGdiGetRealizationInfo
)( HDC hdc
, struct font_realization_info
*info
);
118 UINT (WINAPI
*pNtGdiGetTextCharsetInfo
)( HDC hdc
, FONTSIGNATURE
*fs
, DWORD flags
);
119 BOOL (WINAPI
*pNtGdiGetTextExtentExW
)( HDC hdc
, const WCHAR
*str
, INT count
, INT max_ext
,
120 INT
*nfit
, INT
*dxs
, SIZE
*size
, UINT flags
);
121 INT (WINAPI
*pNtGdiGetTextFaceW
)( HDC hdc
, INT count
, WCHAR
*name
, BOOL alias_name
);
122 BOOL (WINAPI
*pNtGdiGetTextMetricsW
)( HDC hdc
, TEXTMETRICW
*metrics
, ULONG flags
);
123 BOOL (WINAPI
*pNtGdiGradientFill
)( HDC hdc
, TRIVERTEX
*vert_array
, ULONG nvert
,
124 void *grad_array
, ULONG ngrad
, ULONG mode
);
125 INT (WINAPI
*pNtGdiIntersectClipRect
)( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
126 BOOL (WINAPI
*pNtGdiInvertRgn
)( HDC hdc
, HRGN hrgn
);
127 BOOL (WINAPI
*pNtGdiLineTo
)( HDC hdc
, INT x
, INT y
);
128 BOOL (WINAPI
*pNtGdiMaskBlt
)( HDC hdc
, INT x_dst
, INT y_dst
, INT width_dst
, INT height_dst
,
129 HDC hdc_src
, INT x_src
, INT y_src
, HBITMAP mask
,
130 INT x_mask
, INT y_mask
, DWORD rop
, DWORD bk_color
);
131 BOOL (WINAPI
*pNtGdiModifyWorldTransform
)( HDC hdc
, const XFORM
*xform
, DWORD mode
);
132 BOOL (WINAPI
*pNtGdiMoveTo
)( HDC hdc
, INT x
, INT y
, POINT
*pt
);
133 INT (WINAPI
*pNtGdiOffsetClipRgn
)( HDC hdc
, INT x
, INT y
);
134 HDC (WINAPI
*pNtGdiOpenDCW
)( UNICODE_STRING
*device
, const DEVMODEW
*devmode
,
135 UNICODE_STRING
*output
, ULONG type
, BOOL is_display
,
136 HANDLE hspool
, DRIVER_INFO_2W
*driver_info
, void *pdev
);
137 BOOL (WINAPI
*pNtGdiPatBlt
)( HDC hdc
, INT left
, INT top
, INT width
, INT height
, DWORD rop
);
138 BOOL (WINAPI
*pNtGdiPlgBlt
)( HDC hdc
, const POINT
*point
, HDC hdc_src
, INT x_src
, INT y_src
,
139 INT width
, INT height
, HBITMAP mask
, INT x_mask
, INT y_mask
,
141 BOOL (WINAPI
*pNtGdiPolyDraw
)(HDC hdc
, const POINT
*points
, const BYTE
*types
, DWORD count
);
142 ULONG (WINAPI
*pNtGdiPolyPolyDraw
)( HDC hdc
, const POINT
*points
, const UINT
*counts
,
143 DWORD count
, UINT function
);
144 BOOL (WINAPI
*pNtGdiPtVisible
)( HDC hdc
, INT x
, INT y
);
145 BOOL (WINAPI
*pNtGdiRectVisible
)( HDC hdc
, const RECT
*rect
);
146 BOOL (WINAPI
*pNtGdiRectangle
)( HDC hdc
, INT left
, INT top
, INT right
, INT bottom
);
147 BOOL (WINAPI
*pNtGdiResetDC
)( HDC hdc
, const DEVMODEW
*devmode
, BOOL
*banding
,
148 DRIVER_INFO_2W
*driver_info
, void *dev
);
149 BOOL (WINAPI
*pNtGdiResizePalette
)( HPALETTE palette
, UINT count
);
150 BOOL (WINAPI
*pNtGdiRestoreDC
)( HDC hdc
, INT level
);
151 BOOL (WINAPI
*pNtGdiRoundRect
)( HDC hdc
, INT left
, INT top
, INT right
,
152 INT bottom
, INT ell_width
, INT ell_height
);
153 BOOL (WINAPI
*pNtGdiScaleViewportExtEx
)( HDC hdc
, INT x_num
, INT x_denom
,
154 INT y_num
, INT y_denom
, SIZE
*size
);
155 BOOL (WINAPI
*pNtGdiScaleWindowExtEx
)( HDC hdc
, INT x_num
, INT x_denom
,
156 INT y_num
, INT y_denom
, SIZE
*size
);
157 HGDIOBJ (WINAPI
*pNtGdiSelectBitmap
)( HDC hdc
, HGDIOBJ handle
);
158 HGDIOBJ (WINAPI
*pNtGdiSelectBrush
)( HDC hdc
, HGDIOBJ handle
);
159 BOOL (WINAPI
*pNtGdiSelectClipPath
)( HDC hdc
, INT mode
);
160 HGDIOBJ (WINAPI
*pNtGdiSelectFont
)( HDC hdc
, HGDIOBJ handle
);
161 HGDIOBJ (WINAPI
*pNtGdiSelectPen
)( HDC hdc
, HGDIOBJ handle
);
162 UINT (WINAPI
*pNtGdiSetBoundsRect
)( HDC hdc
, const RECT
*rect
, UINT flags
);
163 INT (WINAPI
*pNtGdiSetDIBitsToDeviceInternal
)( HDC hdc
, INT x_dst
, INT y_dst
, DWORD cx
,
164 DWORD cy
, INT x_src
, INT y_src
, UINT startscan
,
165 UINT lines
, const void *bits
, const BITMAPINFO
*bmi
,
166 UINT coloruse
, UINT max_bits
, UINT max_info
,
167 BOOL xform_coords
, HANDLE xform
);
168 BOOL (WINAPI
*pNtGdiSetDeviceGammaRamp
)( HDC hdc
, void *ptr
);
169 DWORD (WINAPI
*pNtGdiSetLayout
)( HDC hdc
, LONG wox
, DWORD layout
);
170 COLORREF (WINAPI
*pNtGdiSetPixel
)( HDC hdc
, INT x
, INT y
, COLORREF color
);
171 UINT (WINAPI
*pNtGdiSetSystemPaletteUse
)( HDC hdc
, UINT use
);
172 INT (WINAPI
*pNtGdiStartDoc
)( HDC hdc
, const DOCINFOW
*doc
, BOOL
*banding
, INT job
);
173 INT (WINAPI
*pNtGdiStartPage
)( HDC hdc
);
174 BOOL (WINAPI
*pNtGdiStretchBlt
)( HDC hdc
, INT x_dst
, INT y_dst
, INT width_dst
, INT height_dst
,
175 HDC hdc_src
, INT x_src
, INT y_src
, INT width_src
, INT height_src
,
176 DWORD rop
, COLORREF bk_color
);
177 INT (WINAPI
*pNtGdiStretchDIBitsInternal
)( HDC hdc
, INT x_dst
, INT y_dst
, INT width_dst
,
178 INT height_dst
, INT x_src
, INT y_src
, INT width_src
,
179 INT height_src
, const void *bits
, const BITMAPINFO
*bmi
,
180 UINT coloruse
, DWORD rop
, UINT max_info
, UINT max_bits
,
182 BOOL (WINAPI
*pNtGdiStrokeAndFillPath
)( HDC hdc
);
183 BOOL (WINAPI
*pNtGdiStrokePath
)( HDC hdc
);
184 BOOL (WINAPI
*pNtGdiTransparentBlt
)( HDC hdc
, int x_dst
, int y_dst
, int width_dst
, int height_dst
,
185 HDC hdc_src
, int x_src
, int y_src
, int width_src
, int height_src
,
187 BOOL (WINAPI
*pNtGdiUnrealizeObject
)( HGDIOBJ obj
);
188 BOOL (WINAPI
*pNtGdiUpdateColors
)( HDC hdc
);
189 BOOL (WINAPI
*pNtGdiWidenPath
)( HDC hdc
);
190 HKL (WINAPI
*pNtUserActivateKeyboardLayout
)( HKL layout
, UINT flags
);
191 HDC (WINAPI
*pNtUserBeginPaint
)( HWND hwnd
, PAINTSTRUCT
*ps
);
192 ULONG_PTR (WINAPI
*pNtUserCallHwnd
)( HWND hwnd
, DWORD code
);
193 ULONG_PTR (WINAPI
*pNtUserCallHwndParam
)( HWND hwnd
, DWORD_PTR param
, DWORD code
);
194 LRESULT (WINAPI
*pNtUserCallNextHookEx
)( HHOOK hhook
, INT code
, WPARAM wparam
, LPARAM lparam
);
195 ULONG_PTR (WINAPI
*pNtUserCallNoParam
)( ULONG code
);
196 ULONG_PTR (WINAPI
*pNtUserCallOneParam
)( ULONG_PTR arg
, ULONG code
);
197 ULONG_PTR (WINAPI
*pNtUserCallTwoParam
)( ULONG_PTR arg1
, ULONG_PTR arg2
, ULONG code
);
198 BOOL (WINAPI
*pNtUserChangeClipboardChain
)( HWND hwnd
, HWND next
);
199 LONG (WINAPI
*pNtUserChangeDisplaySettings
)( UNICODE_STRING
*devname
, DEVMODEW
*devmode
, HWND hwnd
,
200 DWORD flags
, void *lparam
);
201 BOOL (WINAPI
*pNtUserClipCursor
)( const RECT
*rect
);
202 BOOL (WINAPI
*pNtUserCloseClipboard
)(void);
203 INT (WINAPI
*pNtUserCountClipboardFormats
)(void);
204 BOOL (WINAPI
*pNtUserCreateCaret
)( HWND hwnd
, HBITMAP bitmap
, int width
, int height
);
205 HWND (WINAPI
*pNtUserCreateWindowEx
)( DWORD ex_style
, UNICODE_STRING
*class_name
,
206 UNICODE_STRING
*version
, UNICODE_STRING
*window_name
,
207 DWORD style
, INT x
, INT y
, INT width
, INT height
,
208 HWND parent
, HMENU menu
, HINSTANCE instance
, void *params
,
209 DWORD flags
, CBT_CREATEWNDW
*cbtc
, DWORD unk
, BOOL ansi
);
210 HDWP (WINAPI
*pNtUserDeferWindowPosAndBand
)( HDWP hdwp
, HWND hwnd
, HWND after
,
211 INT x
, INT y
, INT cx
, INT cy
,
212 UINT flags
, UINT unk1
, UINT unk2
);
213 BOOL (WINAPI
*pNtUserDestroyCursor
)( HCURSOR cursor
, ULONG arg
);
214 BOOL (WINAPI
*pNtUserDestroyMenu
)( HMENU handle
);
215 BOOL (WINAPI
*pNtUserDestroyWindow
)( HWND hwnd
);
216 LRESULT (WINAPI
*pNtUserDispatchMessage
)( const MSG
*msg
);
217 BOOL (WINAPI
*pNtUserDragDetect
)( HWND hwnd
, int x
, int y
);
218 BOOL (WINAPI
*pNtUserDrawIconEx
)( HDC hdc
, INT x0
, INT y0
, HICON icon
, INT width
,
219 INT height
, UINT istep
, HBRUSH hbr
, UINT flags
);
220 DWORD (WINAPI
*pNtUserDrawMenuBarTemp
)( HWND hwnd
, HDC hdc
, RECT
*rect
, HMENU handle
, HFONT font
);
221 BOOL (WINAPI
*pNtUserEmptyClipboard
)(void);
222 BOOL (WINAPI
*pNtUserEnableMenuItem
)( HMENU handle
, UINT id
, UINT flags
);
223 BOOL (WINAPI
*pNtUserEndDeferWindowPosEx
)( HDWP hdwp
, BOOL async
);
224 BOOL (WINAPI
*pNtUserEndPaint
)( HWND hwnd
, const PAINTSTRUCT
*ps
);
225 NTSTATUS (WINAPI
*pNtUserEnumDisplayDevices
)( UNICODE_STRING
*device
, DWORD index
,
226 DISPLAY_DEVICEW
*info
, DWORD flags
);
227 BOOL (WINAPI
*pNtUserEnumDisplayMonitors
)( HDC hdc
, RECT
*rect
, MONITORENUMPROC proc
, LPARAM lp
);
228 BOOL (WINAPI
*pNtUserEnumDisplaySettings
)( UNICODE_STRING
*device
, DWORD mode
,
229 DEVMODEW
*dev_mode
, DWORD flags
);
230 INT (WINAPI
*pNtUserExcludeUpdateRgn
)( HDC hdc
, HWND hwnd
);
231 BOOL (WINAPI
*pNtUserFlashWindowEx
)( FLASHWINFO
*info
);
232 SHORT (WINAPI
*pNtUserGetAsyncKeyState
)( INT key
);
233 ATOM (WINAPI
*pNtUserGetClassInfoEx
)( HINSTANCE instance
, UNICODE_STRING
*name
, WNDCLASSEXW
*wc
,
234 struct client_menu_name
*menu_name
, BOOL ansi
);
235 HANDLE (WINAPI
*pNtUserGetClipboardData
)( UINT format
, struct get_clipboard_params
*params
);
236 BOOL (WINAPI
*pNtUserGetCursorInfo
)( CURSORINFO
*info
);
237 HDC (WINAPI
*pNtUserGetDCEx
)( HWND hwnd
, HRGN clip_rgn
, DWORD flags
);
238 LONG (WINAPI
*pNtUserGetDisplayConfigBufferSizes
)( UINT32 flags
, UINT32
*num_path_info
,
239 UINT32
*num_mode_info
);
240 BOOL (WINAPI
*pNtUserGetIconInfo
)( HICON icon
, ICONINFO
*info
, UNICODE_STRING
*module
,
241 UNICODE_STRING
*res_name
, DWORD
*bpp
, LONG unk
);
242 INT (WINAPI
*pNtUserGetKeyNameText
)( LONG lparam
, WCHAR
*buffer
, INT size
);
243 UINT (WINAPI
*pNtUserGetKeyboardLayoutList
)( INT size
, HKL
*layouts
);
244 BOOL (WINAPI
*pNtUserGetMenuBarInfo
)( HWND hwnd
, LONG id
, LONG item
, MENUBARINFO
*info
);
245 BOOL (WINAPI
*pNtUserGetMessage
)( MSG
*msg
, HWND hwnd
, UINT first
, UINT last
);
246 INT (WINAPI
*pNtUserGetPriorityClipboardFormat
)( UINT
*list
, INT count
);
247 DWORD (WINAPI
*pNtUserGetQueueStatus
)( UINT flags
);
248 HMENU (WINAPI
*pNtUserGetSystemMenu
)( HWND hwnd
, BOOL revert
);
249 BOOL (WINAPI
*pNtUserGetUpdateRect
)( HWND hwnd
, RECT
*rect
, BOOL erase
);
250 INT (WINAPI
*pNtUserGetUpdateRgn
)( HWND hwnd
, HRGN hrgn
, BOOL erase
);
251 BOOL (WINAPI
*pNtUserGetUpdatedClipboardFormats
)( UINT
*formats
, UINT size
, UINT
*out_size
);
252 BOOL (WINAPI
*pNtUserGetWindowPlacement
)( HWND hwnd
, WINDOWPLACEMENT
*placement
);
253 BOOL (WINAPI
*pNtUserHideCaret
)( HWND hwnd
);
254 BOOL (WINAPI
*pNtUserHiliteMenuItem
)( HWND hwnd
, HMENU handle
, UINT item
, UINT hilite
);
255 HICON (WINAPI
*pNtUserInternalGetWindowIcon
)( HWND hwnd
, UINT type
);
256 BOOL (WINAPI
*pNtUserInvalidateRect
)( HWND hwnd
, const RECT
*rect
, BOOL erase
);
257 BOOL (WINAPI
*pNtUserInvalidateRgn
)( HWND hwnd
, HRGN hrgn
, BOOL erase
);
258 BOOL (WINAPI
*pNtUserIsClipboardFormatAvailable
)( UINT format
);
259 UINT (WINAPI
*pNtUserMapVirtualKeyEx
)( UINT code
, UINT type
, HKL layout
);
260 LRESULT (WINAPI
*pNtUserMessageCall
)( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
,
261 void *result_info
, DWORD type
, BOOL ansi
);
262 BOOL (WINAPI
*pNtUserMoveWindow
)( HWND hwnd
, INT x
, INT y
, INT cx
, INT cy
, BOOL repaint
);
263 DWORD (WINAPI
*pNtUserMsgWaitForMultipleObjectsEx
)( DWORD count
, const HANDLE
*handles
,
264 DWORD timeout
, DWORD mask
, DWORD flags
);
265 BOOL (WINAPI
*pNtUserOpenClipboard
)( HWND hwnd
, ULONG unk
);
266 BOOL (WINAPI
*pNtUserPeekMessage
)( MSG
*msg_out
, HWND hwnd
, UINT first
, UINT last
, UINT flags
);
267 BOOL (WINAPI
*pNtUserPostMessage
)( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
);
268 BOOL (WINAPI
*pNtUserPostThreadMessage
)( DWORD thread
, UINT msg
, WPARAM wparam
, LPARAM lparam
);
269 BOOL (WINAPI
*pNtUserRedrawWindow
)( HWND hwnd
, const RECT
*rect
, HRGN hrgn
, UINT flags
);
270 ATOM (WINAPI
*pNtUserRegisterClassExWOW
)( const WNDCLASSEXW
*wc
, UNICODE_STRING
*name
,
271 UNICODE_STRING
*version
,
272 struct client_menu_name
*client_menu_name
,
273 DWORD fnid
, DWORD flags
, DWORD
*wow
);
274 BOOL (WINAPI
*pNtUserRegisterHotKey
)( HWND hwnd
, INT id
, UINT modifiers
, UINT vk
);
275 INT (WINAPI
*pNtUserReleaseDC
)( HWND hwnd
, HDC hdc
);
276 BOOL (WINAPI
*pNtUserScrollDC
)( HDC hdc
, INT dx
, INT dy
, const RECT
*scroll
, const RECT
*clip
,
277 HRGN ret_update_rgn
, RECT
*update_rect
);
278 INT (WINAPI
*pNtUserScrollWindowEx
)( HWND hwnd
, INT dx
, INT dy
, const RECT
*rect
,
279 const RECT
*clip_rect
, HRGN update_rgn
,
280 RECT
*update_rect
, UINT flags
);
281 HPALETTE (WINAPI
*pNtUserSelectPalette
)( HDC hdc
, HPALETTE hpal
, WORD bkg
);
282 UINT (WINAPI
*pNtUserSendInput
)( UINT count
, INPUT
*inputs
, int size
);
283 HWND (WINAPI
*pNtUserSetActiveWindow
)( HWND hwnd
);
284 HWND (WINAPI
*pNtUserSetCapture
)( HWND hwnd
);
285 NTSTATUS (WINAPI
*pNtUserSetClipboardData
)( UINT format
, HANDLE handle
,
286 struct set_clipboard_params
*params
);
287 DWORD (WINAPI
*pNtUserSetClassLong
)( HWND hwnd
, INT offset
, LONG newval
, BOOL ansi
);
288 ULONG_PTR (WINAPI
*pNtUserSetClassLongPtr
)( HWND hwnd
, INT offset
, LONG_PTR newval
, BOOL ansi
);
289 WORD (WINAPI
*pNtUserSetClassWord
)( HWND hwnd
, INT offset
, WORD newval
);
290 HWND (WINAPI
*pNtUserSetClipboardViewer
)( HWND hwnd
);
291 HCURSOR (WINAPI
*pNtUserSetCursor
)( HCURSOR cursor
);
292 BOOL (WINAPI
*pNtUserSetCursorIconData
)( HCURSOR cursor
, UNICODE_STRING
*module
,
293 UNICODE_STRING
*res_name
, struct cursoricon_desc
*desc
);
294 BOOL (WINAPI
*pNtUserSetCursorPos
)( INT x
, INT y
);
295 HWND (WINAPI
*pNtUserSetFocus
)( HWND hwnd
);
296 void (WINAPI
*pNtUserSetInternalWindowPos
)( HWND hwnd
, UINT cmd
, RECT
*rect
, POINT
*pt
);
297 BOOL (WINAPI
*pNtUserSetLayeredWindowAttributes
)( HWND hwnd
, COLORREF key
, BYTE alpha
, DWORD flags
);
298 BOOL (WINAPI
*pNtUserSetMenu
)( HWND hwnd
, HMENU menu
);
299 HWND (WINAPI
*pNtUserSetParent
)( HWND hwnd
, HWND parent
);
300 BOOL (WINAPI
*pNtUserSetSysColors
)( INT count
, const INT
*colors
, const COLORREF
*values
);
301 BOOL (WINAPI
*pNtUserSetSystemMenu
)( HWND hwnd
, HMENU menu
);
302 LONG (WINAPI
*pNtUserSetWindowLong
)( HWND hwnd
, INT offset
, LONG newval
, BOOL ansi
);
303 LONG_PTR (WINAPI
*pNtUserSetWindowLongPtr
)( HWND hwnd
, INT offset
, LONG_PTR newval
, BOOL ansi
);
304 BOOL (WINAPI
*pNtUserSetWindowPlacement
)( HWND hwnd
, const WINDOWPLACEMENT
*wpl
);
305 BOOL (WINAPI
*pNtUserSetWindowPos
)( HWND hwnd
, HWND after
, INT x
, INT y
, INT cx
, INT cy
, UINT flags
);
306 int (WINAPI
*pNtUserSetWindowRgn
)( HWND hwnd
, HRGN hrgn
, BOOL redraw
);
307 WORD (WINAPI
*pNtUserSetWindowWord
)( HWND hwnd
, INT offset
, WORD newval
);
308 BOOL (WINAPI
*pNtUserShowCaret
)( HWND hwnd
);
309 INT (WINAPI
*pNtUserShowCursor
)( BOOL show
);
310 BOOL (WINAPI
*pNtUserShowWindow
)( HWND hwnd
, INT cmd
);
311 BOOL (WINAPI
*pNtUserShowWindowAsync
)( HWND hwnd
, INT cmd
);
312 BOOL (WINAPI
*pNtUserSystemParametersInfo
)( UINT action
, UINT val
, PVOID ptr
, UINT winini
);
313 BOOL (WINAPI
*pNtUserSystemParametersInfoForDpi
)( UINT action
, UINT val
, PVOID ptr
,
314 UINT winini
, UINT dpi
);
315 INT (WINAPI
*pNtUserToUnicodeEx
)( UINT virt
, UINT scan
, const BYTE
*state
,
316 WCHAR
*str
, int size
, UINT flags
, HKL layout
);
317 BOOL (WINAPI
*pNtUserTrackMouseEvent
)( TRACKMOUSEEVENT
*info
);
318 BOOL (WINAPI
*pNtUserTrackPopupMenuEx
)( HMENU handle
, UINT flags
, INT x
, INT y
, HWND hwnd
,
320 INT (WINAPI
*pNtUserTranslateAccelerator
)( HWND hwnd
, HACCEL accel
, MSG
*msg
);
321 BOOL (WINAPI
*pNtUserTranslateMessage
)( const MSG
*msg
, UINT flags
);
322 BOOL (WINAPI
*pNtUserUnregisterClass
)( UNICODE_STRING
*name
, HINSTANCE instance
,
323 struct client_menu_name
*client_menu_name
);
324 BOOL (WINAPI
*pNtUserUnregisterHotKey
)( HWND hwnd
, INT id
);
325 BOOL (WINAPI
*pNtUserUpdateLayeredWindow
)( HWND hwnd
, HDC hdc_dst
, const POINT
*pts_dst
,
326 const SIZE
*size
, HDC hdc_src
, const POINT
*pts_src
,
327 COLORREF key
, const BLENDFUNCTION
*blend
,
328 DWORD flags
, const RECT
*dirty
);
329 WORD (WINAPI
*pNtUserVkKeyScanEx
)( WCHAR chr
, HKL layout
);
330 DWORD (WINAPI
*pNtUserWaitForInputIdle
)( HANDLE process
, DWORD timeout
, BOOL wow
);
331 HWND (WINAPI
*pNtUserWindowFromPoint
)( LONG x
, LONG y
);
333 /* Wine-specific functions */
334 INT (WINAPI
*pSetDIBits
)( HDC hdc
, HBITMAP hbitmap
, UINT startscan
,
335 UINT lines
, const void *bits
, const BITMAPINFO
*info
,
337 BOOL (CDECL
*get_brush_bitmap_info
)( HBRUSH handle
, BITMAPINFO
*info
, void *bits
, UINT
*usage
);
338 BOOL (CDECL
*get_file_outline_text_metric
)( const WCHAR
*path
, OUTLINETEXTMETRICW
*otm
);
339 BOOL (CDECL
*get_icm_profile
)( HDC hdc
, BOOL allow_default
, DWORD
*size
, WCHAR
*filename
);
340 const struct vulkan_funcs
* (CDECL
*get_vulkan_driver
)( UINT version
);
341 struct opengl_funcs
* (CDECL
*get_wgl_driver
)( HDC hdc
, UINT version
);
342 BOOL (CDECL
*wine_send_input
)( HWND hwnd
, const INPUT
*input
, const RAWINPUT
*rawinput
);
346 extern UINT
enum_clipboard_formats( UINT format
) DECLSPEC_HIDDEN
;
347 extern void release_clipboard_owner( HWND hwnd
) DECLSPEC_HIDDEN
;
350 extern HICON
alloc_cursoricon_handle( BOOL is_icon
) DECLSPEC_HIDDEN
;
351 extern BOOL
get_clip_cursor( RECT
*rect
) DECLSPEC_HIDDEN
;
352 extern ULONG_PTR
get_icon_param( HICON handle
) DECLSPEC_HIDDEN
;
353 extern ULONG_PTR
set_icon_param( HICON handle
, ULONG_PTR param
) DECLSPEC_HIDDEN
;
356 extern struct window_surface dummy_surface DECLSPEC_HIDDEN
;
357 extern BOOL
create_dib_surface( HDC hdc
, const BITMAPINFO
*info
) DECLSPEC_HIDDEN
;
358 extern void create_offscreen_window_surface( const RECT
*visible_rect
,
359 struct window_surface
**surface
) DECLSPEC_HIDDEN
;
360 extern void erase_now( HWND hwnd
, UINT rdw_flags
) DECLSPEC_HIDDEN
;
361 extern void flush_window_surfaces( BOOL idle
) DECLSPEC_HIDDEN
;
362 extern void move_window_bits( HWND hwnd
, struct window_surface
*old_surface
,
363 struct window_surface
*new_surface
,
364 const RECT
*visible_rect
, const RECT
*old_visible_rect
,
365 const RECT
*window_rect
, const RECT
*valid_rects
) DECLSPEC_HIDDEN
;
366 extern void move_window_bits_parent( HWND hwnd
, HWND parent
, const RECT
*window_rect
,
367 const RECT
*valid_rects
) DECLSPEC_HIDDEN
;
368 extern void register_window_surface( struct window_surface
*old
,
369 struct window_surface
*new ) DECLSPEC_HIDDEN
;
372 extern LRESULT
default_window_proc( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
,
373 BOOL ansi
) DECLSPEC_HIDDEN
;
374 extern LRESULT
desktop_window_proc( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
) DECLSPEC_HIDDEN
;
375 extern BOOL
draw_frame_caption( HDC dc
, LPRECT r
, UINT uFlags
) DECLSPEC_HIDDEN
;
376 extern BOOL
draw_frame_menu( HDC dc
, RECT
*r
, UINT flags
) DECLSPEC_HIDDEN
;
377 extern BOOL
draw_nc_sys_button( HWND hwnd
, HDC hdc
, BOOL down
) DECLSPEC_HIDDEN
;
378 extern BOOL
draw_rect_edge( HDC hdc
, RECT
*rc
, UINT uType
, UINT uFlags
, UINT width
) DECLSPEC_HIDDEN
;
379 extern void fill_rect( HDC dc
, const RECT
*rect
, HBRUSH hbrush
) DECLSPEC_HIDDEN
;
380 extern void get_sys_popup_pos( HWND hwnd
, RECT
*rect
) DECLSPEC_HIDDEN
;
381 extern LRESULT
handle_nc_hit_test( HWND hwnd
, POINT pt
) DECLSPEC_HIDDEN
;
384 extern LRESULT
call_current_hook( HHOOK hhook
, INT code
, WPARAM wparam
, LPARAM lparam
) DECLSPEC_HIDDEN
;
385 extern LRESULT
call_hooks( INT id
, INT code
, WPARAM wparam
, LPARAM lparam
, BOOL unicode
) DECLSPEC_HIDDEN
;
386 extern BOOL
unhook_windows_hook( INT id
, HOOKPROC proc
) DECLSPEC_HIDDEN
;
389 extern BOOL
destroy_caret(void) DECLSPEC_HIDDEN
;
390 extern LONG global_key_state_counter DECLSPEC_HIDDEN
;
391 extern HWND
get_active_window(void) DECLSPEC_HIDDEN
;
392 extern HWND
get_capture(void) DECLSPEC_HIDDEN
;
393 extern BOOL
get_cursor_pos( POINT
*pt
) DECLSPEC_HIDDEN
;
394 extern HWND
get_focus(void) DECLSPEC_HIDDEN
;
395 extern DWORD
get_input_state(void) DECLSPEC_HIDDEN
;
396 extern BOOL WINAPI
release_capture(void) DECLSPEC_HIDDEN
;
397 extern BOOL
set_capture_window( HWND hwnd
, UINT gui_flags
, HWND
*prev_ret
) DECLSPEC_HIDDEN
;
398 extern BOOL
set_caret_blink_time( unsigned int time
) DECLSPEC_HIDDEN
;
399 extern BOOL
set_caret_pos( int x
, int y
) DECLSPEC_HIDDEN
;
400 extern BOOL
set_foreground_window( HWND hwnd
, BOOL mouse
) DECLSPEC_HIDDEN
;
401 extern void toggle_caret( HWND hwnd
) DECLSPEC_HIDDEN
;
402 extern void update_mouse_tracking_info( HWND hwnd
) DECLSPEC_HIDDEN
;
405 extern HMENU
create_menu( BOOL is_popup
) DECLSPEC_HIDDEN
;
406 extern BOOL
draw_menu_bar( HWND hwnd
) DECLSPEC_HIDDEN
;
407 extern UINT
draw_nc_menu_bar( HDC hdc
, RECT
*rect
, HWND hwnd
) DECLSPEC_HIDDEN
;
408 extern void end_menu( HWND hwnd
) DECLSPEC_HIDDEN
;
409 extern HMENU
get_menu( HWND hwnd
) DECLSPEC_HIDDEN
;
410 extern UINT
get_menu_bar_height( HWND hwnd
, UINT width
, INT org_x
, INT org_y
) DECLSPEC_HIDDEN
;
411 extern BOOL
get_menu_info( HMENU handle
, MENUINFO
*info
) DECLSPEC_HIDDEN
;
412 extern INT
get_menu_item_count( HMENU handle
) DECLSPEC_HIDDEN
;
413 extern UINT
get_menu_state( HMENU handle
, UINT item_id
, UINT flags
) DECLSPEC_HIDDEN
;
414 extern BOOL
is_menu( HMENU handle
) DECLSPEC_HIDDEN
;
415 extern HWND
is_menu_active(void) DECLSPEC_HIDDEN
;
416 extern LRESULT
popup_menu_window_proc( HWND hwnd
, UINT message
, WPARAM wparam
,
417 LPARAM lparam
) DECLSPEC_HIDDEN
;
418 extern BOOL
set_window_menu( HWND hwnd
, HMENU handle
) DECLSPEC_HIDDEN
;
419 extern void track_keyboard_menu_bar( HWND hwnd
, UINT wparam
, WCHAR ch
) DECLSPEC_HIDDEN
;
420 extern void track_mouse_menu_bar( HWND hwnd
, INT ht
, int x
, int y
) DECLSPEC_HIDDEN
;
423 extern LRESULT
dispatch_message( const MSG
*msg
, BOOL ansi
) DECLSPEC_HIDDEN
;
424 extern BOOL
kill_system_timer( HWND hwnd
, UINT_PTR id
) DECLSPEC_HIDDEN
;
425 extern BOOL
reply_message_result( LRESULT result
, MSG
*msg
) DECLSPEC_HIDDEN
;
426 extern NTSTATUS
send_hardware_message( HWND hwnd
, const INPUT
*input
, const RAWINPUT
*rawinput
,
427 UINT flags
) DECLSPEC_HIDDEN
;
428 extern LRESULT
send_internal_message_timeout( DWORD dest_pid
, DWORD dest_tid
, UINT msg
, WPARAM wparam
,
429 LPARAM lparam
, UINT flags
, UINT timeout
,
430 PDWORD_PTR res_ptr
) DECLSPEC_HIDDEN
;
431 extern LRESULT
send_message( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
) DECLSPEC_HIDDEN
;
432 extern LRESULT
send_message_timeout( HWND hwnd
, UINT msg
, WPARAM wparam
, LPARAM lparam
,
433 UINT flags
, UINT timeout
, PDWORD_PTR res_ptr
, BOOL ansi
);
436 extern BOOL enable_thunk_lock DECLSPEC_HIDDEN
;
437 extern DWORD process_layout DECLSPEC_HIDDEN
;
438 extern HBRUSH
get_55aa_brush(void) DECLSPEC_HIDDEN
;
439 extern DWORD
get_dialog_base_units(void) DECLSPEC_HIDDEN
;
440 extern LONG
get_char_dimensions( HDC hdc
, TEXTMETRICW
*metric
, LONG
*height
) DECLSPEC_HIDDEN
;
441 extern RECT
get_display_rect( const WCHAR
*display
) DECLSPEC_HIDDEN
;
442 extern UINT
get_monitor_dpi( HMONITOR monitor
) DECLSPEC_HIDDEN
;
443 extern BOOL
get_monitor_info( HMONITOR handle
, MONITORINFO
*info
) DECLSPEC_HIDDEN
;
444 extern UINT
get_win_monitor_dpi( HWND hwnd
) DECLSPEC_HIDDEN
;
445 extern RECT
get_primary_monitor_rect( UINT dpi
) DECLSPEC_HIDDEN
;
446 extern COLORREF
get_sys_color( int index
) DECLSPEC_HIDDEN
;
447 extern HBRUSH
get_sys_color_brush( unsigned int index
) DECLSPEC_HIDDEN
;
448 extern HPEN
get_sys_color_pen( unsigned int index
) DECLSPEC_HIDDEN
;
449 extern UINT
get_system_dpi(void) DECLSPEC_HIDDEN
;
450 extern int get_system_metrics( int index
) DECLSPEC_HIDDEN
;
451 extern UINT
get_thread_dpi(void) DECLSPEC_HIDDEN
;
452 extern DPI_AWARENESS
get_thread_dpi_awareness(void) DECLSPEC_HIDDEN
;
453 extern RECT
get_virtual_screen_rect( UINT dpi
) DECLSPEC_HIDDEN
;
454 extern BOOL
is_exiting_thread( DWORD tid
) DECLSPEC_HIDDEN
;
455 extern POINT
map_dpi_point( POINT pt
, UINT dpi_from
, UINT dpi_to
) DECLSPEC_HIDDEN
;
456 extern RECT
map_dpi_rect( RECT rect
, UINT dpi_from
, UINT dpi_to
) DECLSPEC_HIDDEN
;
457 extern BOOL
message_beep( UINT i
) DECLSPEC_HIDDEN
;
458 extern POINT
point_phys_to_win_dpi( HWND hwnd
, POINT pt
) DECLSPEC_HIDDEN
;
459 extern POINT
point_thread_to_win_dpi( HWND hwnd
, POINT pt
) DECLSPEC_HIDDEN
;
460 extern RECT
rect_thread_to_win_dpi( HWND hwnd
, RECT rect
) DECLSPEC_HIDDEN
;
461 extern HMONITOR
monitor_from_point( POINT pt
, DWORD flags
, UINT dpi
) DECLSPEC_HIDDEN
;
462 extern HMONITOR
monitor_from_rect( const RECT
*rect
, DWORD flags
, UINT dpi
) DECLSPEC_HIDDEN
;
463 extern HMONITOR
monitor_from_window( HWND hwnd
, DWORD flags
, UINT dpi
) DECLSPEC_HIDDEN
;
464 extern void user_lock(void) DECLSPEC_HIDDEN
;
465 extern void user_unlock(void) DECLSPEC_HIDDEN
;
466 extern void user_check_not_lock(void) DECLSPEC_HIDDEN
;
470 extern HDWP
begin_defer_window_pos( INT count
) DECLSPEC_HIDDEN
;
471 extern void destroy_thread_windows(void) DECLSPEC_HIDDEN
;
472 extern LRESULT
destroy_window( HWND hwnd
) DECLSPEC_HIDDEN
;
473 extern BOOL
get_client_rect( HWND hwnd
, RECT
*rect
) DECLSPEC_HIDDEN
;
474 extern HWND
get_desktop_window(void) DECLSPEC_HIDDEN
;
475 extern UINT
get_dpi_for_window( HWND hwnd
) DECLSPEC_HIDDEN
;
476 extern HWND
get_full_window_handle( HWND hwnd
) DECLSPEC_HIDDEN
;
477 extern HWND
get_parent( HWND hwnd
) DECLSPEC_HIDDEN
;
478 extern HWND
get_hwnd_message_parent(void) DECLSPEC_HIDDEN
;
479 extern DPI_AWARENESS_CONTEXT
get_window_dpi_awareness_context( HWND hwnd
) DECLSPEC_HIDDEN
;
480 extern MINMAXINFO
get_min_max_info( HWND hwnd
) DECLSPEC_HIDDEN
;
481 extern DWORD
get_window_context_help_id( HWND hwnd
) DECLSPEC_HIDDEN
;
482 extern HWND
get_window_relative( HWND hwnd
, UINT rel
) DECLSPEC_HIDDEN
;
483 extern DWORD
get_window_thread( HWND hwnd
, DWORD
*process
) DECLSPEC_HIDDEN
;
484 extern HWND
is_current_process_window( HWND hwnd
) DECLSPEC_HIDDEN
;
485 extern HWND
is_current_thread_window( HWND hwnd
) DECLSPEC_HIDDEN
;
486 extern BOOL
is_desktop_window( HWND hwnd
) DECLSPEC_HIDDEN
;
487 extern BOOL
is_iconic( HWND hwnd
) DECLSPEC_HIDDEN
;
488 extern BOOL
is_window_drawable( HWND hwnd
, BOOL icon
) DECLSPEC_HIDDEN
;
489 extern BOOL
is_window_enabled( HWND hwnd
) DECLSPEC_HIDDEN
;
490 extern BOOL
is_window_unicode( HWND hwnd
) DECLSPEC_HIDDEN
;
491 extern BOOL
is_window_visible( HWND hwnd
) DECLSPEC_HIDDEN
;
492 extern BOOL
is_zoomed( HWND hwnd
) DECLSPEC_HIDDEN
;
493 extern DWORD
get_window_long( HWND hwnd
, INT offset
) DECLSPEC_HIDDEN
;
494 extern ULONG_PTR
get_window_long_ptr( HWND hwnd
, INT offset
, BOOL ansi
) DECLSPEC_HIDDEN
;
495 extern BOOL
get_window_rect( HWND hwnd
, RECT
*rect
, UINT dpi
) DECLSPEC_HIDDEN
;
496 enum coords_relative
;
497 extern BOOL
get_window_rects( HWND hwnd
, enum coords_relative relative
, RECT
*window_rect
,
498 RECT
*client_rect
, UINT dpi
) DECLSPEC_HIDDEN
;
499 extern HWND
*list_window_children( HDESK desktop
, HWND hwnd
, UNICODE_STRING
*class,
500 DWORD tid
) DECLSPEC_HIDDEN
;
501 extern int map_window_points( HWND hwnd_from
, HWND hwnd_to
, POINT
*points
, UINT count
,
502 UINT dpi
) DECLSPEC_HIDDEN
;
503 extern void map_window_region( HWND from
, HWND to
, HRGN hrgn
) DECLSPEC_HIDDEN
;
504 extern BOOL
screen_to_client( HWND hwnd
, POINT
*pt
) DECLSPEC_HIDDEN
;
505 extern LONG_PTR
set_window_long( HWND hwnd
, INT offset
, UINT size
, LONG_PTR newval
,
506 BOOL ansi
) DECLSPEC_HIDDEN
;
507 extern BOOL
set_window_pos( WINDOWPOS
*winpos
, int parent_x
, int parent_y
) DECLSPEC_HIDDEN
;
508 extern ULONG
set_window_style( HWND hwnd
, ULONG set_bits
, ULONG clear_bits
) DECLSPEC_HIDDEN
;
509 extern BOOL
show_owned_popups( HWND owner
, BOOL show
) DECLSPEC_HIDDEN
;
510 extern void update_window_state( HWND hwnd
) DECLSPEC_HIDDEN
;
511 extern HWND
window_from_point( HWND hwnd
, POINT pt
, INT
*hittest
) DECLSPEC_HIDDEN
;
513 /* to release pointers retrieved by win_get_ptr */
514 static inline void release_win_ptr( struct tagWND
*ptr
)
519 extern void wrappers_init( unixlib_handle_t handle
) DECLSPEC_HIDDEN
;
520 extern NTSTATUS
gdi_init(void) DECLSPEC_HIDDEN
;
521 extern NTSTATUS
callbacks_init( void *args
) DECLSPEC_HIDDEN
;
522 extern void winstation_init(void) DECLSPEC_HIDDEN
;
523 extern void sysparams_init(void) DECLSPEC_HIDDEN
;
525 extern HKEY
reg_create_key( HKEY root
, const WCHAR
*name
, ULONG name_len
,
526 DWORD options
, DWORD
*disposition
) DECLSPEC_HIDDEN
;
527 extern HKEY
reg_open_hkcu_key( const char *name
) DECLSPEC_HIDDEN
;
528 extern HKEY
reg_open_key( HKEY root
, const WCHAR
*name
, ULONG name_len
) DECLSPEC_HIDDEN
;
529 extern ULONG
query_reg_value( HKEY hkey
, const WCHAR
*name
,
530 KEY_VALUE_PARTIAL_INFORMATION
*info
, ULONG size
) DECLSPEC_HIDDEN
;
531 extern ULONG
query_reg_ascii_value( HKEY hkey
, const char *name
,
532 KEY_VALUE_PARTIAL_INFORMATION
*info
, ULONG size
) DECLSPEC_HIDDEN
;
533 extern void set_reg_ascii_value( HKEY hkey
, const char *name
, const char *value
) DECLSPEC_HIDDEN
;
534 extern BOOL
set_reg_value( HKEY hkey
, const WCHAR
*name
, UINT type
, const void *value
,
535 DWORD count
) DECLSPEC_HIDDEN
;
536 extern BOOL
reg_delete_tree( HKEY parent
, const WCHAR
*name
, ULONG name_len
) DECLSPEC_HIDDEN
;
537 extern void reg_delete_value( HKEY hkey
, const WCHAR
*name
) DECLSPEC_HIDDEN
;
539 extern HKEY hkcu_key DECLSPEC_HIDDEN
;
541 static inline struct user_thread_info
*get_user_thread_info(void)
543 return (struct user_thread_info
*)NtCurrentTeb()->Win32ClientInfo
;
546 extern const struct user_driver_funcs
*user_driver DECLSPEC_HIDDEN
;
548 static inline NTSTATUS
user32_call( ULONG id
, void *args
, ULONG len
)
550 /* FIXME: use KeUserModeCallback instead */
551 NTSTATUS (WINAPI
*func
)(void *, ULONG
) = ((void **)NtCurrentTeb()->Peb
->KernelCallbackTable
)[id
];
552 return func( args
, len
);
555 static inline BOOL
set_ntstatus( NTSTATUS status
)
557 if (status
) SetLastError( RtlNtStatusToDosError( status
));
561 static inline WCHAR
win32u_towupper( WCHAR ch
)
563 return RtlUpcaseUnicodeChar( ch
);
566 extern CPTABLEINFO ansi_cp DECLSPEC_HIDDEN
;
568 DWORD
win32u_mbtowc( CPTABLEINFO
*info
, WCHAR
*dst
, DWORD dstlen
, const char *src
,
569 DWORD srclen
) DECLSPEC_HIDDEN
;
570 DWORD
win32u_wctomb( CPTABLEINFO
*info
, char *dst
, DWORD dstlen
, const WCHAR
*src
,
571 DWORD srclen
) DECLSPEC_HIDDEN
;
573 static inline WCHAR
*win32u_wcsdup( const WCHAR
*str
)
575 DWORD size
= (lstrlenW( str
) + 1) * sizeof(WCHAR
);
576 WCHAR
*ret
= malloc( size
);
577 if (ret
) memcpy( ret
, str
, size
);
581 static inline WCHAR
*towstr( const char *str
)
583 DWORD len
= strlen( str
) + 1;
584 WCHAR
*ret
= malloc( len
* sizeof(WCHAR
) );
585 if (ret
) win32u_mbtowc( &ansi_cp
, ret
, len
, str
, len
);
589 #define towupper(c) win32u_towupper(c)
590 #define wcsdup(s) win32u_wcsdup(s)
592 static inline void ascii_to_unicode( WCHAR
*dst
, const char *src
, size_t len
)
594 while (len
--) *dst
++ = (unsigned char)*src
++;
597 static inline UINT
asciiz_to_unicode( WCHAR
*dst
, const char *src
)
600 while ((*p
++ = *src
++));
601 return (p
- dst
) * sizeof(WCHAR
);
604 static inline BOOL
is_win9x(void)
606 return NtCurrentTeb()->Peb
->OSPlatformId
== VER_PLATFORM_WIN32s
;
609 static inline const char *debugstr_us( const UNICODE_STRING
*us
)
611 if (!us
) return "<null>";
612 return debugstr_wn( us
->Buffer
, us
->Length
/ sizeof(WCHAR
) );
615 #endif /* __WINE_WIN32U_PRIVATE */