summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2018-08-09 23:08:26 +0800
committerIru Cai <mytbk920423@gmail.com>2018-08-09 23:08:26 +0800
commit8e55986fc6a07e04a10872664f1f0ac1adbaeda1 (patch)
tree543b994f6f9ff83b3567cf9b712bf35b71fe1425 /docs
parent4040356d3b9d12cf5178eb6733f1f344088512ce (diff)
downloadrich4-8e55986fc6a07e04a10872664f1f0ac1adbaeda1.tar.xz
add API docs from libwine
Diffstat (limited to 'docs')
-rw-r--r--docs/libwine/ddraw.h2737
-rw-r--r--docs/libwine/winuser.h4328
-rw-r--r--docs/libwine/winuser.rh1368
3 files changed, 8433 insertions, 0 deletions
diff --git a/docs/libwine/ddraw.h b/docs/libwine/ddraw.h
new file mode 100644
index 0000000..f69fedc
--- /dev/null
+++ b/docs/libwine/ddraw.h
@@ -0,0 +1,2737 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __DDRAW_INCLUDED__
+#define __DDRAW_INCLUDED__
+
+#define COM_NO_WINDOWS_H
+#include <objbase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+#ifndef DIRECTDRAW_VERSION
+#define DIRECTDRAW_VERSION 0x0700
+#endif /* DIRECTDRAW_VERSION */
+
+/*****************************************************************************
+ * Predeclare the interfaces
+ */
+#ifndef __DDRAW_GUID_DEFINED__
+DEFINE_GUID( CLSID_DirectDraw, 0xD7B70EE0,0x4340,0x11CF,0xB0,0x63,0x00,0x20,0xAF,0xC2,0xCD,0x35 );
+DEFINE_GUID( CLSID_DirectDraw7, 0x3C305196,0x50DB,0x11D3,0x9C,0xFE,0x00,0xC0,0x4F,0xD9,0x30,0xC5 );
+DEFINE_GUID( CLSID_DirectDrawClipper, 0x593817A0,0x7DB3,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xb9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw, 0x6C14DB80,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDraw2, 0xB3A6F3E0,0x2B43,0x11CF,0xA2,0xDE,0x00,0xAA,0x00,0xB9,0x33,0x56 );
+DEFINE_GUID( IID_IDirectDraw3, 0x618f8ad4,0x8b7a,0x11d0,0x8f,0xcc,0x0,0xc0,0x4f,0xd9,0x18,0x9d );
+DEFINE_GUID( IID_IDirectDraw4, 0x9c59509a,0x39bd,0x11d1,0x8c,0x4a,0x00,0xc0,0x4f,0xd9,0x30,0xc5 );
+DEFINE_GUID( IID_IDirectDraw7, 0x15e65ec0,0x3b9c,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawSurface, 0x6C14DB81,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawSurface2, 0x57805885,0x6eec,0x11cf,0x94,0x41,0xa8,0x23,0x03,0xc1,0x0e,0x27 );
+DEFINE_GUID( IID_IDirectDrawSurface3, 0xDA044E00,0x69B2,0x11D0,0xA1,0xD5,0x00,0xAA,0x00,0xB8,0xDF,0xBB );
+DEFINE_GUID( IID_IDirectDrawSurface4, 0x0B2B8630,0xAD35,0x11D0,0x8E,0xA6,0x00,0x60,0x97,0x97,0xEA,0x5B );
+DEFINE_GUID( IID_IDirectDrawSurface7, 0x06675a80,0x3b9b,0x11d2,0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b );
+DEFINE_GUID( IID_IDirectDrawPalette, 0x6C14DB84,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawClipper, 0x6C14DB85,0xA733,0x11CE,0xA5,0x21,0x00,0x20,0xAF,0x0B,0xE5,0x60 );
+DEFINE_GUID( IID_IDirectDrawColorControl,0x4B9F0EE0,0x0D7E,0x11D0,0x9B,0x06,0x00,0xA0,0xC9,0x03,0xA3,0xB8 );
+DEFINE_GUID( IID_IDirectDrawGammaControl,0x69C11C3E,0xB46B,0x11D1,0xAD,0x7A,0x00,0xC0,0x4F,0xC2,0x9B,0x4E );
+#endif
+
+typedef struct IDirectDraw *LPDIRECTDRAW;
+typedef struct IDirectDraw2 *LPDIRECTDRAW2;
+typedef struct IDirectDraw3 *LPDIRECTDRAW3;
+typedef struct IDirectDraw4 *LPDIRECTDRAW4;
+typedef struct IDirectDraw7 *LPDIRECTDRAW7;
+typedef struct IDirectDrawClipper *LPDIRECTDRAWCLIPPER;
+typedef struct IDirectDrawPalette *LPDIRECTDRAWPALETTE;
+typedef struct IDirectDrawSurface *LPDIRECTDRAWSURFACE;
+typedef struct IDirectDrawSurface2 *LPDIRECTDRAWSURFACE2;
+typedef struct IDirectDrawSurface3 *LPDIRECTDRAWSURFACE3;
+typedef struct IDirectDrawSurface4 *LPDIRECTDRAWSURFACE4;
+typedef struct IDirectDrawSurface7 *LPDIRECTDRAWSURFACE7;
+typedef struct IDirectDrawColorControl *LPDIRECTDRAWCOLORCONTROL;
+typedef struct IDirectDrawGammaControl *LPDIRECTDRAWGAMMACONTROL;
+
+
+#define DDENUMRET_CANCEL 0
+#define DDENUMRET_OK 1
+
+#define DD_OK S_OK
+#define DD_FALSE S_FALSE
+
+
+#define _FACDD 0x876
+#define MAKE_DDHRESULT( code ) MAKE_HRESULT( 1, _FACDD, code )
+
+#define DDERR_ALREADYINITIALIZED MAKE_DDHRESULT( 5 )
+#define DDERR_CANNOTATTACHSURFACE MAKE_DDHRESULT( 10 )
+#define DDERR_CANNOTDETACHSURFACE MAKE_DDHRESULT( 20 )
+#define DDERR_CURRENTLYNOTAVAIL MAKE_DDHRESULT( 40 )
+#define DDERR_EXCEPTION MAKE_DDHRESULT( 55 )
+#define DDERR_GENERIC E_FAIL
+#define DDERR_HEIGHTALIGN MAKE_DDHRESULT( 90 )
+#define DDERR_INCOMPATIBLEPRIMARY MAKE_DDHRESULT( 95 )
+#define DDERR_INVALIDCAPS MAKE_DDHRESULT( 100 )
+#define DDERR_INVALIDCLIPLIST MAKE_DDHRESULT( 110 )
+#define DDERR_INVALIDMODE MAKE_DDHRESULT( 120 )
+#define DDERR_INVALIDOBJECT MAKE_DDHRESULT( 130 )
+#define DDERR_INVALIDPARAMS E_INVALIDARG
+#define DDERR_INVALIDPIXELFORMAT MAKE_DDHRESULT( 145 )
+#define DDERR_INVALIDRECT MAKE_DDHRESULT( 150 )
+#define DDERR_LOCKEDSURFACES MAKE_DDHRESULT( 160 )
+#define DDERR_NO3D MAKE_DDHRESULT( 170 )
+#define DDERR_NOALPHAHW MAKE_DDHRESULT( 180 )
+#define DDERR_NOSTEREOHARDWARE MAKE_DDHRESULT( 181 )
+#define DDERR_NOSURFACELEFT MAKE_DDHRESULT( 182 )
+#define DDERR_NOCLIPLIST MAKE_DDHRESULT( 205 )
+#define DDERR_NOCOLORCONVHW MAKE_DDHRESULT( 210 )
+#define DDERR_NOCOOPERATIVELEVELSET MAKE_DDHRESULT( 212 )
+#define DDERR_NOCOLORKEY MAKE_DDHRESULT( 215 )
+#define DDERR_NOCOLORKEYHW MAKE_DDHRESULT( 220 )
+#define DDERR_NODIRECTDRAWSUPPORT MAKE_DDHRESULT( 222 )
+#define DDERR_NOEXCLUSIVEMODE MAKE_DDHRESULT( 225 )
+#define DDERR_NOFLIPHW MAKE_DDHRESULT( 230 )
+#define DDERR_NOGDI MAKE_DDHRESULT( 240 )
+#define DDERR_NOMIRRORHW MAKE_DDHRESULT( 250 )
+#define DDERR_NOTFOUND MAKE_DDHRESULT( 255 )
+#define DDERR_NOOVERLAYHW MAKE_DDHRESULT( 260 )
+#define DDERR_OVERLAPPINGRECTS MAKE_DDHRESULT( 270 )
+#define DDERR_NORASTEROPHW MAKE_DDHRESULT( 280 )
+#define DDERR_NOROTATIONHW MAKE_DDHRESULT( 290 )
+#define DDERR_NOSTRETCHHW MAKE_DDHRESULT( 310 )
+#define DDERR_NOT4BITCOLOR MAKE_DDHRESULT( 316 )
+#define DDERR_NOT4BITCOLORINDEX MAKE_DDHRESULT( 317 )
+#define DDERR_NOT8BITCOLOR MAKE_DDHRESULT( 320 )
+#define DDERR_NOTEXTUREHW MAKE_DDHRESULT( 330 )
+#define DDERR_NOVSYNCHW MAKE_DDHRESULT( 335 )
+#define DDERR_NOZBUFFERHW MAKE_DDHRESULT( 340 )
+#define DDERR_NOZOVERLAYHW MAKE_DDHRESULT( 350 )
+#define DDERR_OUTOFCAPS MAKE_DDHRESULT( 360 )
+#define DDERR_OUTOFMEMORY E_OUTOFMEMORY
+#define DDERR_OUTOFVIDEOMEMORY MAKE_DDHRESULT( 380 )
+#define DDERR_OVERLAYCANTCLIP MAKE_DDHRESULT( 382 )
+#define DDERR_OVERLAYCOLORKEYONLYONEACTIVE MAKE_DDHRESULT( 384 )
+#define DDERR_PALETTEBUSY MAKE_DDHRESULT( 387 )
+#define DDERR_COLORKEYNOTSET MAKE_DDHRESULT( 400 )
+#define DDERR_SURFACEALREADYATTACHED MAKE_DDHRESULT( 410 )
+#define DDERR_SURFACEALREADYDEPENDENT MAKE_DDHRESULT( 420 )
+#define DDERR_SURFACEBUSY MAKE_DDHRESULT( 430 )
+#define DDERR_CANTLOCKSURFACE MAKE_DDHRESULT( 435 )
+#define DDERR_SURFACEISOBSCURED MAKE_DDHRESULT( 440 )
+#define DDERR_SURFACELOST MAKE_DDHRESULT( 450 )
+#define DDERR_SURFACENOTATTACHED MAKE_DDHRESULT( 460 )
+#define DDERR_TOOBIGHEIGHT MAKE_DDHRESULT( 470 )
+#define DDERR_TOOBIGSIZE MAKE_DDHRESULT( 480 )
+#define DDERR_TOOBIGWIDTH MAKE_DDHRESULT( 490 )
+#define DDERR_UNSUPPORTED E_NOTIMPL
+#define DDERR_UNSUPPORTEDFORMAT MAKE_DDHRESULT( 510 )
+#define DDERR_UNSUPPORTEDMASK MAKE_DDHRESULT( 520 )
+#define DDERR_INVALIDSTREAM MAKE_DDHRESULT( 521 )
+#define DDERR_VERTICALBLANKINPROGRESS MAKE_DDHRESULT( 537 )
+#define DDERR_WASSTILLDRAWING MAKE_DDHRESULT( 540 )
+#define DDERR_DDSCAPSCOMPLEXREQUIRED MAKE_DDHRESULT( 542 )
+#define DDERR_XALIGN MAKE_DDHRESULT( 560 )
+#define DDERR_INVALIDDIRECTDRAWGUID MAKE_DDHRESULT( 561 )
+#define DDERR_DIRECTDRAWALREADYCREATED MAKE_DDHRESULT( 562 )
+#define DDERR_NODIRECTDRAWHW MAKE_DDHRESULT( 563 )
+#define DDERR_PRIMARYSURFACEALREADYEXISTS MAKE_DDHRESULT( 564 )
+#define DDERR_NOEMULATION MAKE_DDHRESULT( 565 )
+#define DDERR_REGIONTOOSMALL MAKE_DDHRESULT( 566 )
+#define DDERR_CLIPPERISUSINGHWND MAKE_DDHRESULT( 567 )
+#define DDERR_NOCLIPPERATTACHED MAKE_DDHRESULT( 568 )
+#define DDERR_NOHWND MAKE_DDHRESULT( 569 )
+#define DDERR_HWNDSUBCLASSED MAKE_DDHRESULT( 570 )
+#define DDERR_HWNDALREADYSET MAKE_DDHRESULT( 571 )
+#define DDERR_NOPALETTEATTACHED MAKE_DDHRESULT( 572 )
+#define DDERR_NOPALETTEHW MAKE_DDHRESULT( 573 )
+#define DDERR_BLTFASTCANTCLIP MAKE_DDHRESULT( 574 )
+#define DDERR_NOBLTHW MAKE_DDHRESULT( 575 )
+#define DDERR_NODDROPSHW MAKE_DDHRESULT( 576 )
+#define DDERR_OVERLAYNOTVISIBLE MAKE_DDHRESULT( 577 )
+#define DDERR_NOOVERLAYDEST MAKE_DDHRESULT( 578 )
+#define DDERR_INVALIDPOSITION MAKE_DDHRESULT( 579 )
+#define DDERR_NOTAOVERLAYSURFACE MAKE_DDHRESULT( 580 )
+#define DDERR_EXCLUSIVEMODEALREADYSET MAKE_DDHRESULT( 581 )
+#define DDERR_NOTFLIPPABLE MAKE_DDHRESULT( 582 )
+#define DDERR_CANTDUPLICATE MAKE_DDHRESULT( 583 )
+#define DDERR_NOTLOCKED MAKE_DDHRESULT( 584 )
+#define DDERR_CANTCREATEDC MAKE_DDHRESULT( 585 )
+#define DDERR_NODC MAKE_DDHRESULT( 586 )
+#define DDERR_WRONGMODE MAKE_DDHRESULT( 587 )
+#define DDERR_IMPLICITLYCREATED MAKE_DDHRESULT( 588 )
+#define DDERR_NOTPALETTIZED MAKE_DDHRESULT( 589 )
+#define DDERR_UNSUPPORTEDMODE MAKE_DDHRESULT( 590 )
+#define DDERR_NOMIPMAPHW MAKE_DDHRESULT( 591 )
+#define DDERR_INVALIDSURFACETYPE MAKE_DDHRESULT( 592 )
+#define DDERR_NOOPTIMIZEHW MAKE_DDHRESULT( 600 )
+#define DDERR_NOTLOADED MAKE_DDHRESULT( 601 )
+#define DDERR_NOFOCUSWINDOW MAKE_DDHRESULT( 602 )
+#define DDERR_NOTONMIPMAPSUBLEVEL MAKE_DDHRESULT( 603 )
+#define DDERR_DCALREADYCREATED MAKE_DDHRESULT( 620 )
+#define DDERR_NONONLOCALVIDMEM MAKE_DDHRESULT( 630 )
+#define DDERR_CANTPAGELOCK MAKE_DDHRESULT( 640 )
+#define DDERR_CANTPAGEUNLOCK MAKE_DDHRESULT( 660 )
+#define DDERR_NOTPAGELOCKED MAKE_DDHRESULT( 680 )
+#define DDERR_MOREDATA MAKE_DDHRESULT( 690 )
+#define DDERR_EXPIRED MAKE_DDHRESULT( 691 )
+#define DDERR_TESTFINISHED MAKE_DDHRESULT( 692 )
+#define DDERR_NEWMODE MAKE_DDHRESULT( 693 )
+#define DDERR_D3DNOTINITIALIZED MAKE_DDHRESULT( 694 )
+#define DDERR_VIDEONOTACTIVE MAKE_DDHRESULT( 695 )
+#define DDERR_NOMONITORINFORMATION MAKE_DDHRESULT( 696 )
+#define DDERR_NODRIVERSUPPORT MAKE_DDHRESULT( 697 )
+#define DDERR_DEVICEDOESNTOWNSURFACE MAKE_DDHRESULT( 699 )
+#define DDERR_NOTINITIALIZED CO_E_NOTINITIALIZED
+
+/* dwFlags for Blt* */
+#define DDBLT_ALPHADEST 0x00000001
+#define DDBLT_ALPHADESTCONSTOVERRIDE 0x00000002
+#define DDBLT_ALPHADESTNEG 0x00000004
+#define DDBLT_ALPHADESTSURFACEOVERRIDE 0x00000008
+#define DDBLT_ALPHAEDGEBLEND 0x00000010
+#define DDBLT_ALPHASRC 0x00000020
+#define DDBLT_ALPHASRCCONSTOVERRIDE 0x00000040
+#define DDBLT_ALPHASRCNEG 0x00000080
+#define DDBLT_ALPHASRCSURFACEOVERRIDE 0x00000100
+#define DDBLT_ASYNC 0x00000200
+#define DDBLT_COLORFILL 0x00000400
+#define DDBLT_DDFX 0x00000800
+#define DDBLT_DDROPS 0x00001000
+#define DDBLT_KEYDEST 0x00002000
+#define DDBLT_KEYDESTOVERRIDE 0x00004000
+#define DDBLT_KEYSRC 0x00008000
+#define DDBLT_KEYSRCOVERRIDE 0x00010000
+#define DDBLT_ROP 0x00020000
+#define DDBLT_ROTATIONANGLE 0x00040000
+#define DDBLT_ZBUFFER 0x00080000
+#define DDBLT_ZBUFFERDESTCONSTOVERRIDE 0x00100000
+#define DDBLT_ZBUFFERDESTOVERRIDE 0x00200000
+#define DDBLT_ZBUFFERSRCCONSTOVERRIDE 0x00400000
+#define DDBLT_ZBUFFERSRCOVERRIDE 0x00800000
+#define DDBLT_WAIT 0x01000000
+#define DDBLT_DEPTHFILL 0x02000000
+#define DDBLT_DONOTWAIT 0x08000000
+
+/* dwTrans for BltFast */
+#define DDBLTFAST_NOCOLORKEY 0x00000000
+#define DDBLTFAST_SRCCOLORKEY 0x00000001
+#define DDBLTFAST_DESTCOLORKEY 0x00000002
+#define DDBLTFAST_WAIT 0x00000010
+#define DDBLTFAST_DONOTWAIT 0x00000020
+
+/* dwFlags for Flip */
+#define DDFLIP_WAIT 0x00000001
+#define DDFLIP_EVEN 0x00000002 /* only valid for overlay */
+#define DDFLIP_ODD 0x00000004 /* only valid for overlay */
+#define DDFLIP_NOVSYNC 0x00000008
+#define DDFLIP_STEREO 0x00000010
+#define DDFLIP_DONOTWAIT 0x00000020
+#define DDFLIP_INTERVAL2 0x02000000
+#define DDFLIP_INTERVAL3 0x03000000
+#define DDFLIP_INTERVAL4 0x04000000
+
+
+/* dwFlags for GetBltStatus */
+#define DDGBS_CANBLT 0x00000001
+#define DDGBS_ISBLTDONE 0x00000002
+
+/* dwFlags for IDirectDrawSurface7::GetFlipStatus */
+#define DDGFS_CANFLIP __MSABI_LONG(1)
+#define DDGFS_ISFLIPDONE __MSABI_LONG(2)
+
+/* dwFlags for IDirectDrawSurface7::SetPrivateData */
+#define DDSPD_IUNKNOWNPOINTER __MSABI_LONG(1)
+#define DDSPD_VOLATILE __MSABI_LONG(2)
+
+/* DDSCAPS.dwCaps */
+/* reserved1, was 3d capable */
+#define DDSCAPS_RESERVED1 0x00000001
+/* surface contains alpha information */
+#define DDSCAPS_ALPHA 0x00000002
+/* this surface is a backbuffer */
+#define DDSCAPS_BACKBUFFER 0x00000004
+/* complex surface structure */
+#define DDSCAPS_COMPLEX 0x00000008
+/* part of surface flipping structure */
+#define DDSCAPS_FLIP 0x00000010
+/* this surface is the frontbuffer surface */
+#define DDSCAPS_FRONTBUFFER 0x00000020
+/* this is a plain offscreen surface */
+#define DDSCAPS_OFFSCREENPLAIN 0x00000040
+/* overlay */
+#define DDSCAPS_OVERLAY 0x00000080
+/* palette objects can be created and attached to us */
+#define DDSCAPS_PALETTE 0x00000100
+/* primary surface (the one the user looks at currently)(right eye)*/
+#define DDSCAPS_PRIMARYSURFACE 0x00000200
+/* primary surface for left eye */
+#define DDSCAPS_PRIMARYSURFACELEFT 0x00000400
+/* surface exists in systemmemory */
+#define DDSCAPS_SYSTEMMEMORY 0x00000800
+/* surface can be used as a texture */
+#define DDSCAPS_TEXTURE 0x00001000
+/* surface may be destination for 3d rendering */
+#define DDSCAPS_3DDEVICE 0x00002000
+/* surface exists in videomemory */
+#define DDSCAPS_VIDEOMEMORY 0x00004000
+/* surface changes immediately visible */
+#define DDSCAPS_VISIBLE 0x00008000
+/* write only surface */
+#define DDSCAPS_WRITEONLY 0x00010000
+/* zbuffer surface */
+#define DDSCAPS_ZBUFFER 0x00020000
+/* has its own DC */
+#define DDSCAPS_OWNDC 0x00040000
+/* surface should be able to receive live video */
+#define DDSCAPS_LIVEVIDEO 0x00080000
+/* should be able to have a hw codec decompress stuff into it */
+#define DDSCAPS_HWCODEC 0x00100000
+/* mode X (320x200 or 320x240) surface */
+#define DDSCAPS_MODEX 0x00200000
+/* one mipmap surface (1 level) */
+#define DDSCAPS_MIPMAP 0x00400000
+#define DDSCAPS_RESERVED2 0x00800000
+/* memory allocation delayed until Load() */
+#define DDSCAPS_ALLOCONLOAD 0x04000000
+/* Indicates that the surface will receive data from a video port */
+#define DDSCAPS_VIDEOPORT 0x08000000
+/* surface is in local videomemory */
+#define DDSCAPS_LOCALVIDMEM 0x10000000
+/* surface is in nonlocal videomemory */
+#define DDSCAPS_NONLOCALVIDMEM 0x20000000
+/* surface is a standard VGA mode surface (NOT ModeX) */
+#define DDSCAPS_STANDARDVGAMODE 0x40000000
+/* optimized? surface */
+#define DDSCAPS_OPTIMIZED 0x80000000
+
+typedef struct _DDSCAPS {
+ DWORD dwCaps; /* capabilities of surface wanted */
+} DDSCAPS,*LPDDSCAPS;
+
+/* DDSCAPS2.dwCaps2 */
+/* indicates the surface will receive data from a video port using
+ deinterlacing hardware. */
+#define DDSCAPS2_HARDWAREDEINTERLACE 0x00000002
+/* indicates the surface will be locked very frequently. */
+#define DDSCAPS2_HINTDYNAMIC 0x00000004
+/* indicates surface can be re-ordered or retiled on load() */
+#define DDSCAPS2_HINTSTATIC 0x00000008
+/* indicates surface to be managed by directdraw/direct3D */
+#define DDSCAPS2_TEXTUREMANAGE 0x00000010
+/* reserved bits */
+#define DDSCAPS2_RESERVED1 0x00000020
+#define DDSCAPS2_RESERVED2 0x00000040
+/* indicates surface will never be locked again */
+#define DDSCAPS2_OPAQUE 0x00000080
+/* set at CreateSurface() time to indicate antialiasing will be used */
+#define DDSCAPS2_HINTANTIALIASING 0x00000100
+/* set at CreateSurface() time to indicate cubic environment map */
+#define DDSCAPS2_CUBEMAP 0x00000200
+/* face flags for cube maps */
+#define DDSCAPS2_CUBEMAP_POSITIVEX 0x00000400
+#define DDSCAPS2_CUBEMAP_NEGATIVEX 0x00000800
+#define DDSCAPS2_CUBEMAP_POSITIVEY 0x00001000
+#define DDSCAPS2_CUBEMAP_NEGATIVEY 0x00002000
+#define DDSCAPS2_CUBEMAP_POSITIVEZ 0x00004000
+#define DDSCAPS2_CUBEMAP_NEGATIVEZ 0x00008000
+/* specifies all faces of a cube for CreateSurface() */
+#define DDSCAPS2_CUBEMAP_ALLFACES ( DDSCAPS2_CUBEMAP_POSITIVEX |\
+ DDSCAPS2_CUBEMAP_NEGATIVEX |\
+ DDSCAPS2_CUBEMAP_POSITIVEY |\
+ DDSCAPS2_CUBEMAP_NEGATIVEY |\
+ DDSCAPS2_CUBEMAP_POSITIVEZ |\
+ DDSCAPS2_CUBEMAP_NEGATIVEZ )
+/* set for mipmap sublevels on DirectX7 and later. ignored by CreateSurface() */
+#define DDSCAPS2_MIPMAPSUBLEVEL 0x00010000
+/* indicates texture surface to be managed by Direct3D *only* */
+#define DDSCAPS2_D3DTEXTUREMANAGE 0x00020000
+/* indicates managed surface that can safely be lost */
+#define DDSCAPS2_DONOTPERSIST 0x00040000
+/* indicates surface is part of a stereo flipping chain */
+#define DDSCAPS2_STEREOSURFACELEFT 0x00080000
+#define DDSCAPS2_VOLUME 0x00200000
+
+typedef struct _DDSCAPS2 {
+ DWORD dwCaps; /* capabilities of surface wanted */
+ DWORD dwCaps2; /* additional capabilities */
+ DWORD dwCaps3; /* reserved capabilities */
+ union {
+ DWORD dwCaps4; /* more reserved capabilities */
+ DWORD dwVolumeDepth;
+ } DUMMYUNIONNAME1;
+} DDSCAPS2,*LPDDSCAPS2;
+
+#define DD_ROP_SPACE (256/32) /* space required to store ROP array */
+
+typedef struct _DDCAPS_DX7 /* DirectX 7 version of caps struct */
+{
+ DWORD dwSize; /* size of the DDDRIVERCAPS structure */
+ DWORD dwCaps; /* driver specific capabilities */
+ DWORD dwCaps2; /* more driver specific capabilities */
+ DWORD dwCKeyCaps; /* color key capabilities of the surface */
+ DWORD dwFXCaps; /* driver specific stretching and effects capabilities */
+ DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
+ DWORD dwPalCaps; /* palette capabilities */
+ DWORD dwSVCaps; /* stereo vision capabilities */
+ DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
+ DWORD dwVidMemTotal; /* total amount of video memory */
+ DWORD dwVidMemFree; /* amount of free video memory */
+ DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
+ DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
+ DWORD dwNumFourCCCodes; /* number of four cc codes */
+ DWORD dwAlignBoundarySrc; /* source rectangle alignment */
+ DWORD dwAlignSizeSrc; /* source rectangle byte size */
+ DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
+ DWORD dwAlignSizeDest; /* dest rectangle byte size */
+ DWORD dwAlignStrideAlign; /* stride alignment */
+ DWORD dwRops[DD_ROP_SPACE]; /* ROPs supported */
+ DDSCAPS ddsOldCaps; /* old DDSCAPS - superseded for DirectX6+ */
+ DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+ DWORD dwReserved3;
+ DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
+ DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
+ DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
+ DWORD dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+ DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
+ DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
+ DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
+ DWORD dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+ DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
+ DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
+ DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
+ DWORD dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+ DWORD dwMaxVideoPorts; /* maximum number of usable video ports */
+ DWORD dwCurrVideoPorts; /* current number of video ports used */
+ DWORD dwSVBCaps2; /* more driver specific capabilities for System->Vmem blts */
+ DWORD dwNLVBCaps; /* driver specific capabilities for non-local->local vidmem blts */
+ DWORD dwNLVBCaps2; /* more driver specific capabilities non-local->local vidmem blts */
+ DWORD dwNLVBCKeyCaps; /* driver color key capabilities for non-local->local vidmem blts */
+ DWORD dwNLVBFXCaps; /* driver FX capabilities for non-local->local blts */
+ DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPs supported for non-local->local blts */
+ DDSCAPS2 ddsCaps; /* surface capabilities */
+} DDCAPS_DX7,*LPDDCAPS_DX7;
+
+typedef struct _DDCAPS_DX6 /* DirectX 6 version of caps struct */
+{
+ DWORD dwSize; /* size of the DDDRIVERCAPS structure */
+ DWORD dwCaps; /* driver specific capabilities */
+ DWORD dwCaps2; /* more driver specific capabilities */
+ DWORD dwCKeyCaps; /* color key capabilities of the surface */
+ DWORD dwFXCaps; /* driver specific stretching and effects capabilities */
+ DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
+ DWORD dwPalCaps; /* palette capabilities */
+ DWORD dwSVCaps; /* stereo vision capabilities */
+ DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
+ DWORD dwVidMemTotal; /* total amount of video memory */
+ DWORD dwVidMemFree; /* amount of free video memory */
+ DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
+ DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
+ DWORD dwNumFourCCCodes; /* number of four cc codes */
+ DWORD dwAlignBoundarySrc; /* source rectangle alignment */
+ DWORD dwAlignSizeSrc; /* source rectangle byte size */
+ DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
+ DWORD dwAlignSizeDest; /* dest rectangle byte size */
+ DWORD dwAlignStrideAlign; /* stride alignment */
+ DWORD dwRops[DD_ROP_SPACE]; /* ROPs supported */
+ DDSCAPS ddsOldCaps; /* old DDSCAPS - superseded for DirectX6+ */
+ DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+ DWORD dwReserved3;
+ DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
+ DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
+ DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
+ DWORD dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+ DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
+ DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
+ DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
+ DWORD dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+ DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
+ DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
+ DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
+ DWORD dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+ DWORD dwMaxVideoPorts; /* maximum number of usable video ports */
+ DWORD dwCurrVideoPorts; /* current number of video ports used */
+ DWORD dwSVBCaps2; /* more driver specific capabilities for System->Vmem blts */
+ DWORD dwNLVBCaps; /* driver specific capabilities for non-local->local vidmem blts */
+ DWORD dwNLVBCaps2; /* more driver specific capabilities non-local->local vidmem blts */
+ DWORD dwNLVBCKeyCaps; /* driver color key capabilities for non-local->local vidmem blts */
+ DWORD dwNLVBFXCaps; /* driver FX capabilities for non-local->local blts */
+ DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPs supported for non-local->local blts */
+ /* and one new member for DirectX 6 */
+ DDSCAPS2 ddsCaps; /* surface capabilities */
+} DDCAPS_DX6,*LPDDCAPS_DX6;
+
+typedef struct _DDCAPS_DX5 /* DirectX5 version of caps struct */
+{
+ DWORD dwSize; /* size of the DDDRIVERCAPS structure */
+ DWORD dwCaps; /* driver specific capabilities */
+ DWORD dwCaps2; /* more driver specific capabilities */
+ DWORD dwCKeyCaps; /* color key capabilities of the surface */
+ DWORD dwFXCaps; /* driver specific stretching and effects capabilities */
+ DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
+ DWORD dwPalCaps; /* palette capabilities */
+ DWORD dwSVCaps; /* stereo vision capabilities */
+ DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
+ DWORD dwVidMemTotal; /* total amount of video memory */
+ DWORD dwVidMemFree; /* amount of free video memory */
+ DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
+ DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
+ DWORD dwNumFourCCCodes; /* number of four cc codes */
+ DWORD dwAlignBoundarySrc; /* source rectangle alignment */
+ DWORD dwAlignSizeSrc; /* source rectangle byte size */
+ DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
+ DWORD dwAlignSizeDest; /* dest rectangle byte size */
+ DWORD dwAlignStrideAlign; /* stride alignment */
+ DWORD dwRops[DD_ROP_SPACE]; /* ROPs supported */
+ DDSCAPS ddsCaps; /* DDSCAPS structure has all the general capabilities */
+ DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+ DWORD dwReserved3;
+ DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
+ DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
+ DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
+ DWORD dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+ DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
+ DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
+ DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
+ DWORD dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+ DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
+ DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
+ DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
+ DWORD dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+ /* the following are the new DirectX 5 members */
+ DWORD dwMaxVideoPorts; /* maximum number of usable video ports */
+ DWORD dwCurrVideoPorts; /* current number of video ports used */
+ DWORD dwSVBCaps2; /* more driver specific capabilities for System->Vmem blts */
+ DWORD dwNLVBCaps; /* driver specific capabilities for non-local->local vidmem blts */
+ DWORD dwNLVBCaps2; /* more driver specific capabilities non-local->local vidmem blts */
+ DWORD dwNLVBCKeyCaps; /* driver color key capabilities for non-local->local vidmem blts */
+ DWORD dwNLVBFXCaps; /* driver FX capabilities for non-local->local blts */
+ DWORD dwNLVBRops[DD_ROP_SPACE]; /* ROPs supported for non-local->local blts */
+} DDCAPS_DX5,*LPDDCAPS_DX5;
+
+typedef struct _DDCAPS_DX3 /* DirectX3 version of caps struct */
+{
+ DWORD dwSize; /* size of the DDDRIVERCAPS structure */
+ DWORD dwCaps; /* driver specific capabilities */
+ DWORD dwCaps2; /* more driver specific capabilities */
+ DWORD dwCKeyCaps; /* color key capabilities of the surface */
+ DWORD dwFXCaps; /* driver specific stretching and effects capabilities */
+ DWORD dwFXAlphaCaps; /* alpha driver specific capabilities */
+ DWORD dwPalCaps; /* palette capabilities */
+ DWORD dwSVCaps; /* stereo vision capabilities */
+ DWORD dwAlphaBltConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaBltPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaBltSurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlayConstBitDepths; /* DDBD_2,4,8 */
+ DWORD dwAlphaOverlayPixelBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwAlphaOverlaySurfaceBitDepths; /* DDBD_1,2,4,8 */
+ DWORD dwZBufferBitDepths; /* DDBD_8,16,24,32 */
+ DWORD dwVidMemTotal; /* total amount of video memory */
+ DWORD dwVidMemFree; /* amount of free video memory */
+ DWORD dwMaxVisibleOverlays; /* maximum number of visible overlays */
+ DWORD dwCurrVisibleOverlays; /* current number of visible overlays */
+ DWORD dwNumFourCCCodes; /* number of four cc codes */
+ DWORD dwAlignBoundarySrc; /* source rectangle alignment */
+ DWORD dwAlignSizeSrc; /* source rectangle byte size */
+ DWORD dwAlignBoundaryDest; /* dest rectangle alignment */
+ DWORD dwAlignSizeDest; /* dest rectangle byte size */
+ DWORD dwAlignStrideAlign; /* stride alignment */
+ DWORD dwRops[DD_ROP_SPACE]; /* ROPs supported */
+ DDSCAPS ddsCaps; /* DDSCAPS structure has all the general capabilities */
+ DWORD dwMinOverlayStretch; /* minimum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxOverlayStretch; /* maximum overlay stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinLiveVideoStretch; /* minimum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxLiveVideoStretch; /* maximum live video stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMinHwCodecStretch; /* minimum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwMaxHwCodecStretch; /* maximum hardware codec stretch factor multiplied by 1000, eg 1000 == 1.0, 1300 == 1.3 */
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+ DWORD dwReserved3;
+ DWORD dwSVBCaps; /* driver specific capabilities for System->Vmem blts */
+ DWORD dwSVBCKeyCaps; /* driver color key capabilities for System->Vmem blts */
+ DWORD dwSVBFXCaps; /* driver FX capabilities for System->Vmem blts */
+ DWORD dwSVBRops[DD_ROP_SPACE];/* ROPs supported for System->Vmem blts */
+ DWORD dwVSBCaps; /* driver specific capabilities for Vmem->System blts */
+ DWORD dwVSBCKeyCaps; /* driver color key capabilities for Vmem->System blts */
+ DWORD dwVSBFXCaps; /* driver FX capabilities for Vmem->System blts */
+ DWORD dwVSBRops[DD_ROP_SPACE];/* ROPs supported for Vmem->System blts */
+ DWORD dwSSBCaps; /* driver specific capabilities for System->System blts */
+ DWORD dwSSBCKeyCaps; /* driver color key capabilities for System->System blts */
+ DWORD dwSSBFXCaps; /* driver FX capabilities for System->System blts */
+ DWORD dwSSBRops[DD_ROP_SPACE];/* ROPs supported for System->System blts */
+ DWORD dwReserved4;
+ DWORD dwReserved5;
+ DWORD dwReserved6;
+} DDCAPS_DX3,*LPDDCAPS_DX3;
+
+/* set caps struct according to DIRECTDRAW_VERSION */
+
+#if DIRECTDRAW_VERSION <= 0x300
+typedef DDCAPS_DX3 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x500
+typedef DDCAPS_DX5 DDCAPS;
+#elif DIRECTDRAW_VERSION <= 0x600
+typedef DDCAPS_DX6 DDCAPS;
+#else
+typedef DDCAPS_DX7 DDCAPS;
+#endif
+
+typedef DDCAPS *LPDDCAPS;
+
+/* DDCAPS.dwCaps */
+#define DDCAPS_3D 0x00000001
+#define DDCAPS_ALIGNBOUNDARYDEST 0x00000002
+#define DDCAPS_ALIGNSIZEDEST 0x00000004
+#define DDCAPS_ALIGNBOUNDARYSRC 0x00000008
+#define DDCAPS_ALIGNSIZESRC 0x00000010
+#define DDCAPS_ALIGNSTRIDE 0x00000020
+#define DDCAPS_BLT 0x00000040
+#define DDCAPS_BLTQUEUE 0x00000080
+#define DDCAPS_BLTFOURCC 0x00000100
+#define DDCAPS_BLTSTRETCH 0x00000200
+#define DDCAPS_GDI 0x00000400
+#define DDCAPS_OVERLAY 0x00000800
+#define DDCAPS_OVERLAYCANTCLIP 0x00001000
+#define DDCAPS_OVERLAYFOURCC 0x00002000
+#define DDCAPS_OVERLAYSTRETCH 0x00004000
+#define DDCAPS_PALETTE 0x00008000
+#define DDCAPS_PALETTEVSYNC 0x00010000
+#define DDCAPS_READSCANLINE 0x00020000
+#define DDCAPS_STEREOVIEW 0x00040000
+#define DDCAPS_VBI 0x00080000
+#define DDCAPS_ZBLTS 0x00100000
+#define DDCAPS_ZOVERLAYS 0x00200000
+#define DDCAPS_COLORKEY 0x00400000
+#define DDCAPS_ALPHA 0x00800000
+#define DDCAPS_COLORKEYHWASSIST 0x01000000
+#define DDCAPS_NOHARDWARE 0x02000000
+#define DDCAPS_BLTCOLORFILL 0x04000000
+#define DDCAPS_BANKSWITCHED 0x08000000
+#define DDCAPS_BLTDEPTHFILL 0x10000000
+#define DDCAPS_CANCLIP 0x20000000
+#define DDCAPS_CANCLIPSTRETCHED 0x40000000
+#define DDCAPS_CANBLTSYSMEM 0x80000000
+
+/* DDCAPS.dwCaps2 */
+#define DDCAPS2_CERTIFIED 0x00000001
+#define DDCAPS2_NO2DDURING3DSCENE 0x00000002
+#define DDCAPS2_VIDEOPORT 0x00000004
+#define DDCAPS2_AUTOFLIPOVERLAY 0x00000008
+#define DDCAPS2_CANBOBINTERLEAVED 0x00000010
+#define DDCAPS2_CANBOBNONINTERLEAVED 0x00000020
+#define DDCAPS2_COLORCONTROLOVERLAY 0x00000040
+#define DDCAPS2_COLORCONTROLPRIMARY 0x00000080
+#define DDCAPS2_CANDROPZ16BIT 0x00000100
+#define DDCAPS2_NONLOCALVIDMEM 0x00000200
+#define DDCAPS2_NONLOCALVIDMEMCAPS 0x00000400
+#define DDCAPS2_NOPAGELOCKREQUIRED 0x00000800
+#define DDCAPS2_WIDESURFACES 0x00001000
+#define DDCAPS2_CANFLIPODDEVEN 0x00002000
+#define DDCAPS2_CANBOBHARDWARE 0x00004000
+#define DDCAPS2_COPYFOURCC 0x00008000
+#define DDCAPS2_PRIMARYGAMMA 0x00020000
+#define DDCAPS2_CANRENDERWINDOWED 0x00080000
+#define DDCAPS2_CANCALIBRATEGAMMA 0x00100000
+#define DDCAPS2_FLIPINTERVAL 0x00200000
+#define DDCAPS2_FLIPNOVSYNC 0x00400000
+#define DDCAPS2_CANMANAGETEXTURE 0x00800000
+#define DDCAPS2_TEXMANINNONLOCALVIDMEM 0x01000000
+#define DDCAPS2_STEREO 0x02000000
+#define DDCAPS2_SYSTONONLOCAL_AS_SYSTOLOCAL 0x04000000
+
+
+/* Set/Get Colour Key Flags */
+#define DDCKEY_COLORSPACE 0x00000001 /* Struct is single colour space */
+#define DDCKEY_DESTBLT 0x00000002 /* To be used as dest for blt */
+#define DDCKEY_DESTOVERLAY 0x00000004 /* To be used as dest for CK overlays */
+#define DDCKEY_SRCBLT 0x00000008 /* To be used as src for blt */
+#define DDCKEY_SRCOVERLAY 0x00000010 /* To be used as src for CK overlays */
+
+typedef struct _DDCOLORKEY
+{
+ DWORD dwColorSpaceLowValue;/* low boundary of color space that is to
+ * be treated as Color Key, inclusive
+ */
+ DWORD dwColorSpaceHighValue;/* high boundary of color space that is
+ * to be treated as Color Key, inclusive
+ */
+} DDCOLORKEY,*LPDDCOLORKEY;
+
+/* ddCKEYCAPS bits */
+#define DDCKEYCAPS_DESTBLT 0x00000001
+#define DDCKEYCAPS_DESTBLTCLRSPACE 0x00000002
+#define DDCKEYCAPS_DESTBLTCLRSPACEYUV 0x00000004
+#define DDCKEYCAPS_DESTBLTYUV 0x00000008
+#define DDCKEYCAPS_DESTOVERLAY 0x00000010
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACE 0x00000020
+#define DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV 0x00000040
+#define DDCKEYCAPS_DESTOVERLAYONEACTIVE 0x00000080
+#define DDCKEYCAPS_DESTOVERLAYYUV 0x00000100
+#define DDCKEYCAPS_SRCBLT 0x00000200
+#define DDCKEYCAPS_SRCBLTCLRSPACE 0x00000400
+#define DDCKEYCAPS_SRCBLTCLRSPACEYUV 0x00000800
+#define DDCKEYCAPS_SRCBLTYUV 0x00001000
+#define DDCKEYCAPS_SRCOVERLAY 0x00002000
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACE 0x00004000
+#define DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV 0x00008000
+#define DDCKEYCAPS_SRCOVERLAYONEACTIVE 0x00010000
+#define DDCKEYCAPS_SRCOVERLAYYUV 0x00020000
+#define DDCKEYCAPS_NOCOSTOVERLAY 0x00040000
+
+typedef struct _DDPIXELFORMAT {
+ DWORD dwSize; /* 0: size of structure */
+ DWORD dwFlags; /* 4: pixel format flags */
+ DWORD dwFourCC; /* 8: (FOURCC code) */
+ union {
+ DWORD dwRGBBitCount; /* C: how many bits per pixel */
+ DWORD dwYUVBitCount; /* C: how many bits per pixel */
+ DWORD dwZBufferBitDepth; /* C: how many bits for z buffers */
+ DWORD dwAlphaBitDepth; /* C: how many bits for alpha channels*/
+ DWORD dwLuminanceBitCount;
+ DWORD dwBumpBitCount;
+ } DUMMYUNIONNAME1;
+ union {
+ DWORD dwRBitMask; /* 10: mask for red bit*/
+ DWORD dwYBitMask; /* 10: mask for Y bits*/
+ DWORD dwStencilBitDepth;
+ DWORD dwLuminanceBitMask;
+ DWORD dwBumpDuBitMask;
+ } DUMMYUNIONNAME2;
+ union {
+ DWORD dwGBitMask; /* 14: mask for green bits*/
+ DWORD dwUBitMask; /* 14: mask for U bits*/
+ DWORD dwZBitMask;
+ DWORD dwBumpDvBitMask;
+ } DUMMYUNIONNAME3;
+ union {
+ DWORD dwBBitMask; /* 18: mask for blue bits*/
+ DWORD dwVBitMask; /* 18: mask for V bits*/
+ DWORD dwStencilBitMask;
+ DWORD dwBumpLuminanceBitMask;
+ } DUMMYUNIONNAME4;
+ union {
+ DWORD dwRGBAlphaBitMask; /* 1C: mask for alpha channel */
+ DWORD dwYUVAlphaBitMask; /* 1C: mask for alpha channel */
+ DWORD dwLuminanceAlphaBitMask;
+ DWORD dwRGBZBitMask; /* 1C: mask for Z channel */
+ DWORD dwYUVZBitMask; /* 1C: mask for Z channel */
+ } DUMMYUNIONNAME5;
+ /* 20: next structure */
+} DDPIXELFORMAT,*LPDDPIXELFORMAT;
+
+#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
+ ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
+ ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
+
+/* DDCAPS.dwFXCaps */
+#define DDFXCAPS_BLTALPHA 0x00000001
+#define DDFXCAPS_OVERLAYALPHA 0x00000004
+#define DDFXCAPS_BLTARITHSTRETCHYN 0x00000010
+#define DDFXCAPS_BLTARITHSTRETCHY 0x00000020
+#define DDFXCAPS_BLTMIRRORLEFTRIGHT 0x00000040
+#define DDFXCAPS_BLTMIRRORUPDOWN 0x00000080
+#define DDFXCAPS_BLTROTATION 0x00000100
+#define DDFXCAPS_BLTROTATION90 0x00000200
+#define DDFXCAPS_BLTSHRINKX 0x00000400
+#define DDFXCAPS_BLTSHRINKXN 0x00000800
+#define DDFXCAPS_BLTSHRINKY 0x00001000
+#define DDFXCAPS_BLTSHRINKYN 0x00002000
+#define DDFXCAPS_BLTSTRETCHX 0x00004000
+#define DDFXCAPS_BLTSTRETCHXN 0x00008000
+#define DDFXCAPS_BLTSTRETCHY 0x00010000
+#define DDFXCAPS_BLTSTRETCHYN 0x00020000
+#define DDFXCAPS_OVERLAYARITHSTRETCHY 0x00040000
+#define DDFXCAPS_OVERLAYARITHSTRETCHYN 0x00000008
+#define DDFXCAPS_OVERLAYSHRINKX 0x00080000
+#define DDFXCAPS_OVERLAYSHRINKXN 0x00100000
+#define DDFXCAPS_OVERLAYSHRINKY 0x00200000
+#define DDFXCAPS_OVERLAYSHRINKYN 0x00400000
+#define DDFXCAPS_OVERLAYSTRETCHX 0x00800000
+#define DDFXCAPS_OVERLAYSTRETCHXN 0x01000000
+#define DDFXCAPS_OVERLAYSTRETCHY 0x02000000
+#define DDFXCAPS_OVERLAYSTRETCHYN 0x04000000
+#define DDFXCAPS_OVERLAYMIRRORLEFTRIGHT 0x08000000
+#define DDFXCAPS_OVERLAYMIRRORUPDOWN 0x10000000
+
+#define DDFXCAPS_OVERLAYFILTER DDFXCAPS_OVERLAYARITHSTRETCHY
+
+/* DDCAPS.dwFXAlphaCaps */
+#define DDFXALPHACAPS_BLTALPHAEDGEBLEND 0x00000001
+#define DDFXALPHACAPS_BLTALPHAPIXELS 0x00000002
+#define DDFXALPHACAPS_BLTALPHAPIXELSNEG 0x00000004
+#define DDFXALPHACAPS_BLTALPHASURFACES 0x00000008
+#define DDFXALPHACAPS_BLTALPHASURFACESNEG 0x00000010
+#define DDFXALPHACAPS_OVERLAYALPHAEDGEBLEND 0x00000020
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELS 0x00000040
+#define DDFXALPHACAPS_OVERLAYALPHAPIXELSNEG 0x00000080
+#define DDFXALPHACAPS_OVERLAYALPHASURFACES 0x00000100
+#define DDFXALPHACAPS_OVERLAYALPHASURFACESNEG 0x00000200
+
+/* DDCAPS.dwPalCaps */
+#define DDPCAPS_4BIT 0x00000001
+#define DDPCAPS_8BITENTRIES 0x00000002
+#define DDPCAPS_8BIT 0x00000004
+#define DDPCAPS_INITIALIZE 0x00000008
+#define DDPCAPS_PRIMARYSURFACE 0x00000010
+#define DDPCAPS_PRIMARYSURFACELEFT 0x00000020
+#define DDPCAPS_ALLOW256 0x00000040
+#define DDPCAPS_VSYNC 0x00000080
+#define DDPCAPS_1BIT 0x00000100
+#define DDPCAPS_2BIT 0x00000200
+#define DDPCAPS_ALPHA 0x00000400
+
+/* DDCAPS.dwSVCaps */
+/* the first 4 of these are now obsolete */
+#if DIRECTDRAW_VERSION >= 0x700 /* FIXME: I'm not sure when this switch occurred */
+#define DDSVCAPS_RESERVED1 0x00000001
+#define DDSVCAPS_RESERVED2 0x00000002
+#define DDSVCAPS_RESERVED3 0x00000004
+#define DDSVCAPS_RESERVED4 0x00000008
+#else
+#define DDSVCAPS_ENIGMA 0x00000001
+#define DDSVCAPS_FLICKER 0x00000002
+#define DDSVCAPS_REDBLUE 0x00000004
+#define DDSVCAPS_SPLIT 0x00000008
+#endif
+#define DDSVCAPS_STEREOSEQUENTIAL 0x00000010
+
+/* BitDepths */
+#define DDBD_1 0x00004000
+#define DDBD_2 0x00002000
+#define DDBD_4 0x00001000
+#define DDBD_8 0x00000800
+#define DDBD_16 0x00000400
+#define DDBD_24 0x00000200
+#define DDBD_32 0x00000100
+
+/* DDOVERLAYFX.dwDDFX */
+#define DDOVERFX_ARITHSTRETCHY 0x00000001
+#define DDOVERFX_MIRRORLEFTRIGHT 0x00000002
+#define DDOVERFX_MIRRORUPDOWN 0x00000004
+
+/* UpdateOverlay flags */
+#define DDOVER_ALPHADEST 0x00000001
+#define DDOVER_ALPHADESTCONSTOVERRIDE 0x00000002
+#define DDOVER_ALPHADESTNEG 0x00000004
+#define DDOVER_ALPHADESTSURFACEOVERRIDE 0x00000008
+#define DDOVER_ALPHAEDGEBLEND 0x00000010
+#define DDOVER_ALPHASRC 0x00000020
+#define DDOVER_ALPHASRCCONSTOVERRIDE 0x00000040
+#define DDOVER_ALPHASRCNEG 0x00000080
+#define DDOVER_ALPHASRCSURFACEOVERRIDE 0x00000100
+#define DDOVER_HIDE 0x00000200
+#define DDOVER_KEYDEST 0x00000400
+#define DDOVER_KEYDESTOVERRIDE 0x00000800
+#define DDOVER_KEYSRC 0x00001000
+#define DDOVER_KEYSRCOVERRIDE 0x00002000
+#define DDOVER_SHOW 0x00004000
+#define DDOVER_ADDDIRTYRECT 0x00008000
+#define DDOVER_REFRESHDIRTYRECTS 0x00010000
+#define DDOVER_REFRESHALL 0x00020000
+#define DDOVER_DDFX 0x00080000
+#define DDOVER_AUTOFLIP 0x00100000
+#define DDOVER_BOB 0x00200000
+#define DDOVER_OVERRIDEBOBWEAVE 0x00400000
+#define DDOVER_INTERLEAVED 0x00800000
+
+/* DDPIXELFORMAT.dwFlags */
+#define DDPF_ALPHAPIXELS 0x00000001
+#define DDPF_ALPHA 0x00000002
+#define DDPF_FOURCC 0x00000004
+#define DDPF_PALETTEINDEXED4 0x00000008
+#define DDPF_PALETTEINDEXEDTO8 0x00000010
+#define DDPF_PALETTEINDEXED8 0x00000020
+#define DDPF_RGB 0x00000040
+#define DDPF_COMPRESSED 0x00000080
+#define DDPF_RGBTOYUV 0x00000100
+#define DDPF_YUV 0x00000200
+#define DDPF_ZBUFFER 0x00000400
+#define DDPF_PALETTEINDEXED1 0x00000800
+#define DDPF_PALETTEINDEXED2 0x00001000
+#define DDPF_ZPIXELS 0x00002000
+#define DDPF_STENCILBUFFER 0x00004000
+#define DDPF_ALPHAPREMULT 0x00008000
+#define DDPF_LUMINANCE 0x00020000
+#define DDPF_BUMPLUMINANCE 0x00040000
+#define DDPF_BUMPDUDV 0x00080000
+
+/* SetCooperativeLevel dwFlags */
+#define DDSCL_FULLSCREEN 0x00000001
+#define DDSCL_ALLOWREBOOT 0x00000002
+#define DDSCL_NOWINDOWCHANGES 0x00000004
+#define DDSCL_NORMAL 0x00000008
+#define DDSCL_EXCLUSIVE 0x00000010
+#define DDSCL_ALLOWMODEX 0x00000040
+#define DDSCL_SETFOCUSWINDOW 0x00000080
+#define DDSCL_SETDEVICEWINDOW 0x00000100
+#define DDSCL_CREATEDEVICEWINDOW 0x00000200
+#define DDSCL_MULTITHREADED 0x00000400
+#define DDSCL_FPUSETUP 0x00000800
+#define DDSCL_FPUPRESERVE 0x00001000
+
+
+/* DDSURFACEDESC.dwFlags */
+#define DDSD_CAPS 0x00000001
+#define DDSD_HEIGHT 0x00000002
+#define DDSD_WIDTH 0x00000004
+#define DDSD_PITCH 0x00000008
+#define DDSD_BACKBUFFERCOUNT 0x00000020
+#define DDSD_ZBUFFERBITDEPTH 0x00000040
+#define DDSD_ALPHABITDEPTH 0x00000080
+#define DDSD_LPSURFACE 0x00000800
+#define DDSD_PIXELFORMAT 0x00001000
+#define DDSD_CKDESTOVERLAY 0x00002000
+#define DDSD_CKDESTBLT 0x00004000
+#define DDSD_CKSRCOVERLAY 0x00008000
+#define DDSD_CKSRCBLT 0x00010000
+#define DDSD_MIPMAPCOUNT 0x00020000
+#define DDSD_REFRESHRATE 0x00040000
+#define DDSD_LINEARSIZE 0x00080000
+#define DDSD_TEXTURESTAGE 0x00100000
+#define DDSD_FVF 0x00200000
+#define DDSD_SRCVBHANDLE 0x00400000
+#define DDSD_DEPTH 0x00800000
+#define DDSD_ALL 0x00fff9ee
+
+/* EnumSurfaces flags */
+#define DDENUMSURFACES_ALL 0x00000001
+#define DDENUMSURFACES_MATCH 0x00000002
+#define DDENUMSURFACES_NOMATCH 0x00000004
+#define DDENUMSURFACES_CANBECREATED 0x00000008
+#define DDENUMSURFACES_DOESEXIST 0x00000010
+
+/* SetDisplayMode flags */
+#define DDSDM_STANDARDVGAMODE 0x00000001
+
+/* EnumDisplayModes flags */
+#define DDEDM_REFRESHRATES 0x00000001
+#define DDEDM_STANDARDVGAMODES 0x00000002
+
+/* WaitForVerticalDisplay flags */
+
+#define DDWAITVB_BLOCKBEGIN 0x00000001
+#define DDWAITVB_BLOCKBEGINEVENT 0x00000002
+#define DDWAITVB_BLOCKEND 0x00000004
+
+typedef struct _DDSURFACEDESC
+{
+ DWORD dwSize; /* 0: size of the DDSURFACEDESC structure*/
+ DWORD dwFlags; /* 4: determines what fields are valid*/
+ DWORD dwHeight; /* 8: height of surface to be created*/
+ DWORD dwWidth; /* C: width of input surface*/
+ union {
+ LONG lPitch; /* 10: distance to start of next line (return value only)*/
+ DWORD dwLinearSize;
+ } DUMMYUNIONNAME1;
+ DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
+ union {
+ DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
+ DWORD dwZBufferBitDepth;/*18: depth of Z buffer requested*/
+ DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
+ } DUMMYUNIONNAME2;
+ DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
+ DWORD dwReserved; /* 20:reserved*/
+ void *lpSurface; /* 24:pointer to the associated surface memory*/
+ DDCOLORKEY ddckCKDestOverlay;/* 28: CK for dest overlay use*/
+ DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
+ DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
+ DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
+ DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
+ DDSCAPS ddsCaps; /* 68: direct draw surface caps */
+} DDSURFACEDESC,*LPDDSURFACEDESC;
+
+typedef struct _DDSURFACEDESC2
+{
+ DWORD dwSize; /* 0: size of the DDSURFACEDESC2 structure*/
+ DWORD dwFlags; /* 4: determines what fields are valid*/
+ DWORD dwHeight; /* 8: height of surface to be created*/
+ DWORD dwWidth; /* C: width of input surface*/
+ union {
+ LONG lPitch; /*10: distance to start of next line (return value only)*/
+ DWORD dwLinearSize; /*10: formless late-allocated optimized surface size */
+ } DUMMYUNIONNAME1;
+ union {
+ DWORD dwBackBufferCount;/* 14: number of back buffers requested*/
+ DWORD dwDepth;
+ } DUMMYUNIONNAME5;
+ union {
+ DWORD dwMipMapCount;/* 18:number of mip-map levels requested*/
+ DWORD dwRefreshRate;/* 18:refresh rate (used when display mode is described)*/
+ DWORD dwSrcVBHandle;/* 18:source used in VB::Optimize */
+ } DUMMYUNIONNAME2;
+ DWORD dwAlphaBitDepth;/* 1C:depth of alpha buffer requested*/
+ DWORD dwReserved; /* 20:reserved*/
+ void *lpSurface; /* 24:pointer to the associated surface memory*/
+ union {
+ DDCOLORKEY ddckCKDestOverlay; /* 28: CK for dest overlay use*/
+ DWORD dwEmptyFaceColor; /* 28: color for empty cubemap faces */
+ } DUMMYUNIONNAME3;
+ DDCOLORKEY ddckCKDestBlt; /* 30: CK for destination blt use*/
+ DDCOLORKEY ddckCKSrcOverlay;/* 38: CK for source overlay use*/
+ DDCOLORKEY ddckCKSrcBlt; /* 40: CK for source blt use*/
+
+ union {
+ DDPIXELFORMAT ddpfPixelFormat;/* 48: pixel format description of the surface*/
+ DWORD dwFVF; /* 48: vertex format description of vertex buffers */
+ } DUMMYUNIONNAME4;
+ DDSCAPS2 ddsCaps; /* 68: DDraw surface caps */
+ DWORD dwTextureStage; /* 78: stage in multitexture cascade */
+} DDSURFACEDESC2,*LPDDSURFACEDESC2;
+
+/* DDCOLORCONTROL.dwFlags */
+#define DDCOLOR_BRIGHTNESS 0x00000001
+#define DDCOLOR_CONTRAST 0x00000002
+#define DDCOLOR_HUE 0x00000004
+#define DDCOLOR_SATURATION 0x00000008
+#define DDCOLOR_SHARPNESS 0x00000010
+#define DDCOLOR_GAMMA 0x00000020
+#define DDCOLOR_COLORENABLE 0x00000040
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwFlags;
+ LONG lBrightness;
+ LONG lContrast;
+ LONG lHue;
+ LONG lSaturation;
+ LONG lSharpness;
+ LONG lGamma;
+ LONG lColorEnable;
+ DWORD dwReserved1;
+} DDCOLORCONTROL,*LPDDCOLORCONTROL;
+
+typedef struct {
+ WORD red[256];
+ WORD green[256];
+ WORD blue[256];
+} DDGAMMARAMP,*LPDDGAMMARAMP;
+
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKA)(GUID *guid, char *driver_description, char *driver_name, void *ctx);
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKW)(GUID *guid, WCHAR *driver_description, WCHAR *driver_name, void *ctx);
+DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACK)
+
+typedef HRESULT (CALLBACK *LPDDENUMMODESCALLBACK)(DDSURFACEDESC *desc, void *ctx);
+typedef HRESULT (CALLBACK *LPDDENUMMODESCALLBACK2)(DDSURFACEDESC2 *desc, void *ctx);
+typedef HRESULT (CALLBACK *LPDDENUMSURFACESCALLBACK)(struct IDirectDrawSurface *surface,
+ DDSURFACEDESC *surface_desc, void *ctx);
+typedef HRESULT (CALLBACK *LPDDENUMSURFACESCALLBACK2)(struct IDirectDrawSurface4 *surface,
+ DDSURFACEDESC2 *surface_desc, void *ctx);
+typedef HRESULT (CALLBACK *LPDDENUMSURFACESCALLBACK7)(struct IDirectDrawSurface7 *surface,
+ DDSURFACEDESC2 *surface_desc, void *ctx);
+
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKEXA)(GUID *guid, char *driver_description,
+ char *driver_name, void *ctx, HMONITOR monitor);
+typedef BOOL (CALLBACK *LPDDENUMCALLBACKEXW)(GUID *guid, WCHAR *driver_description,
+ WCHAR *driver_name, void *ctx, HMONITOR monitor);
+DECL_WINELIB_TYPE_AW(LPDDENUMCALLBACKEX)
+
+HRESULT WINAPI DirectDrawEnumerateA(LPDDENUMCALLBACKA cb, void *ctx);
+HRESULT WINAPI DirectDrawEnumerateW(LPDDENUMCALLBACKW cb, void *ctx);
+#define DirectDrawEnumerate WINELIB_NAME_AW(DirectDrawEnumerate)
+
+HRESULT WINAPI DirectDrawEnumerateExA(LPDDENUMCALLBACKEXA cb, void *ctx, DWORD flags);
+HRESULT WINAPI DirectDrawEnumerateExW(LPDDENUMCALLBACKEXW cb, void *ctx, DWORD flags);
+#define DirectDrawEnumerateEx WINELIB_NAME_AW(DirectDrawEnumerateEx)
+
+typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)(LPDDENUMCALLBACKEXA cb, void *ctx, DWORD flags);
+typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXW)(LPDDENUMCALLBACKEXW cb, void *ctx, DWORD flags);
+DECL_WINELIB_TYPE_AW(LPDIRECTDRAWENUMERATEEX)
+
+/* flags for DirectDrawEnumerateEx */
+#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001
+#define DDENUM_DETACHEDSECONDARYDEVICES 0x00000002
+#define DDENUM_NONDISPLAYDEVICES 0x00000004
+
+/* flags for DirectDrawCreate or IDirectDraw::Initialize */
+#define DDCREATE_HARDWAREONLY __MSABI_LONG(1)
+#define DDCREATE_EMULATIONONLY __MSABI_LONG(2)
+
+typedef struct _DDBLTFX
+{
+ DWORD dwSize; /* size of structure */
+ DWORD dwDDFX; /* FX operations */
+ DWORD dwROP; /* Win32 raster operations */
+ DWORD dwDDROP; /* Raster operations new for DirectDraw */
+ DWORD dwRotationAngle; /* Rotation angle for blt */
+ DWORD dwZBufferOpCode; /* ZBuffer compares */
+ DWORD dwZBufferLow; /* Low limit of Z buffer */
+ DWORD dwZBufferHigh; /* High limit of Z buffer */
+ DWORD dwZBufferBaseDest; /* Destination base value */
+ DWORD dwZDestConstBitDepth; /* Bit depth used to specify Z constant for destination */
+ union
+ {
+ DWORD dwZDestConst; /* Constant to use as Z buffer for dest */
+ struct IDirectDrawSurface *lpDDSZBufferDest; /* Surface to use as Z buffer for dest */
+ } DUMMYUNIONNAME1;
+ DWORD dwZSrcConstBitDepth; /* Bit depth used to specify Z constant for source */
+ union
+ {
+ DWORD dwZSrcConst; /* Constant to use as Z buffer for src */
+ struct IDirectDrawSurface *lpDDSZBufferSrc; /* Surface to use as Z buffer for src */
+ } DUMMYUNIONNAME2;
+ DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
+ DWORD dwAlphaEdgeBlend; /* Alpha for edge blending */
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
+ union
+ {
+ DWORD dwAlphaDestConst; /* Constant to use as Alpha Channel */
+ struct IDirectDrawSurface *lpDDSAlphaDest; /* Surface to use as Alpha Channel */
+ } DUMMYUNIONNAME3;
+ DWORD dwAlphaSrcConstBitDepth; /* Bit depth used to specify alpha constant for source */
+ union
+ {
+ DWORD dwAlphaSrcConst; /* Constant to use as Alpha Channel */
+ struct IDirectDrawSurface *lpDDSAlphaSrc; /* Surface to use as Alpha Channel */
+ } DUMMYUNIONNAME4;
+ union
+ {
+ DWORD dwFillColor; /* color in RGB or Palettized */
+ DWORD dwFillDepth; /* depth value for z-buffer */
+ DWORD dwFillPixel; /* pixel val for RGBA or RGBZ */
+ struct IDirectDrawSurface *lpDDSPattern; /* Surface to use as pattern */
+ } DUMMYUNIONNAME5;
+ DDCOLORKEY ddckDestColorkey; /* DestColorkey override */
+ DDCOLORKEY ddckSrcColorkey; /* SrcColorkey override */
+} DDBLTFX,*LPDDBLTFX;
+
+/* dwDDFX */
+/* arithmetic stretching along y axis */
+#define DDBLTFX_ARITHSTRETCHY 0x00000001
+/* mirror on y axis */
+#define DDBLTFX_MIRRORLEFTRIGHT 0x00000002
+/* mirror on x axis */
+#define DDBLTFX_MIRRORUPDOWN 0x00000004
+/* do not tear */
+#define DDBLTFX_NOTEARING 0x00000008
+/* 180 degrees clockwise rotation */
+#define DDBLTFX_ROTATE180 0x00000010
+/* 270 degrees clockwise rotation */
+#define DDBLTFX_ROTATE270 0x00000020
+/* 90 degrees clockwise rotation */
+#define DDBLTFX_ROTATE90 0x00000040
+/* dwZBufferLow and dwZBufferHigh specify limits to the copied Z values */
+#define DDBLTFX_ZBUFFERRANGE 0x00000080
+/* add dwZBufferBaseDest to every source z value before compare */
+#define DDBLTFX_ZBUFFERBASEDEST 0x00000100
+
+typedef struct _DDOVERLAYFX
+{
+ DWORD dwSize; /* size of structure */
+ DWORD dwAlphaEdgeBlendBitDepth; /* Bit depth used to specify constant for alpha edge blend */
+ DWORD dwAlphaEdgeBlend; /* Constant to use as alpha for edge blend */
+ DWORD dwReserved;
+ DWORD dwAlphaDestConstBitDepth; /* Bit depth used to specify alpha constant for destination */
+ union
+ {
+ DWORD dwAlphaDestConst; /* Constant to use as alpha channel for dest */
+ struct IDirectDrawSurface *lpDDSAlphaDest; /* Surface to use as alpha channel for dest */
+ } DUMMYUNIONNAME1;
+ DWORD dwAlphaSrcConstBitDepth; /* Bit depth used to specify alpha constant for source */
+ union
+ {
+ DWORD dwAlphaSrcConst; /* Constant to use as alpha channel for src */
+ struct IDirectDrawSurface *lpDDSAlphaSrc; /* Surface to use as alpha channel for src */
+ } DUMMYUNIONNAME2;
+ DDCOLORKEY dckDestColorkey; /* DestColorkey override */
+ DDCOLORKEY dckSrcColorkey; /* DestColorkey override */
+ DWORD dwDDFX; /* Overlay FX */
+ DWORD dwFlags; /* flags */
+} DDOVERLAYFX,*LPDDOVERLAYFX;
+
+typedef struct _DDBLTBATCH
+{
+ RECT *lprDest;
+ struct IDirectDrawSurface *lpDDSSrc;
+ RECT *lprSrc;
+ DWORD dwFlags;
+ DDBLTFX *lpDDBltFx;
+} DDBLTBATCH,*LPDDBLTBATCH;
+
+#define MAX_DDDEVICEID_STRING 512
+
+#define DDGDI_GETHOSTIDENTIFIER 1
+
+typedef struct tagDDDEVICEIDENTIFIER {
+ char szDriver[MAX_DDDEVICEID_STRING];
+ char szDescription[MAX_DDDEVICEID_STRING];
+ LARGE_INTEGER liDriverVersion;
+ DWORD dwVendorId;
+ DWORD dwDeviceId;
+ DWORD dwSubSysId;
+ DWORD dwRevision;
+ GUID guidDeviceIdentifier;
+} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;
+
+typedef struct tagDDDEVICEIDENTIFIER2 {
+ char szDriver[MAX_DDDEVICEID_STRING]; /* user readable driver name */
+ char szDescription[MAX_DDDEVICEID_STRING]; /* user readable description */
+ LARGE_INTEGER liDriverVersion; /* driver version */
+ DWORD dwVendorId; /* vendor ID, zero if unknown */
+ DWORD dwDeviceId; /* chipset ID, zero if unknown */
+ DWORD dwSubSysId; /* board ID, zero if unknown */
+ DWORD dwRevision; /* chipset version, zero if unknown */
+ GUID guidDeviceIdentifier; /* unique ID for this driver/chipset combination */
+ DWORD dwWHQLLevel; /* Windows Hardware Quality Lab certification level */
+} DDDEVICEIDENTIFIER2, * LPDDDEVICEIDENTIFIER2;
+
+/*****************************************************************************
+ * IDirectDrawPalette interface
+ */
+#undef INTERFACE
+#define INTERFACE IDirectDrawPalette
+DECLARE_INTERFACE_(IDirectDrawPalette,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawPalette methods ***/
+ STDMETHOD(GetCaps)(THIS_ LPDWORD lpdwCaps) PURE;
+ STDMETHOD(GetEntries)(THIS_ DWORD dwFlags, DWORD dwBase, DWORD dwNumEntries, LPPALETTEENTRY lpEntries) PURE;
+ STDMETHOD(Initialize)(THIS_ struct IDirectDraw *ddraw, DWORD flags, PALETTEENTRY *color_table) PURE;
+ STDMETHOD(SetEntries)(THIS_ DWORD dwFlags, DWORD dwStartingEntry, DWORD dwCount, LPPALETTEENTRY lpEntries) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawPalette_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawPalette_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawPalette_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawPalette methods ***/
+#define IDirectDrawPalette_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawPalette_GetEntries(p,a,b,c,d) (p)->lpVtbl->GetEntries(p,a,b,c,d)
+#define IDirectDrawPalette_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
+#define IDirectDrawPalette_SetEntries(p,a,b,c,d) (p)->lpVtbl->SetEntries(p,a,b,c,d)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawPalette_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawPalette_AddRef(p) (p)->AddRef()
+#define IDirectDrawPalette_Release(p) (p)->Release()
+/*** IDirectDrawPalette methods ***/
+#define IDirectDrawPalette_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectDrawPalette_GetEntries(p,a,b,c,d) (p)->GetEntries(a,b,c,d)
+#define IDirectDrawPalette_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
+#define IDirectDrawPalette_SetEntries(p,a,b,c,d) (p)->SetEntries(a,b,c,d)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawClipper interface
+ */
+#define INTERFACE IDirectDrawClipper
+DECLARE_INTERFACE_(IDirectDrawClipper,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawClipper methods ***/
+ STDMETHOD(GetClipList)(THIS_ LPRECT lpRect, LPRGNDATA lpClipList, LPDWORD lpdwSize) PURE;
+ STDMETHOD(GetHWnd)(THIS_ HWND *lphWnd) PURE;
+ STDMETHOD(Initialize)(THIS_ struct IDirectDraw *ddraw, DWORD flags) PURE;
+ STDMETHOD(IsClipListChanged)(THIS_ BOOL *lpbChanged) PURE;
+ STDMETHOD(SetClipList)(THIS_ LPRGNDATA lpClipList, DWORD dwFlags) PURE;
+ STDMETHOD(SetHWnd)(THIS_ DWORD dwFlags, HWND hWnd) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawClipper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawClipper_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawClipper_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawClipper methods ***/
+#define IDirectDrawClipper_GetClipList(p,a,b,c) (p)->lpVtbl->GetClipList(p,a,b,c)
+#define IDirectDrawClipper_GetHWnd(p,a) (p)->lpVtbl->GetHWnd(p,a)
+#define IDirectDrawClipper_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawClipper_IsClipListChanged(p,a) (p)->lpVtbl->IsClipListChanged(p,a)
+#define IDirectDrawClipper_SetClipList(p,a,b) (p)->lpVtbl->SetClipList(p,a,b)
+#define IDirectDrawClipper_SetHWnd(p,a,b) (p)->lpVtbl->SetHWnd(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawClipper_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawClipper_AddRef(p) (p)->AddRef()
+#define IDirectDrawClipper_Release(p) (p)->Release()
+/*** IDirectDrawClipper methods ***/
+#define IDirectDrawClipper_GetClipList(p,a,b,c) (p)->GetClipList(a,b,c)
+#define IDirectDrawClipper_GetHWnd(p,a) (p)->GetHWnd(a)
+#define IDirectDrawClipper_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawClipper_IsClipListChanged(p,a) (p)->IsClipListChanged(a)
+#define IDirectDrawClipper_SetClipList(p,a,b) (p)->SetClipList(a,b)
+#define IDirectDrawClipper_SetHWnd(p,a,b) (p)->SetHWnd(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw interface
+ */
+#define INTERFACE IDirectDraw
+DECLARE_INTERFACE_(IDirectDraw,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE; /* 0x00 */
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE; /* 0x04 */
+ STDMETHOD_(ULONG,Release)(THIS) PURE; /* 0x08 */
+ /*** IDirectDraw methods ***/
+ STDMETHOD(Compact)(THIS) PURE; /* 0x0c */
+ STDMETHOD(CreateClipper)(THIS_ DWORD flags, IDirectDrawClipper **clipper, IUnknown *outer) PURE; /* 0x10 */
+ STDMETHOD(CreatePalette)(THIS_ DWORD flags, PALETTEENTRY *color_table,
+ IDirectDrawPalette **palette, IUnknown *outer) PURE; /* 0x14 */
+ STDMETHOD(CreateSurface)(THIS_ DDSURFACEDESC *surface_desc,
+ struct IDirectDrawSurface **surface, IUnknown *outer) PURE; /* 0x18 */
+ STDMETHOD(DuplicateSurface)(THIS_ struct IDirectDrawSurface *src_surface,
+ struct IDirectDrawSurface **dst_surface) PURE; /* 0x1c */
+ STDMETHOD(EnumDisplayModes)(THIS_ DWORD flags, DDSURFACEDESC *surface_desc,
+ void *ctx, LPDDENUMMODESCALLBACK cb) PURE; /* 0x20 */
+ STDMETHOD(EnumSurfaces)(THIS_ DWORD flags, DDSURFACEDESC *surface_desc,
+ void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE; /* 0x24 */
+ STDMETHOD(FlipToGDISurface)(THIS) PURE; /* 0x28 */
+ STDMETHOD(GetCaps)(THIS_ DDCAPS *driver_caps, DDCAPS *hel_caps) PURE; /* 0x2c */
+ STDMETHOD(GetDisplayMode)(THIS_ DDSURFACEDESC *surface_desc) PURE; /* 0x30 */
+ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE; /* 0x34 */
+ STDMETHOD(GetGDISurface)(THIS_ struct IDirectDrawSurface **surface) PURE; /* 0x38 */
+ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE; /* 0x3c */
+ STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE; /* 0x40 */
+ STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE; /* 0x44 */
+ STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE; /* 0x48 */
+ STDMETHOD(RestoreDisplayMode)(THIS) PURE; /* 0x4c */
+ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE; /* 0x50 */
+ STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP) PURE; /* 0x54 */
+ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE; /* 0x58 */
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw_CreateClipper(p,a,b,c) (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw_CreatePalette(p,a,b,c,d) (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw_CreateSurface(p,a,b,c) (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw_DuplicateSurface(p,a,b) (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw_EnumSurfaces(p,a,b,c,d) (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw_GetGDISurface(p,a) (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw_GetMonitorFrequency(p,a) (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw_GetScanLine(p,a) (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw_SetDisplayMode(p,a,b,c) (p)->lpVtbl->SetDisplayMode(p,a,b,c)
+#define IDirectDraw_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw_AddRef(p) (p)->AddRef()
+#define IDirectDraw_Release(p) (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw_Compact(p) (p)->Compact()
+#define IDirectDraw_CreateClipper(p,a,b,c) (p)->CreateClipper(a,b,c)
+#define IDirectDraw_CreatePalette(p,a,b,c,d) (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw_CreateSurface(p,a,b,c) (p)->CreateSurface(a,b,c)
+#define IDirectDraw_DuplicateSurface(p,a,b) (p)->DuplicateSurface(a,b)
+#define IDirectDraw_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw_EnumSurfaces(p,a,b,c,d) (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectDraw_GetDisplayMode(p,a) (p)->GetDisplayMode(a)
+#define IDirectDraw_GetFourCCCodes(p,a,b) (p)->GetFourCCCodes(a,b)
+#define IDirectDraw_GetGDISurface(p,a) (p)->GetGDISurface(a)
+#define IDirectDraw_GetMonitorFrequency(p,a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw_GetScanLine(p,a) (p)->GetScanLine(a)
+#define IDirectDraw_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw_Initialize(p,a) (p)->Initialize(a)
+#define IDirectDraw_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw_SetDisplayMode(p,a,b,c) (p)->SetDisplayMode(a,b,c)
+#define IDirectDraw_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+#endif
+
+
+/* flags for Lock() */
+#define DDLOCK_SURFACEMEMORYPTR __MSABI_LONG(0x00000000)
+#define DDLOCK_WAIT __MSABI_LONG(0x00000001)
+#define DDLOCK_EVENT __MSABI_LONG(0x00000002)
+#define DDLOCK_READONLY __MSABI_LONG(0x00000010)
+#define DDLOCK_WRITEONLY __MSABI_LONG(0x00000020)
+#define DDLOCK_NOSYSLOCK __MSABI_LONG(0x00000800)
+#define DDLOCK_NOOVERWRITE __MSABI_LONG(0x00001000)
+#define DDLOCK_DISCARDCONTENTS __MSABI_LONG(0x00002000)
+#define DDLOCK_OKTOSWAP __MSABI_LONG(0x00002000)
+#define DDLOCK_DONOTWAIT __MSABI_LONG(0x00004000)
+#define DDLOCK_HASVOLUMETEXTUREBOXRECT __MSABI_LONG(0x00008000)
+#define DDLOCK_NODIRTYUPDATE __MSABI_LONG(0x00010000)
+
+
+/*****************************************************************************
+ * IDirectDraw2 interface
+ */
+/* Note: IDirectDraw2 cannot derive from IDirectDraw because the number of
+ * arguments of SetDisplayMode has changed !
+ */
+#define INTERFACE IDirectDraw2
+DECLARE_INTERFACE_(IDirectDraw2,IUnknown)
+{
+ /*** IUnknown methods ***/
+/*00*/ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDraw2 methods ***/
+/*0c*/ STDMETHOD(Compact)(THIS) PURE;
+/*10*/ STDMETHOD(CreateClipper)(THIS_ DWORD flags, IDirectDrawClipper **clipper, IUnknown *outer) PURE;
+/*14*/ STDMETHOD(CreatePalette)(THIS_ DWORD flags, PALETTEENTRY *color_table,
+ IDirectDrawPalette **palette, IUnknown *outer) PURE;
+/*18*/ STDMETHOD(CreateSurface)(THIS_ DDSURFACEDESC *surface_desc,
+ struct IDirectDrawSurface **surface, IUnknown *outer) PURE;
+/*1c*/ STDMETHOD(DuplicateSurface)(THIS_ struct IDirectDrawSurface *src_surface,
+ struct IDirectDrawSurface **dst_surface) PURE;
+/*20*/ STDMETHOD(EnumDisplayModes)(THIS_ DWORD flags, DDSURFACEDESC *surface_desc,
+ void *ctx, LPDDENUMMODESCALLBACK cb) PURE;
+/*24*/ STDMETHOD(EnumSurfaces)(THIS_ DWORD flags, DDSURFACEDESC *surface_desc,
+ void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+/*28*/ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/ STDMETHOD(GetCaps)(THIS_ DDCAPS *driver_caps, DDCAPS *hel_caps) PURE;
+/*30*/ STDMETHOD(GetDisplayMode)(THIS_ DDSURFACEDESC *surface_desc) PURE;
+/*34*/ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/ STDMETHOD(GetGDISurface)(THIS_ struct IDirectDrawSurface **surface) PURE;
+/*3c*/ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/ STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/ STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/ STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/ STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+ /* added in v2 */
+/*5c*/ STDMETHOD(GetAvailableVidMem)(THIS_ DDSCAPS *caps, DWORD *total, DWORD *free) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw2_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw2_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw2_CreateClipper(p,a,b,c) (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw2_CreatePalette(p,a,b,c,d) (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw2_CreateSurface(p,a,b,c) (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw2_DuplicateSurface(p,a,b) (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw2_EnumSurfaces(p,a,b,c,d) (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw2_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw2_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw2_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw2_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw2_GetGDISurface(p,a) (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw2_GetMonitorFrequency(p,a) (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw2_GetScanLine(p,a) (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw2_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw2_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw2_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw2_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw2_AddRef(p) (p)->AddRef()
+#define IDirectDraw2_Release(p) (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw2_Compact(p) (p)->Compact()
+#define IDirectDraw2_CreateClipper(p,a,b,c) (p)->CreateClipper(a,b,c)
+#define IDirectDraw2_CreatePalette(p,a,b,c,d) (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw2_CreateSurface(p,a,b,c) (p)->CreateSurface(a,b,c)
+#define IDirectDraw2_DuplicateSurface(p,a,b) (p)->DuplicateSurface(a,b)
+#define IDirectDraw2_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw2_EnumSurfaces(p,a,b,c,d) (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw2_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw2_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectDraw2_GetDisplayMode(p,a) (p)->GetDisplayMode(a)
+#define IDirectDraw2_GetFourCCCodes(p,a,b) (p)->GetFourCCCodes(a,b)
+#define IDirectDraw2_GetGDISurface(p,a) (p)->GetGDISurface(a)
+#define IDirectDraw2_GetMonitorFrequency(p,a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw2_GetScanLine(p,a) (p)->GetScanLine(a)
+#define IDirectDraw2_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw2_Initialize(p,a) (p)->Initialize(a)
+#define IDirectDraw2_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw2_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw2_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw2_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw3 interface
+ */
+#define INTERFACE IDirectDraw3
+DECLARE_INTERFACE_(IDirectDraw3,IUnknown)
+{
+ /*** IUnknown methods ***/
+/*00*/ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDraw2 methods ***/
+/*0c*/ STDMETHOD(Compact)(THIS) PURE;
+/*10*/ STDMETHOD(CreateClipper)(THIS_ DWORD flags, IDirectDrawClipper **clipper, IUnknown *outer) PURE;
+/*14*/ STDMETHOD(CreatePalette)(THIS_ DWORD flags, PALETTEENTRY *color_table,
+ IDirectDrawPalette **lplpDDPalette, IUnknown *outer) PURE;
+/*18*/ STDMETHOD(CreateSurface)(THIS_ DDSURFACEDESC *surface_desc,
+ struct IDirectDrawSurface **surface, IUnknown *outer) PURE;
+/*1c*/ STDMETHOD(DuplicateSurface)(THIS_ struct IDirectDrawSurface *src_surface,
+ struct IDirectDrawSurface **dst_surface) PURE;
+/*20*/ STDMETHOD(EnumDisplayModes)(THIS_ DWORD flags, DDSURFACEDESC *surface_desc,
+ void *ctx, LPDDENUMMODESCALLBACK cb) PURE;
+/*24*/ STDMETHOD(EnumSurfaces)(THIS_ DWORD flags, DDSURFACEDESC *surface_desc,
+ void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+/*28*/ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/ STDMETHOD(GetCaps)(THIS_ DDCAPS *driver_caps, DDCAPS *hel_caps) PURE;
+/*30*/ STDMETHOD(GetDisplayMode)(THIS_ DDSURFACEDESC *surface_desc) PURE;
+/*34*/ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/ STDMETHOD(GetGDISurface)(THIS_ struct IDirectDrawSurface **surface) PURE;
+/*3c*/ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/ STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/ STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/ STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/ STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+ /* added in v2 */
+/*5c*/ STDMETHOD(GetAvailableVidMem)(THIS_ DDSCAPS *caps, DWORD *total, DWORD *free) PURE;
+ /* added in v3 */
+/*60*/ STDMETHOD(GetSurfaceFromDC)(THIS_ HDC dc, struct IDirectDrawSurface **surface) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw3_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw3_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw3_CreateClipper(p,a,b,c) (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw3_CreatePalette(p,a,b,c,d) (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw3_CreateSurface(p,a,b,c) (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw3_DuplicateSurface(p,a,b) (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw3_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw3_EnumSurfaces(p,a,b,c,d) (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw3_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw3_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw3_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw3_GetGDISurface(p,a) (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw3_GetMonitorFrequency(p,a) (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw3_GetScanLine(p,a) (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw3_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw3_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw3_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw3_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw3_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+/*** IDirectDraw3 methods ***/
+#define IDirectDraw3_GetSurfaceFromDC(p,a,b) (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw3_AddRef(p) (p)->AddRef()
+#define IDirectDraw3_Release(p) (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw3_Compact(p) (p)->Compact()
+#define IDirectDraw3_CreateClipper(p,a,b,c) (p)->CreateClipper(a,b,c)
+#define IDirectDraw3_CreatePalette(p,a,b,c,d) (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw3_CreateSurface(p,a,b,c) (p)->CreateSurface(a,b,c)
+#define IDirectDraw3_DuplicateSurface(p,a,b) (p)->DuplicateSurface(a,b)
+#define IDirectDraw3_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw3_EnumSurfaces(p,a,b,c,d) (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw3_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw3_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectDraw3_GetDisplayMode(p,a) (p)->GetDisplayMode(a)
+#define IDirectDraw3_GetFourCCCodes(p,a,b) (p)->GetFourCCCodes(a,b)
+#define IDirectDraw3_GetGDISurface(p,a) (p)->GetGDISurface(a)
+#define IDirectDraw3_GetMonitorFrequency(p,a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw3_GetScanLine(p,a) (p)->GetScanLine(a)
+#define IDirectDraw3_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw3_Initialize(p,a) (p)->Initialize(a)
+#define IDirectDraw3_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw3_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw3_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw3_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw3_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+/*** IDirectDraw3 methods ***/
+#define IDirectDraw3_GetSurfaceFromDC(p,a,b) (p)->GetSurfaceFromDC(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw4 interface
+ */
+#define INTERFACE IDirectDraw4
+DECLARE_INTERFACE_(IDirectDraw4,IUnknown)
+{
+ /*** IUnknown methods ***/
+/*00*/ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDraw4 methods ***/
+/*0c*/ STDMETHOD(Compact)(THIS) PURE;
+/*10*/ STDMETHOD(CreateClipper)(THIS_ DWORD flags, IDirectDrawClipper **clipper, IUnknown *outer) PURE;
+/*14*/ STDMETHOD(CreatePalette)(THIS_ DWORD flags, PALETTEENTRY *color_table,
+ IDirectDrawPalette **palette, IUnknown *outer) PURE;
+/*18*/ STDMETHOD(CreateSurface)(THIS_ DDSURFACEDESC2 *surface_desc,
+ struct IDirectDrawSurface4 **surface, IUnknown *outer) PURE;
+/*1c*/ STDMETHOD(DuplicateSurface)(THIS_ struct IDirectDrawSurface4 *src_surface,
+ struct IDirectDrawSurface4 **dst_surface) PURE;
+/*20*/ STDMETHOD(EnumDisplayModes)(THIS_ DWORD flags, DDSURFACEDESC2 *surface_desc,
+ void *ctx, LPDDENUMMODESCALLBACK2 cb) PURE;
+/*24*/ STDMETHOD(EnumSurfaces)(THIS_ DWORD flags, DDSURFACEDESC2 *surface_desc,
+ void *ctx, LPDDENUMSURFACESCALLBACK2 cb) PURE;
+/*28*/ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/ STDMETHOD(GetCaps)(THIS_ DDCAPS *driver_caps, DDCAPS *hel_caps) PURE;
+/*30*/ STDMETHOD(GetDisplayMode)(THIS_ DDSURFACEDESC2 *surface_desc) PURE;
+/*34*/ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/ STDMETHOD(GetGDISurface)(THIS_ struct IDirectDrawSurface4 **surface) PURE;
+/*3c*/ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/ STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/ STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/ STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/ STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+ /* added in v2 */
+/*5c*/ STDMETHOD(GetAvailableVidMem)(THIS_ DDSCAPS2 *caps, DWORD *total, DWORD *free) PURE;
+ /* added in v4 */
+/*60*/ STDMETHOD(GetSurfaceFromDC)(THIS_ HDC dc, struct IDirectDrawSurface4 **surface) PURE;
+/*64*/ STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+/*68*/ STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+/*6c*/ STDMETHOD(GetDeviceIdentifier)(THIS_ DDDEVICEIDENTIFIER *identifier, DWORD flags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw4_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw4_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw4_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw4_CreateClipper(p,a,b,c) (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw4_CreatePalette(p,a,b,c,d) (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw4_CreateSurface(p,a,b,c) (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw4_DuplicateSurface(p,a,b) (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw4_EnumSurfaces(p,a,b,c,d) (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw4_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw4_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw4_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw4_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw4_GetGDISurface(p,a) (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw4_GetMonitorFrequency(p,a) (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw4_GetScanLine(p,a) (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw4_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw4_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw4_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw4_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw4_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw4_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+/*** IDirectDraw4 methods ***/
+#define IDirectDraw4_GetSurfaceFromDC(p,a,b) (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
+#define IDirectDraw4_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw4_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw4_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw4_AddRef(p) (p)->AddRef()
+#define IDirectDraw4_Release(p) (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw4_Compact(p) (p)->Compact()
+#define IDirectDraw4_CreateClipper(p,a,b,c) (p)->CreateClipper(a,b,c)
+#define IDirectDraw4_CreatePalette(p,a,b,c,d) (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw4_CreateSurface(p,a,b,c) (p)->CreateSurface(a,b,c)
+#define IDirectDraw4_DuplicateSurface(p,a,b) (p)->DuplicateSurface(a,b)
+#define IDirectDraw4_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw4_EnumSurfaces(p,a,b,c,d) (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw4_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw4_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectDraw4_GetDisplayMode(p,a) (p)->GetDisplayMode(a)
+#define IDirectDraw4_GetFourCCCodes(p,a,b) (p)->GetFourCCCodes(a,b)
+#define IDirectDraw4_GetGDISurface(p,a) (p)->GetGDISurface(a)
+#define IDirectDraw4_GetMonitorFrequency(p,a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw4_GetScanLine(p,a) (p)->GetScanLine(a)
+#define IDirectDraw4_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw4_Initialize(p,a) (p)->Initialize(a)
+#define IDirectDraw4_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw4_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw4_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw4_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** IDirectDraw2 methods ***/
+#define IDirectDraw4_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+/*** IDirectDraw4 methods ***/
+#define IDirectDraw4_GetSurfaceFromDC(p,a,b) (p)->GetSurfaceFromDC(a,b)
+#define IDirectDraw4_RestoreAllSurfaces(pc) (p)->RestoreAllSurfaces()
+#define IDirectDraw4_TestCooperativeLevel(p) (p)->TestCooperativeLevel()
+#define IDirectDraw4_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDraw7 interface
+ */
+/* Note: IDirectDraw7 cannot derive from IDirectDraw4; it is even documented
+ * as not interchangeable with earlier DirectDraw interfaces.
+ */
+#define INTERFACE IDirectDraw7
+DECLARE_INTERFACE_(IDirectDraw7,IUnknown)
+{
+ /*** IUnknown methods ***/
+/*00*/ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDraw7 methods ***/
+/*0c*/ STDMETHOD(Compact)(THIS) PURE;
+/*10*/ STDMETHOD(CreateClipper)(THIS_ DWORD flags, IDirectDrawClipper **clipper, IUnknown *outer) PURE;
+/*14*/ STDMETHOD(CreatePalette)(THIS_ DWORD flags, PALETTEENTRY *color_table,
+ IDirectDrawPalette **palette, IUnknown *outer) PURE;
+/*18*/ STDMETHOD(CreateSurface)(THIS_ DDSURFACEDESC2 *surface_desc,
+ struct IDirectDrawSurface7 **surface, IUnknown *outer) PURE;
+/*1c*/ STDMETHOD(DuplicateSurface)(THIS_ struct IDirectDrawSurface7 *src_surface,
+ struct IDirectDrawSurface7 **dst_surface) PURE;
+/*20*/ STDMETHOD(EnumDisplayModes)(THIS_ DWORD flags, DDSURFACEDESC2 *surface_desc,
+ void *ctx, LPDDENUMMODESCALLBACK2 cb) PURE;
+/*24*/ STDMETHOD(EnumSurfaces)(THIS_ DWORD flags, DDSURFACEDESC2 *surface_desc,
+ void *ctx, LPDDENUMSURFACESCALLBACK7 cb) PURE;
+/*28*/ STDMETHOD(FlipToGDISurface)(THIS) PURE;
+/*2c*/ STDMETHOD(GetCaps)(THIS_ DDCAPS *driver_caps, DDCAPS *hel_caps) PURE;
+/*30*/ STDMETHOD(GetDisplayMode)(THIS_ DDSURFACEDESC2 *surface_desc) PURE;
+/*34*/ STDMETHOD(GetFourCCCodes)(THIS_ LPDWORD lpNumCodes, LPDWORD lpCodes) PURE;
+/*38*/ STDMETHOD(GetGDISurface)(THIS_ struct IDirectDrawSurface7 **surface) PURE;
+/*3c*/ STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD lpdwFrequency) PURE;
+/*40*/ STDMETHOD(GetScanLine)(THIS_ LPDWORD lpdwScanLine) PURE;
+/*44*/ STDMETHOD(GetVerticalBlankStatus)(THIS_ BOOL *lpbIsInVB) PURE;
+/*48*/ STDMETHOD(Initialize)(THIS_ GUID *lpGUID) PURE;
+/*4c*/ STDMETHOD(RestoreDisplayMode)(THIS) PURE;
+/*50*/ STDMETHOD(SetCooperativeLevel)(THIS_ HWND hWnd, DWORD dwFlags) PURE;
+/*54*/ STDMETHOD(SetDisplayMode)(THIS_ DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwRefreshRate, DWORD dwFlags) PURE;
+/*58*/ STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD dwFlags, HANDLE hEvent) PURE;
+ /* added in v2 */
+/*5c*/ STDMETHOD(GetAvailableVidMem)(THIS_ DDSCAPS2 *caps, DWORD *total, DWORD *free) PURE;
+ /* added in v4 */
+/*60*/ STDMETHOD(GetSurfaceFromDC)(THIS_ HDC dc, struct IDirectDrawSurface7 **surface) PURE;
+/*64*/ STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
+/*68*/ STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+/*6c*/ STDMETHOD(GetDeviceIdentifier)(THIS_ DDDEVICEIDENTIFIER2 *identifier, DWORD flags) PURE;
+ /* added in v7 */
+/*70*/ STDMETHOD(StartModeTest)(THIS_ LPSIZE pModes, DWORD dwNumModes, DWORD dwFlags) PURE;
+/*74*/ STDMETHOD(EvaluateMode)(THIS_ DWORD dwFlags, DWORD *pTimeout) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDraw7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDraw7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDraw7_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDraw methods ***/
+#define IDirectDraw7_Compact(p) (p)->lpVtbl->Compact(p)
+#define IDirectDraw7_CreateClipper(p,a,b,c) (p)->lpVtbl->CreateClipper(p,a,b,c)
+#define IDirectDraw7_CreatePalette(p,a,b,c,d) (p)->lpVtbl->CreatePalette(p,a,b,c,d)
+#define IDirectDraw7_CreateSurface(p,a,b,c) (p)->lpVtbl->CreateSurface(p,a,b,c)
+#define IDirectDraw7_DuplicateSurface(p,a,b) (p)->lpVtbl->DuplicateSurface(p,a,b)
+#define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) (p)->lpVtbl->EnumDisplayModes(p,a,b,c,d)
+#define IDirectDraw7_EnumSurfaces(p,a,b,c,d) (p)->lpVtbl->EnumSurfaces(p,a,b,c,d)
+#define IDirectDraw7_FlipToGDISurface(p) (p)->lpVtbl->FlipToGDISurface(p)
+#define IDirectDraw7_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectDraw7_GetDisplayMode(p,a) (p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirectDraw7_GetFourCCCodes(p,a,b) (p)->lpVtbl->GetFourCCCodes(p,a,b)
+#define IDirectDraw7_GetGDISurface(p,a) (p)->lpVtbl->GetGDISurface(p,a)
+#define IDirectDraw7_GetMonitorFrequency(p,a) (p)->lpVtbl->GetMonitorFrequency(p,a)
+#define IDirectDraw7_GetScanLine(p,a) (p)->lpVtbl->GetScanLine(p,a)
+#define IDirectDraw7_GetVerticalBlankStatus(p,a) (p)->lpVtbl->GetVerticalBlankStatus(p,a)
+#define IDirectDraw7_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectDraw7_RestoreDisplayMode(p) (p)->lpVtbl->RestoreDisplayMode(p)
+#define IDirectDraw7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
+#define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) (p)->lpVtbl->SetDisplayMode(p,a,b,c,d,e)
+#define IDirectDraw7_WaitForVerticalBlank(p,a,b) (p)->lpVtbl->WaitForVerticalBlank(p,a,b)
+/*** added in IDirectDraw2 ***/
+#define IDirectDraw7_GetAvailableVidMem(p,a,b,c) (p)->lpVtbl->GetAvailableVidMem(p,a,b,c)
+/*** added in IDirectDraw4 ***/
+#define IDirectDraw7_GetSurfaceFromDC(p,a,b) (p)->lpVtbl->GetSurfaceFromDC(p,a,b)
+#define IDirectDraw7_RestoreAllSurfaces(p) (p)->lpVtbl->RestoreAllSurfaces(p)
+#define IDirectDraw7_TestCooperativeLevel(p) (p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->lpVtbl->GetDeviceIdentifier(p,a,b)
+/*** added in IDirectDraw 7 ***/
+#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->lpVtbl->StartModeTest(p,a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b) (p)->lpVtbl->EvaluateMode(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDraw7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDraw7_AddRef(p) (p)->AddRef()
+#define IDirectDraw7_Release(p) (p)->Release()
+/*** IDirectDraw methods ***/
+#define IDirectDraw7_Compact(p) (p)->Compact()
+#define IDirectDraw7_CreateClipper(p,a,b,c) (p)->CreateClipper(a,b,c)
+#define IDirectDraw7_CreatePalette(p,a,b,c,d) (p)->CreatePalette(a,b,c,d)
+#define IDirectDraw7_CreateSurface(p,a,b,c) (p)->CreateSurface(a,b,c)
+#define IDirectDraw7_DuplicateSurface(p,a,b) (p)->DuplicateSurface(a,b)
+#define IDirectDraw7_EnumDisplayModes(p,a,b,c,d) (p)->EnumDisplayModes(a,b,c,d)
+#define IDirectDraw7_EnumSurfaces(p,a,b,c,d) (p)->EnumSurfaces(a,b,c,d)
+#define IDirectDraw7_FlipToGDISurface(p) (p)->FlipToGDISurface()
+#define IDirectDraw7_GetCaps(p,a,b) (p)->GetCaps(a,b)
+#define IDirectDraw7_GetDisplayMode(p,a) (p)->GetDisplayMode(a)
+#define IDirectDraw7_GetFourCCCodes(p,a,b) (p)->GetFourCCCodes(a,b)
+#define IDirectDraw7_GetGDISurface(p,a) (p)->GetGDISurface(a)
+#define IDirectDraw7_GetMonitorFrequency(p,a) (p)->GetMonitorFrequency(a)
+#define IDirectDraw7_GetScanLine(p,a) (p)->GetScanLine(a)
+#define IDirectDraw7_GetVerticalBlankStatus(p,a) (p)->GetVerticalBlankStatus(a)
+#define IDirectDraw7_Initialize(p,a) (p)->Initialize(a)
+#define IDirectDraw7_RestoreDisplayMode(p) (p)->RestoreDisplayMode()
+#define IDirectDraw7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
+#define IDirectDraw7_SetDisplayMode(p,a,b,c,d,e) (p)->SetDisplayMode(a,b,c,d,e)
+#define IDirectDraw7_WaitForVerticalBlank(p,a,b) (p)->WaitForVerticalBlank(a,b)
+/*** added in IDirectDraw2 ***/
+#define IDirectDraw7_GetAvailableVidMem(p,a,b,c) (p)->GetAvailableVidMem(a,b,c)
+/*** added in IDirectDraw4 ***/
+#define IDirectDraw7_GetSurfaceFromDC(p,a,b) (p)->GetSurfaceFromDC(a,b)
+#define IDirectDraw7_RestoreAllSurfaces(p) (p)->RestoreAllSurfaces()
+#define IDirectDraw7_TestCooperativeLevel(p) (p)->TestCooperativeLevel()
+#define IDirectDraw7_GetDeviceIdentifier(p,a,b) (p)->GetDeviceIdentifier(a,b)
+/*** added in IDirectDraw 7 ***/
+#define IDirectDraw7_StartModeTest(p,a,b,c) (p)->StartModeTest(a,b,c)
+#define IDirectDraw7_EvaluateMode(p,a,b) (p)->EvaluateMode(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface interface
+ */
+#define INTERFACE IDirectDrawSurface
+DECLARE_INTERFACE_(IDirectDrawSurface,IUnknown)
+{
+ /*** IUnknown methods ***/
+/*00*/ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+/*04*/ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+/*08*/ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawSurface methods ***/
+/*0c*/ STDMETHOD(AddAttachedSurface)(THIS_ IDirectDrawSurface *attachment) PURE;
+/*10*/ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+/*14*/ STDMETHOD(Blt)(THIS_ RECT *dst_rect, IDirectDrawSurface *src_surface, RECT *src_rect,
+ DWORD flags, DDBLTFX *fx) PURE;
+/*18*/ STDMETHOD(BltBatch)(THIS_ DDBLTBATCH *batch, DWORD count, DWORD flags) PURE;
+/*1c*/ STDMETHOD(BltFast)(THIS_ DWORD x, DWORD y, IDirectDrawSurface *src_surface,
+ RECT *src_rect, DWORD flags) PURE;
+/*20*/ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD flags, IDirectDrawSurface *attachment) PURE;
+/*24*/ STDMETHOD(EnumAttachedSurfaces)(THIS_ void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+/*28*/ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD flags, void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+/*2c*/ STDMETHOD(Flip)(THIS_ IDirectDrawSurface *dst_surface, DWORD flags) PURE;
+/*30*/ STDMETHOD(GetAttachedSurface)(THIS_ DDSCAPS *caps, IDirectDrawSurface **attachment) PURE;
+/*34*/ STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+/*38*/ STDMETHOD(GetCaps)(THIS_ DDSCAPS *caps) PURE;
+/*3c*/ STDMETHOD(GetClipper)(THIS_ IDirectDrawClipper **clipper) PURE;
+/*40*/ STDMETHOD(GetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+/*44*/ STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+/*48*/ STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+/*4c*/ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+/*50*/ STDMETHOD(GetPalette)(THIS_ IDirectDrawPalette **palette) PURE;
+/*54*/ STDMETHOD(GetPixelFormat)(THIS_ DDPIXELFORMAT *format) PURE;
+/*58*/ STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *surface_desc) PURE;
+/*5c*/ STDMETHOD(Initialize)(THIS_ IDirectDraw *ddraw, DDSURFACEDESC *surface_desc) PURE;
+/*60*/ STDMETHOD(IsLost)(THIS) PURE;
+/*64*/ STDMETHOD(Lock)(THIS_ RECT *rect, DDSURFACEDESC *surface_desc, DWORD flags, HANDLE event) PURE;
+/*68*/ STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+/*6c*/ STDMETHOD(Restore)(THIS) PURE;
+/*70*/ STDMETHOD(SetClipper)(THIS_ IDirectDrawClipper *clipper) PURE;
+/*74*/ STDMETHOD(SetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+/*78*/ STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+/*7c*/ STDMETHOD(SetPalette)(THIS_ IDirectDrawPalette *palette) PURE;
+/*80*/ STDMETHOD(Unlock)(THIS_ void *data) PURE;
+/*84*/ STDMETHOD(UpdateOverlay)(THIS_ RECT *src_rect, IDirectDrawSurface *dst_surface,
+ RECT *dst_rect, DWORD flags, DDOVERLAYFX *fx) PURE;
+/*88*/ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+/*8c*/ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD flags, IDirectDrawSurface *reference_surface) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface methods ***/
+#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface_Unlock(p,a) (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface_Release(p) (p)->Release()
+/*** IDirectDrawSurface methods ***/
+#define IDirectDrawSurface_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectDrawSurface_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface_Restore(p) (p)->Restore()
+#define IDirectDrawSurface_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface_Unlock(p,a) (p)->Unlock(a)
+#define IDirectDrawSurface_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface2 interface
+ */
+/* Cannot inherit from IDirectDrawSurface because the LPDIRECTDRAWSURFACE parameters
+ * have been converted to LPDIRECTDRAWSURFACE2.
+ */
+#define INTERFACE IDirectDrawSurface2
+DECLARE_INTERFACE_(IDirectDrawSurface2,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawSurface2 methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ IDirectDrawSurface2 *attachment) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+ STDMETHOD(Blt)(THIS_ RECT *dst_rect, IDirectDrawSurface2 *src_surface, RECT *src_rect,
+ DWORD flags, DDBLTFX *fx) PURE;
+ STDMETHOD(BltBatch)(THIS_ DDBLTBATCH *batch, DWORD count, DWORD flags) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD x, DWORD y, IDirectDrawSurface2 *src_surface,
+ RECT *src_rect, DWORD flags) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD flags, IDirectDrawSurface2 *attachment) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD flags, void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+ STDMETHOD(Flip)(THIS_ IDirectDrawSurface2 *dst_surface, DWORD flags) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ DDSCAPS *caps, IDirectDrawSurface2 **attachment) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetCaps)(THIS_ DDSCAPS *caps) PURE;
+ STDMETHOD(GetClipper)(THIS_ IDirectDrawClipper **clipper) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+ STDMETHOD(GetPalette)(THIS_ IDirectDrawPalette **palette) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ DDPIXELFORMAT *format) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *surface_desc) PURE;
+ STDMETHOD(Initialize)(THIS_ IDirectDraw *ddraw, DDSURFACEDESC *surface_desc) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ RECT *rect, DDSURFACEDESC *surface_desc, DWORD flags, HANDLE event) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ IDirectDrawClipper *clipper) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+ STDMETHOD(SetPalette)(THIS_ IDirectDrawPalette *palette) PURE;
+ STDMETHOD(Unlock)(THIS_ void *data) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ RECT *src_rect, IDirectDrawSurface2 *dst_surface, RECT *dst_rect,
+ DWORD flags, DDOVERLAYFX *fx) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD flags, IDirectDrawSurface2 *reference_surface) PURE;
+ /* added in v2 */
+ STDMETHOD(GetDDInterface)(THIS_ void **ddraw) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface2_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface2_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface2_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface2_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface2_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface2_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface2_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface2_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface2_Unlock(p,a) (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface2_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface2_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface2_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface2_Release(p) (p)->Release()
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface2_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface2_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface2_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface2_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface2_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface2_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface2_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface2_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface2_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface2_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface2_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface2_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectDrawSurface2_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface2_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface2_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface2_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface2_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface2_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface2_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface2_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface2_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface2_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface2_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface2_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface2_Restore(p) (p)->Restore()
+#define IDirectDrawSurface2_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface2_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface2_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface2_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface2_Unlock(p,a) (p)->Unlock(a)
+#define IDirectDrawSurface2_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface2_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface2_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface2_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface2_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface2_PageUnlock(p,a) (p)->PageUnlock(a)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface3 interface
+ */
+/* Cannot inherit from IDirectDrawSurface2 because the LPDIRECTDRAWSURFACE2 parameters
+ * have been converted to LPDIRECTDRAWSURFACE3.
+ */
+#define INTERFACE IDirectDrawSurface3
+DECLARE_INTERFACE_(IDirectDrawSurface3,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawSurface3 methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ IDirectDrawSurface3 *attachment) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+ STDMETHOD(Blt)(THIS_ RECT *dst_rest, IDirectDrawSurface3 *src_surface, RECT *src_rect,
+ DWORD flags, DDBLTFX *fx) PURE;
+ STDMETHOD(BltBatch)(THIS_ DDBLTBATCH *batch, DWORD count, DWORD flags) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD x, DWORD y, IDirectDrawSurface3 *src_surface,
+ RECT *src_rect, DWORD flags) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD flags, IDirectDrawSurface3 *attachment) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD flags, void *ctx, LPDDENUMSURFACESCALLBACK cb) PURE;
+ STDMETHOD(Flip)(THIS_ IDirectDrawSurface3 *dst_surface, DWORD flags) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ DDSCAPS *caps, IDirectDrawSurface3 **attachment) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetCaps)(THIS_ DDSCAPS *caps) PURE;
+ STDMETHOD(GetClipper)(THIS_ IDirectDrawClipper **clipper) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+ STDMETHOD(GetPalette)(THIS_ IDirectDrawPalette **palette) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ DDPIXELFORMAT *format) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC *surface_desc) PURE;
+ STDMETHOD(Initialize)(THIS_ IDirectDraw *ddraw, DDSURFACEDESC *surface_desc) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ RECT *rect, DDSURFACEDESC *surface_desc, DWORD flags, HANDLE event) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ IDirectDrawClipper *clipper) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+ STDMETHOD(SetPalette)(THIS_ IDirectDrawPalette *palette) PURE;
+ STDMETHOD(Unlock)(THIS_ void *data) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ RECT *src_rect, IDirectDrawSurface3 *dst_surface, RECT *dst_rect,
+ DWORD flags, DDOVERLAYFX *fx) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD flags, IDirectDrawSurface3 *reference_surface) PURE;
+ /* added in v2 */
+ STDMETHOD(GetDDInterface)(THIS_ void **ddraw) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+ /* added in v3 */
+ STDMETHOD(SetSurfaceDesc)(THIS_ DDSURFACEDESC *surface_desc, DWORD flags) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface3_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface3_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface3_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface3_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface3_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface3_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface3_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface3_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface3_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface3_Unlock(p,a) (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface3_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface3_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface3_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface3_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface3_Release(p) (p)->Release()
+/*** IDirectDrawSurface methods (almost) ***/
+#define IDirectDrawSurface3_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface3_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface3_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface3_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface3_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface3_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface3_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface3_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface3_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface3_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface3_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface3_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectDrawSurface3_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface3_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface3_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface3_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface3_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface3_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface3_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface3_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface3_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface3_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface3_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface3_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface3_Restore(p) (p)->Restore()
+#define IDirectDrawSurface3_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface3_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface3_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface3_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface3_Unlock(p,a) (p)->Unlock(a)
+#define IDirectDrawSurface3_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface3_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface3_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface3_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface3_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface3_PageUnlock(p,a) (p)->PageUnlock(a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface3_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface4 interface
+ */
+/* Cannot inherit from IDirectDrawSurface2 because DDSCAPS changed to DDSCAPS2.
+ */
+#define INTERFACE IDirectDrawSurface4
+DECLARE_INTERFACE_(IDirectDrawSurface4,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawSurface4 methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ IDirectDrawSurface4 *attachment) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+ STDMETHOD(Blt)(THIS_ RECT *dst_rect, IDirectDrawSurface4 *src_surface, RECT *src_rect,
+ DWORD flags, DDBLTFX *fx) PURE;
+ STDMETHOD(BltBatch)(THIS_ DDBLTBATCH *batch, DWORD count, DWORD flags) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD x, DWORD y, IDirectDrawSurface4 *src_surface,
+ RECT *src_rect, DWORD flags) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD flags, IDirectDrawSurface4 *attachment) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ void *ctx, LPDDENUMSURFACESCALLBACK2 cb) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD flags, void *ctx, LPDDENUMSURFACESCALLBACK2 cb) PURE;
+ STDMETHOD(Flip)(THIS_ IDirectDrawSurface4 *dst_surface, DWORD flags) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ DDSCAPS2 *caps, IDirectDrawSurface4 **attachment) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetCaps)(THIS_ DDSCAPS2 *caps) PURE;
+ STDMETHOD(GetClipper)(THIS_ IDirectDrawClipper **clipper) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+ STDMETHOD(GetPalette)(THIS_ IDirectDrawPalette **palette) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ DDPIXELFORMAT *format) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC2 *surface_desc) PURE;
+ STDMETHOD(Initialize)(THIS_ IDirectDraw *ddraw, DDSURFACEDESC2 *surface_desc) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ RECT *rect, DDSURFACEDESC2 *surface_desc, DWORD flags, HANDLE event) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ IDirectDrawClipper *clipper) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+ STDMETHOD(SetPalette)(THIS_ IDirectDrawPalette *palette) PURE;
+ STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ RECT *src_rect, IDirectDrawSurface4 *dst_surface, RECT *dst_rect,
+ DWORD flags, DDOVERLAYFX *fx) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD flags, IDirectDrawSurface4 *reference_surface) PURE;
+ /* added in v2 */
+ STDMETHOD(GetDDInterface)(THIS_ void **ddraw) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+ /* added in v3 */
+ STDMETHOD(SetSurfaceDesc)(THIS_ DDSURFACEDESC2 *surface_desc, DWORD flags) PURE;
+ /* added in v4 */
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID tag, void *data, DWORD size, DWORD flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID tag, void *data, DWORD *size) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID tag) PURE;
+ STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD pValue) PURE;
+ STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface4_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface4_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface4_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface4_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface4_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface4_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface4_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface4_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface4_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface4_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface4_Unlock(p,a) (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface4_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface4_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface4_GetUniquenessValue(p,a) (p)->lpVtbl->GetUniquenessValue(p,a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface4_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface4_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface4_Release(p) (p)->Release()
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface4_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface4_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface4_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface4_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface4_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface4_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface4_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface4_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface4_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface4_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface4_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface4_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectDrawSurface4_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface4_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface4_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface4_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface4_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface4_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface4_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface4_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface4_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface4_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface4_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface4_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface4_Restore(p) (p)->Restore()
+#define IDirectDrawSurface4_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface4_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface4_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface4_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface4_Unlock(p,a) (p)->Unlock(a)
+#define IDirectDrawSurface4_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface4_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface4_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface4_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface4_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface4_PageUnlock(p,a) (p)->PageUnlock(a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface4_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface4_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface4_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface4_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirectDrawSurface4_GetUniquenessValue(p,a) (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface4_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue()
+#endif
+
+
+/*****************************************************************************
+ * IDirectDrawSurface7 interface
+ */
+#define INTERFACE IDirectDrawSurface7
+DECLARE_INTERFACE_(IDirectDrawSurface7,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawSurface7 methods ***/
+ STDMETHOD(AddAttachedSurface)(THIS_ IDirectDrawSurface7 *attachment) PURE;
+ STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT lpRect) PURE;
+ STDMETHOD(Blt)(THIS_ RECT *dst_rect, IDirectDrawSurface7 *src_surface, RECT *src_rect,
+ DWORD flags, DDBLTFX *fx) PURE;
+ STDMETHOD(BltBatch)(THIS_ DDBLTBATCH *batch, DWORD count, DWORD flags) PURE;
+ STDMETHOD(BltFast)(THIS_ DWORD x, DWORD y, IDirectDrawSurface7 *src_surface,
+ RECT *src_rect, DWORD flags) PURE;
+ STDMETHOD(DeleteAttachedSurface)(THIS_ DWORD flags, IDirectDrawSurface7 *attachment) PURE;
+ STDMETHOD(EnumAttachedSurfaces)(THIS_ void *ctx, LPDDENUMSURFACESCALLBACK7 cb) PURE;
+ STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD flags, void *ctx, LPDDENUMSURFACESCALLBACK7 cb) PURE;
+ STDMETHOD(Flip)(THIS_ IDirectDrawSurface7 *dst_surface, DWORD flags) PURE;
+ STDMETHOD(GetAttachedSurface)(THIS_ DDSCAPS2 *caps, IDirectDrawSurface7 **attachment) PURE;
+ STDMETHOD(GetBltStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetCaps)(THIS_ DDSCAPS2 *caps) PURE;
+ STDMETHOD(GetClipper)(THIS_ IDirectDrawClipper **clipper) PURE;
+ STDMETHOD(GetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(GetDC)(THIS_ HDC *lphDC) PURE;
+ STDMETHOD(GetFlipStatus)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(GetOverlayPosition)(THIS_ LPLONG lplX, LPLONG lplY) PURE;
+ STDMETHOD(GetPalette)(THIS_ IDirectDrawPalette **palette) PURE;
+ STDMETHOD(GetPixelFormat)(THIS_ DDPIXELFORMAT *format) PURE;
+ STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC2 *surface_desc) PURE;
+ STDMETHOD(Initialize)(THIS_ IDirectDraw *ddraw, DDSURFACEDESC2 *surface_desc) PURE;
+ STDMETHOD(IsLost)(THIS) PURE;
+ STDMETHOD(Lock)(THIS_ RECT *rect, DDSURFACEDESC2 *surface_desc, DWORD flags, HANDLE event) PURE;
+ STDMETHOD(ReleaseDC)(THIS_ HDC hDC) PURE;
+ STDMETHOD(Restore)(THIS) PURE;
+ STDMETHOD(SetClipper)(THIS_ IDirectDrawClipper *clipper) PURE;
+ STDMETHOD(SetColorKey)(THIS_ DWORD flags, DDCOLORKEY *color_key) PURE;
+ STDMETHOD(SetOverlayPosition)(THIS_ LONG lX, LONG lY) PURE;
+ STDMETHOD(SetPalette)(THIS_ IDirectDrawPalette *palette) PURE;
+ STDMETHOD(Unlock)(THIS_ LPRECT lpSurfaceData) PURE;
+ STDMETHOD(UpdateOverlay)(THIS_ RECT *src_rect, IDirectDrawSurface7 *dst_surface, RECT *dst_rect,
+ DWORD flags, DDOVERLAYFX *fx) PURE;
+ STDMETHOD(UpdateOverlayDisplay)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD flags, IDirectDrawSurface7 *reference_surface) PURE;
+ /* added in v2 */
+ STDMETHOD(GetDDInterface)(THIS_ void **ddraw) PURE;
+ STDMETHOD(PageLock)(THIS_ DWORD dwFlags) PURE;
+ STDMETHOD(PageUnlock)(THIS_ DWORD dwFlags) PURE;
+ /* added in v3 */
+ STDMETHOD(SetSurfaceDesc)(THIS_ DDSURFACEDESC2 *surface_desc, DWORD flags) PURE;
+ /* added in v4 */
+ STDMETHOD(SetPrivateData)(THIS_ REFGUID tag, void *data, DWORD size, DWORD flags) PURE;
+ STDMETHOD(GetPrivateData)(THIS_ REFGUID tag, void *data, DWORD *size) PURE;
+ STDMETHOD(FreePrivateData)(THIS_ REFGUID tag) PURE;
+ STDMETHOD(GetUniquenessValue)(THIS_ LPDWORD pValue) PURE;
+ STDMETHOD(ChangeUniquenessValue)(THIS) PURE;
+ /* added in v7 */
+ STDMETHOD(SetPriority)(THIS_ DWORD prio) PURE;
+ STDMETHOD(GetPriority)(THIS_ LPDWORD prio) PURE;
+ STDMETHOD(SetLOD)(THIS_ DWORD lod) PURE;
+ STDMETHOD(GetLOD)(THIS_ LPDWORD lod) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawSurface7_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawSurface7_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->lpVtbl->AddAttachedSurface(p,a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->lpVtbl->AddOverlayDirtyRect(p,a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->lpVtbl->Blt(p,a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->lpVtbl->BltBatch(p,a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->lpVtbl->BltFast(p,a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->lpVtbl->DeleteAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->lpVtbl->EnumAttachedSurfaces(p,a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->lpVtbl->EnumOverlayZOrders(p,a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b) (p)->lpVtbl->Flip(p,a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->lpVtbl->GetAttachedSurface(p,a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->lpVtbl->GetBltStatus(p,a)
+#define IDirectDrawSurface7_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectDrawSurface7_GetClipper(p,a) (p)->lpVtbl->GetClipper(p,a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->lpVtbl->GetColorKey(p,a,b)
+#define IDirectDrawSurface7_GetDC(p,a) (p)->lpVtbl->GetDC(p,a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->lpVtbl->GetFlipStatus(p,a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->lpVtbl->GetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_GetPalette(p,a) (p)->lpVtbl->GetPalette(p,a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->lpVtbl->GetPixelFormat(p,a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->lpVtbl->GetSurfaceDesc(p,a)
+#define IDirectDrawSurface7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
+#define IDirectDrawSurface7_IsLost(p) (p)->lpVtbl->IsLost(p)
+#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->lpVtbl->ReleaseDC(p,a)
+#define IDirectDrawSurface7_Restore(p) (p)->lpVtbl->Restore(p)
+#define IDirectDrawSurface7_SetClipper(p,a) (p)->lpVtbl->SetClipper(p,a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->lpVtbl->SetColorKey(p,a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->lpVtbl->SetOverlayPosition(p,a,b)
+#define IDirectDrawSurface7_SetPalette(p,a) (p)->lpVtbl->SetPalette(p,a)
+#define IDirectDrawSurface7_Unlock(p,a) (p)->lpVtbl->Unlock(p,a)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->lpVtbl->UpdateOverlay(p,a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->lpVtbl->UpdateOverlayDisplay(p,a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->lpVtbl->UpdateOverlayZOrder(p,a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->lpVtbl->GetDDInterface(p,a)
+#define IDirectDrawSurface7_PageLock(p,a) (p)->lpVtbl->PageLock(p,a)
+#define IDirectDrawSurface7_PageUnlock(p,a) (p)->lpVtbl->PageUnlock(p,a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->lpVtbl->SetSurfaceDesc(p,a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->lpVtbl->FreePrivateData(p,a)
+#define IDirectDrawSurface7_GetUniquenessValue(p,a) (p)->lpVtbl->GetUniquenessValue(p,a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->lpVtbl->ChangeUniquenessValue(p)
+/*** IDirectDrawSurface7 methods ***/
+#define IDirectDrawSurface7_SetPriority(p,a) (p)->lpVtbl->SetPriority(p,a)
+#define IDirectDrawSurface7_GetPriority(p,a) (p)->lpVtbl->GetPriority(p,a)
+#define IDirectDrawSurface7_SetLOD(p,a) (p)->lpVtbl->SetLOD(p,a)
+#define IDirectDrawSurface7_GetLOD(p,a) (p)->lpVtbl->GetLOD(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawSurface7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawSurface7_AddRef(p) (p)->AddRef()
+#define IDirectDrawSurface7_Release(p) (p)->Release()
+/*** IDirectDrawSurface (almost) methods ***/
+#define IDirectDrawSurface7_AddAttachedSurface(p,a) (p)->AddAttachedSurface(a)
+#define IDirectDrawSurface7_AddOverlayDirtyRect(p,a) (p)->AddOverlayDirtyRect(a)
+#define IDirectDrawSurface7_Blt(p,a,b,c,d,e) (p)->Blt(a,b,c,d,e)
+#define IDirectDrawSurface7_BltBatch(p,a,b,c) (p)->BltBatch(a,b,c)
+#define IDirectDrawSurface7_BltFast(p,a,b,c,d,e) (p)->BltFast(a,b,c,d,e)
+#define IDirectDrawSurface7_DeleteAttachedSurface(p,a,b) (p)->DeleteAttachedSurface(a,b)
+#define IDirectDrawSurface7_EnumAttachedSurfaces(p,a,b) (p)->EnumAttachedSurfaces(a,b)
+#define IDirectDrawSurface7_EnumOverlayZOrders(p,a,b,c) (p)->EnumOverlayZOrders(a,b,c)
+#define IDirectDrawSurface7_Flip(p,a,b) (p)->Flip(a,b)
+#define IDirectDrawSurface7_GetAttachedSurface(p,a,b) (p)->GetAttachedSurface(a,b)
+#define IDirectDrawSurface7_GetBltStatus(p,a) (p)->GetBltStatus(a)
+#define IDirectDrawSurface7_GetCaps(p,a) (p)->GetCaps(a)
+#define IDirectDrawSurface7_GetClipper(p,a) (p)->GetClipper(a)
+#define IDirectDrawSurface7_GetColorKey(p,a,b) (p)->GetColorKey(a,b)
+#define IDirectDrawSurface7_GetDC(p,a) (p)->GetDC(a)
+#define IDirectDrawSurface7_GetFlipStatus(p,a) (p)->GetFlipStatus(a)
+#define IDirectDrawSurface7_GetOverlayPosition(p,a,b) (p)->GetOverlayPosition(a,b)
+#define IDirectDrawSurface7_GetPalette(p,a) (p)->GetPalette(a)
+#define IDirectDrawSurface7_GetPixelFormat(p,a) (p)->GetPixelFormat(a)
+#define IDirectDrawSurface7_GetSurfaceDesc(p,a) (p)->GetSurfaceDesc(a)
+#define IDirectDrawSurface7_Initialize(p,a,b) (p)->Initialize(a,b)
+#define IDirectDrawSurface7_IsLost(p) (p)->IsLost()
+#define IDirectDrawSurface7_Lock(p,a,b,c,d) (p)->Lock(a,b,c,d)
+#define IDirectDrawSurface7_ReleaseDC(p,a) (p)->ReleaseDC(a)
+#define IDirectDrawSurface7_Restore(p) (p)->Restore()
+#define IDirectDrawSurface7_SetClipper(p,a) (p)->SetClipper(a)
+#define IDirectDrawSurface7_SetColorKey(p,a,b) (p)->SetColorKey(a,b)
+#define IDirectDrawSurface7_SetOverlayPosition(p,a,b) (p)->SetOverlayPosition(a,b)
+#define IDirectDrawSurface7_SetPalette(p,a) (p)->SetPalette(a)
+#define IDirectDrawSurface7_Unlock(p,a) (p)->Unlock(a)
+#define IDirectDrawSurface7_UpdateOverlay(p,a,b,c,d,e) (p)->UpdateOverlay(a,b,c,d,e)
+#define IDirectDrawSurface7_UpdateOverlayDisplay(p,a) (p)->UpdateOverlayDisplay(a)
+#define IDirectDrawSurface7_UpdateOverlayZOrder(p,a,b) (p)->UpdateOverlayZOrder(a,b)
+/*** IDirectDrawSurface2 methods ***/
+#define IDirectDrawSurface7_GetDDInterface(p,a) (p)->GetDDInterface(a)
+#define IDirectDrawSurface7_PageLock(p,a) (p)->PageLock(a)
+#define IDirectDrawSurface7_PageUnlock(p,a) (p)->PageUnlock(a)
+/*** IDirectDrawSurface3 methods ***/
+#define IDirectDrawSurface7_SetSurfaceDesc(p,a,b) (p)->SetSurfaceDesc(a,b)
+/*** IDirectDrawSurface4 methods ***/
+#define IDirectDrawSurface7_SetPrivateData(p,a,b,c,d) (p)->SetPrivateData(a,b,c,d)
+#define IDirectDrawSurface7_GetPrivateData(p,a,b,c) (p)->GetPrivateData(a,b,c)
+#define IDirectDrawSurface7_FreePrivateData(p,a) (p)->FreePrivateData(a)
+#define IDirectDrawSurface7_GetUniquenessValue(p,a) (p)->GetUniquenessValue(a)
+#define IDirectDrawSurface7_ChangeUniquenessValue(p) (p)->ChangeUniquenessValue()
+/*** IDirectDrawSurface7 methods ***/
+#define IDirectDrawSurface7_SetPriority(p,a) (p)->SetPriority(a)
+#define IDirectDrawSurface7_GetPriority(p,a) (p)->GetPriority(a)
+#define IDirectDrawSurface7_SetLOD(p,a) (p)->SetLOD(a)
+#define IDirectDrawSurface7_GetLOD(p,a) (p)->GetLOD(a)
+#endif
+
+/*****************************************************************************
+ * IDirectDrawColorControl interface
+ */
+#define INTERFACE IDirectDrawColorControl
+DECLARE_INTERFACE_(IDirectDrawColorControl,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawColorControl methods ***/
+ STDMETHOD(GetColorControls)(THIS_ DDCOLORCONTROL *color_control) PURE;
+ STDMETHOD(SetColorControls)(THIS_ DDCOLORCONTROL *color_control) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawColorControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawColorControl_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawColorControl_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawColorControl methods ***/
+#define IDirectDrawColorControl_GetColorControls(p,a) (p)->lpVtbl->GetColorControls(p,a)
+#define IDirectDrawColorControl_SetColorControls(p,a) (p)->lpVtbl->SetColorControls(p,a)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawColorControl_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawColorControl_AddRef(p) (p)->AddRef()
+#define IDirectDrawColorControl_Release(p) (p)->Release()
+/*** IDirectDrawColorControl methods ***/
+#define IDirectDrawColorControl_GetColorControls(p,a) (p)->GetColorControls(a)
+#define IDirectDrawColorControl_SetColorControls(p,a) (p)->SetColorControls(a)
+#endif
+
+/*****************************************************************************
+ * IDirectDrawGammaControl interface
+ */
+#define INTERFACE IDirectDrawGammaControl
+DECLARE_INTERFACE_(IDirectDrawGammaControl,IUnknown)
+{
+ /*** IUnknown methods ***/
+ STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ /*** IDirectDrawGammaControl methods ***/
+ STDMETHOD(GetGammaRamp)(THIS_ DWORD flags, DDGAMMARAMP *gamma_ramp) PURE;
+ STDMETHOD(SetGammaRamp)(THIS_ DWORD flags, DDGAMMARAMP *gamma_ramp) PURE;
+};
+#undef INTERFACE
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+/*** IUnknown methods ***/
+#define IDirectDrawGammaControl_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectDrawGammaControl_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectDrawGammaControl_Release(p) (p)->lpVtbl->Release(p)
+/*** IDirectDrawGammaControl methods ***/
+#define IDirectDrawGammaControl_GetGammaRamp(p,a,b) (p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirectDrawGammaControl_SetGammaRamp(p,a,b) (p)->lpVtbl->SetGammaRamp(p,a,b)
+#else
+/*** IUnknown methods ***/
+#define IDirectDrawGammaControl_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
+#define IDirectDrawGammaControl_AddRef(p) (p)->AddRef()
+#define IDirectDrawGammaControl_Release(p) (p)->Release()
+/*** IDirectDrawGammaControl methods ***/
+#define IDirectDrawGammaControl_GetGammaRamp(p,a,b) (p)->GetGammaRamp(a,b)
+#define IDirectDrawGammaControl_SetGammaRamp(p,a,b) (p)->SetGammaRamp(a,b)
+#endif
+
+
+HRESULT WINAPI DirectDrawCreate(GUID *driver_guid, IDirectDraw **ddraw, IUnknown *outer);
+HRESULT WINAPI DirectDrawCreateEx(GUID *driver_guid, void **ddraw, REFIID interface_iid, IUnknown *outer);
+HRESULT WINAPI DirectDrawCreateClipper(DWORD flags, IDirectDrawClipper **clipper, IUnknown *outer);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* defined(__cplusplus) */
+
+#endif /* __DDRAW_INCLUDED__ */
diff --git a/docs/libwine/winuser.h b/docs/libwine/winuser.h
new file mode 100644
index 0000000..8489d05
--- /dev/null
+++ b/docs/libwine/winuser.h
@@ -0,0 +1,4328 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef _WINUSER_
+#define _WINUSER_
+
+#if !defined(_USER32_)
+#define WINUSERAPI DECLSPEC_IMPORT
+#else
+#define WINUSERAPI
+#endif
+
+#ifndef RC_INVOKED
+#include <stdarg.h>
+#endif
+#include <winuser.rh>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define a bunch of callback types */
+
+#if defined(STRICT)
+typedef INT_PTR (CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef BOOL (CALLBACK *DRAWSTATEPROC)(HDC,LPARAM,WPARAM,int,int);
+typedef INT (CALLBACK *EDITWORDBREAKPROCA)(LPSTR,INT,INT,INT);
+typedef INT (CALLBACK *EDITWORDBREAKPROCW)(LPWSTR,INT,INT,INT);
+typedef BOOL (CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,INT);
+typedef LRESULT (CALLBACK *HOOKPROC)(INT,WPARAM,LPARAM);
+typedef BOOL (CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
+typedef BOOL (CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
+typedef BOOL (CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+typedef BOOL (CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+typedef BOOL (CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,ULONG_PTR);
+typedef BOOL (CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,ULONG_PTR);
+typedef VOID (CALLBACK *SENDASYNCPROC)(HWND,UINT,ULONG_PTR,LRESULT);
+typedef VOID (CALLBACK *TIMERPROC)(HWND,UINT,UINT_PTR,DWORD);
+typedef VOID (CALLBACK *WINEVENTPROC)(HWINEVENTHOOK,DWORD,HWND,LONG,LONG,
+ DWORD,DWORD);
+typedef BOOL (CALLBACK *WNDENUMPROC)(HWND,LPARAM);
+
+#else
+typedef FARPROC DLGPROC;
+typedef FARPROC DRAWSTATEPROC;
+typedef FARPROC EDITWORDBREAKPROCA;
+typedef FARPROC EDITWORDBREAKPROCW;
+typedef FARPROC GRAYSTRINGPROC;
+typedef FARPROC HOOKPROC;
+typedef FARPROC NAMEENUMPROCA;
+typedef FARPROC NAMEENUMPROCW;
+typedef FARPROC PROPENUMPROCA;
+typedef FARPROC PROPENUMPROCW;
+typedef FARPROC PROPENUMPROCEXA;
+typedef FARPROC PROPENUMPROCEXW;
+typedef FARPROC SENDASYNCPROC;
+typedef FARPROC TIMERPROC;
+typedef FARPROC WINEVENTPROC;
+typedef FARPROC WNDENUMPROC;
+#endif /* STRICT */
+
+typedef NAMEENUMPROCA WINSTAENUMPROCA;
+typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+typedef NAMEENUMPROCW WINSTAENUMPROCW;
+typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+
+typedef LRESULT (CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+
+DECL_WINELIB_TYPE_AW(DESKTOPENUMPROC)
+DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC)
+DECL_WINELIB_TYPE_AW(NAMEENUMPROC)
+DECL_WINELIB_TYPE_AW(PROPENUMPROC)
+DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
+DECL_WINELIB_TYPE_AW(WINSTAENUMPROC)
+
+
+typedef HANDLE HDWP;
+typedef void* HPOWERNOTIFY;
+
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+
+#define WSF_VISIBLE 1
+#define DF_ALLOWOTHERACCOUNTHOOK 1
+
+typedef struct tagUSEROBJECTFLAGS {
+ BOOL fInherit;
+ BOOL fReserved;
+ DWORD dwFlags;
+} USEROBJECTFLAGS, *PUSEROBJECTFLAGS;
+
+typedef struct tagBSMINFO {
+ UINT cbSize;
+ HDESK hdesk;
+ HWND hwnd;
+ LUID luid;
+} BSMINFO, *PBSMINFO;
+
+/* Window stations */
+#define WINSTA_ENUMDESKTOPS 0x0001
+#define WINSTA_READATTRIBUTES 0x0002
+#define WINSTA_ACCESSCLIPBOARD 0x0004
+#define WINSTA_CREATEDESKTOP 0x0008
+#define WINSTA_WRITEATTRIBUTES 0x0010
+#define WINSTA_ACCESSGLOBALATOMS 0x0020
+#define WINSTA_EXITWINDOWS 0x0040
+#define WINSTA_ENUMERATE 0x0100
+#define WINSTA_READSCREEN 0x0200
+#define WINSTA_ALL_ACCESS 0x037f
+
+/* Desktops */
+#define DESKTOP_READOBJECTS 0x0001
+#define DESKTOP_CREATEWINDOW 0x0002
+#define DESKTOP_CREATEMENU 0x0004
+#define DESKTOP_HOOKCONTROL 0x0008
+#define DESKTOP_JOURNALRECORD 0x0010
+#define DESKTOP_JOURNALPLAYBACK 0x0020
+#define DESKTOP_ENUMERATE 0x0040
+#define DESKTOP_WRITEOBJECTS 0x0080
+#define DESKTOP_SWITCHDESKTOP 0x0100
+
+
+/* flags for FILTERKEYS dwFlags field */
+#define FKF_AVAILABLE 0x00000002
+#define FKF_CLICKON 0x00000040
+#define FKF_FILTERKEYSON 0x00000001
+#define FKF_HOTKEYACTIVE 0x00000004
+#define FKF_HOTKEYSOUND 0x00000010
+#define FKF_CONFIRMHOTKEY 0x00000008
+#define FKF_INDICATOR 0x00000020
+
+typedef struct tagFILTERKEYS
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iWaitMSec;
+ DWORD iDelayMSec;
+ DWORD iRepeatMSec;
+ DWORD iBounceMSec;
+} FILTERKEYS, *LPFILTERKEYS;
+
+/* flags for TOGGLEKEYS dwFlags field */
+#define TKF_AVAILABLE 0x00000002
+#define TKF_CONFIRMHOTKEY 0x00000008
+#define TKF_HOTKEYACTIVE 0x00000004
+#define TKF_HOTKEYSOUND 0x00000010
+#define TKF_TOGGLEKEYSON 0x00000001
+
+typedef struct tagTOGGLEKEYS
+{
+ DWORD cbSize;
+ DWORD dwFlags;
+} TOGGLEKEYS, *LPTOGGLEKEYS;
+
+/* flags for MOUSEKEYS dwFlags field */
+#define MKF_AVAILABLE 0x00000002
+#define MKF_CONFIRMHOTKEY 0x00000008
+#define MKF_HOTKEYACTIVE 0x00000004
+#define MKF_HOTKEYSOUND 0x00000010
+#define MKF_INDICATOR 0x00000020
+#define MKF_MOUSEKEYSON 0x00000001
+#define MKF_MODIFIERS 0x00000040
+#define MKF_REPLACENUMBERS 0x00000080
+
+typedef struct tagMOUSEKEYS
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iMaxSpeed;
+ DWORD iTimeToMaxSpeed;
+ DWORD iCtrlSpeed;
+ DWORD dwReserved1;
+ DWORD dwReserved2;
+} MOUSEKEYS, *LPMOUSEKEYS;
+
+/* struct and defines for GetMouseMovePointsEx */
+#define GMMP_USE_DISPLAY_POINTS 1
+#define GMMP_USE_HIGH_RESOLUTION_POINTS 2
+
+typedef struct tagMOUSEMOVEPOINT {
+ int x;
+ int y;
+ DWORD time;
+ ULONG_PTR dwExtraInfo;
+} MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT;
+
+/* flags for STICKYKEYS dwFlags field */
+#define SKF_AUDIBLEFEEDBACK 0x00000040
+#define SKF_AVAILABLE 0x00000002
+#define SKF_CONFIRMHOTKEY 0x00000008
+#define SKF_HOTKEYACTIVE 0x00000004
+#define SKF_HOTKEYSOUND 0x00000010
+#define SKF_INDICATOR 0x00000020
+#define SKF_STICKYKEYSON 0x00000001
+#define SKF_TRISTATE 0x00000080
+#define SKF_TWOKEYSOFF 0x00000100
+
+typedef struct tagSTICKYKEYS
+{
+ DWORD cbSize;
+ DWORD dwFlags;
+} STICKYKEYS, *LPSTICKYKEYS;
+
+/* flags for ACCESSTIMEOUT dwFlags field */
+#define ATF_ONOFFFEEDBACK 0x00000002
+#define ATF_AVAILABLE 0x00000004
+#define ATF_TIMEOUTON 0x00000001
+
+typedef struct tagACCESSTIMEOUT
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iTimeOutMSec;
+} ACCESSTIMEOUT, *LPACCESSTIMEOUT;
+
+/* flags for SERIALKEYS dwFlags field */
+#define SERKF_ACTIVE 0x00000008
+#define SERKF_AVAILABLE 0x00000002
+#define SERKF_INDICATOR 0x00000004
+#define SERKF_SERIALKEYSON 0x00000001
+
+typedef struct tagSERIALKEYSA
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ LPSTR lpszActivePort;
+ LPSTR lpszPort;
+ UINT iBaudRate;
+ UINT iPortState;
+ UINT iActive;
+} SERIALKEYSA, *LPSERIALKEYSA;
+
+typedef struct tagSERIALKEYSW {
+ UINT cbSize;
+ DWORD dwFlags;
+ LPWSTR lpszActivePort;
+ LPWSTR lpszPort;
+ UINT iBaudRate;
+ UINT iPortState;
+ UINT iActive;
+} SERIALKEYSW,*LPSERIALKEYSW;
+
+DECL_WINELIB_TYPE_AW(SERIALKEYS)
+DECL_WINELIB_TYPE_AW(LPSERIALKEYS)
+
+/* flags for SOUNDSENTRY dwFlags field */
+#define SSF_AVAILABLE 0x00000002
+#define SSF_SOUNDSENTRYON 0x00000001
+
+#define SSTF_BORDER 0x00000002
+#define SSTF_CHARS 0x00000001
+#define SSTF_DISPLAY 0x00000003
+#define SSTF_NONE 0x00000000
+
+#define SSGF_DISPLAY 0x00000003
+#define SSGF_NONE 0x00000000
+
+#define SSWF_DISPLAY 0x00000003
+#define SSWF_NONE 0x00000000
+#define SSWF_TITLE 0x00000001
+#define SSWF_WINDOW 0x00000002
+
+typedef struct tagSOUNDSENTRYA
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iFSTextEffect;
+ DWORD iFSTextEffectMSec;
+ DWORD iFSTextEffectColorBits;
+ DWORD iFSGrafEffect;
+ DWORD iFSGrafEffectMSec;
+ DWORD iFSGrafEffectColor;
+ DWORD iWindowsEffect;
+ DWORD iWindowsEffectMSec;
+ LPSTR lpszWindowsEffectDLL;
+ DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYA, *LPSOUNDSENTRYA;
+
+typedef struct tagSOUNDSENTRYW
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD iFSTextEffect;
+ DWORD iFSTextEffectMSec;
+ DWORD iFSTextEffectColorBits;
+ DWORD iFSGrafEffect;
+ DWORD iFSGrafEffectMSec;
+ DWORD iFSGrafEffectColor;
+ DWORD iWindowsEffect;
+ DWORD iWindowsEffectMSec;
+ LPWSTR lpszWindowsEffectDLL;
+ DWORD iWindowsEffectOrdinal;
+} SOUNDSENTRYW, *LPSOUNDSENTRYW;
+
+DECL_WINELIB_TYPE_AW(SOUNDSENTRY)
+DECL_WINELIB_TYPE_AW(LPSOUNDSENTRY)
+
+/* flags for HIGHCONTRAST dwFlags field */
+#define HCF_HIGHCONTRASTON 0x00000001
+#define HCF_AVAILABLE 0x00000002
+#define HCF_HOTKEYACTIVE 0x00000004
+#define HCF_CONFIRMHOTKEY 0x00000008
+#define HCF_HOTKEYSOUND 0x00000010
+#define HCF_INDICATOR 0x00000020
+#define HCF_HOTKEYAVAILABLE 0x00000040
+
+typedef struct tagHIGHCONTRASTA
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ LPSTR lpszDefaultScheme;
+} HIGHCONTRASTA, *LPHIGHCONTRASTA;
+
+typedef struct tagHIGHCONTRASTW
+{
+ UINT cbSize;
+ DWORD dwFlags;
+ LPWSTR lpszDefaultScheme;
+} HIGHCONTRASTW, *LPHIGHCONTRASTW;
+
+DECL_WINELIB_TYPE_AW(HIGHCONTRAST)
+DECL_WINELIB_TYPE_AW(LPHIGHCONTRAST)
+
+typedef struct tagEVENTMSG
+{
+ UINT message;
+ UINT paramL;
+ UINT paramH;
+ DWORD time;
+ HWND hwnd;
+} EVENTMSG, *PEVENTMSG, *LPEVENTMSG;
+
+/* WH_KEYBOARD_LL structure */
+typedef struct tagKBDLLHOOKSTRUCT
+{
+ DWORD vkCode;
+ DWORD scanCode;
+ DWORD flags;
+ DWORD time;
+ ULONG_PTR dwExtraInfo;
+} KBDLLHOOKSTRUCT, *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
+
+#define LLKHF_EXTENDED (KF_EXTENDED >> 8)
+#define LLKHF_INJECTED 0x00000010
+#define LLKHF_ALTDOWN (KF_ALTDOWN >> 8)
+#define LLKHF_UP (KF_UP >> 8)
+
+/* WH_MOUSE_LL structure */
+typedef struct tagMSLLHOOKSTRUCT
+{
+ POINT pt;
+ DWORD mouseData;
+ DWORD flags;
+ DWORD time;
+ ULONG_PTR dwExtraInfo;
+} MSLLHOOKSTRUCT, *LPMSLLHOOKSTRUCT, *PMSLLHOOKSTRUCT;
+
+#define LLMHF_INJECTED 0x00000001
+
+ /* Mouse hook structure */
+
+typedef struct
+{
+ POINT pt;
+ HWND hwnd;
+ UINT wHitTestCode;
+ ULONG_PTR dwExtraInfo;
+} MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT, *LPMOUSEHOOKSTRUCT;
+
+typedef struct
+{
+ struct { /* MOUSEHOOKSTRUCT */
+ POINT pt;
+ HWND hwnd;
+ UINT wHitTestCode;
+ ULONG_PTR dwExtraInfo;
+ } DUMMYSTRUCTNAME;
+ DWORD mouseData;
+} MOUSEHOOKSTRUCTEX, *PMOUSEHOOKSTRUCTEX, *LPMOUSEHOOKSTRUCTEX;
+
+
+ /* Hardware hook structure */
+
+typedef struct
+{
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+} HARDWAREHOOKSTRUCT, *PHARDWAREHOOKSTRUCT, *LPHARDWAREHOOKSTRUCT;
+
+
+ /* Debug hook structure */
+
+typedef struct tagDEBUGHOOKINFO
+{
+ DWORD idThread;
+ DWORD idThreadInstaller;
+ LPARAM lParam;
+ WPARAM wParam;
+ INT code;
+} DEBUGHOOKINFO, *PDEBUGHOOKINFO, *LPDEBUGHOOKINFO;
+
+#define HKL_PREV 0
+#define HKL_NEXT 1
+
+#define KLF_ACTIVATE 0x00000001
+#define KLF_SUBSTITUTE_OK 0x00000002
+#define KLF_UNLOADPREVIOUS 0x00000004
+#define KLF_REORDER 0x00000008
+#define KLF_REPLACELANG 0x00000010
+#define KLF_NOTELLSHELL 0x00000080
+#define KLF_SETFORPROCESS 0x00000100
+#define KLF_SHIFTLOCK 0x00010000
+#define KLF_RESET 0x40000000
+
+#define KL_NAMELENGTH 9
+
+typedef struct tagMOUSEINPUT
+{
+ LONG dx;
+ LONG dy;
+ DWORD mouseData;
+ DWORD dwFlags;
+ DWORD time;
+ ULONG_PTR dwExtraInfo;
+} MOUSEINPUT, *PMOUSEINPUT, *LPMOUSEINPUT;
+
+typedef struct tagKEYBDINPUT
+{
+ WORD wVk;
+ WORD wScan;
+ DWORD dwFlags;
+ DWORD time;
+ ULONG_PTR dwExtraInfo;
+} KEYBDINPUT, *PKEYBDINPUT, *LPKEYBDINPUT;
+
+typedef struct tagHARDWAREINPUT
+{
+ DWORD uMsg;
+ WORD wParamL;
+ WORD wParamH;
+} HARDWAREINPUT, *PHARDWAREINPUT, *LPHARDWAREINPUT;
+
+#define INPUT_MOUSE 0
+#define INPUT_KEYBOARD 1
+#define INPUT_HARDWARE 2
+
+typedef struct tagINPUT
+{
+ DWORD type;
+ union
+ {
+ MOUSEINPUT mi;
+ KEYBDINPUT ki;
+ HARDWAREINPUT hi;
+ } DUMMYUNIONNAME;
+} INPUT, *PINPUT, *LPINPUT;
+
+DECLARE_HANDLE(HRAWINPUT);
+
+typedef struct tagRAWINPUTDEVICELIST
+{
+ HANDLE hDevice;
+ DWORD dwType;
+} RAWINPUTDEVICELIST, *PRAWINPUTDEVICELIST;
+
+typedef struct tagRAWHID {
+ DWORD dwSizeHid;
+ DWORD dwCount;
+ BYTE bRawData;
+} RAWHID, *LPRAWHID;
+
+typedef struct tagRAWKEYBOARD {
+ USHORT MakeCode;
+ USHORT Flags;
+ USHORT Reserved;
+ USHORT VKey;
+ UINT Message;
+ ULONG ExtraInformation;
+} RAWKEYBOARD, *PRAWKEYBOARD, *LPRAWKEYBOARD;
+
+typedef struct tagRAWMOUSE {
+ USHORT usFlags;
+ union {
+ ULONG ulButtons;
+ struct {
+ USHORT usButtonFlags;
+ USHORT usButtonData;
+ } DUMMYSTRUCTNAME;
+ } DUMMYUNIONNAME;
+ ULONG ulRawButtons;
+ LONG lLastX;
+ LONG lLastY;
+ ULONG ulExtraInformation;
+} RAWMOUSE, *PRAWMOUSE, *LPRAWMOUSE;
+
+typedef struct tagRAWINPUTHEADER {
+ DWORD dwType;
+ DWORD dwSize;
+ HANDLE hDevice;
+ WPARAM wParam;
+} RAWINPUTHEADER, *PRAWINPUTHEADER;
+
+typedef struct tagRAWINPUT {
+ RAWINPUTHEADER header;
+ union {
+ RAWMOUSE mouse;
+ RAWKEYBOARD keyboard;
+ RAWHID hid;
+ } data;
+} RAWINPUT, *PRAWINPUT, *LPRAWINPUT;
+
+typedef struct tagRAWINPUTDEVICE {
+ USHORT usUsagePage;
+ USHORT usUsage;
+ DWORD dwFlags;
+ HWND hwndTarget;
+} RAWINPUTDEVICE, *PRAWINPUTDEVICE, *LPRAWINPUTDEVICE;
+
+typedef struct tagRID_DEVICE_INFO_MOUSE {
+ DWORD dwId;
+ DWORD dwNumberOfButtons;
+ DWORD dwSampleRate;
+ BOOL fHasHorizontalWheel;
+} RID_DEVICE_INFO_MOUSE, *PRID_DEVICE_INFO_MOUSE;
+
+typedef struct tagRID_DEVICE_INFO_KEYBOARD {
+ DWORD dwType;
+ DWORD dwSubType;
+ DWORD dwKeyboardMode;
+ DWORD dwNumberOfFunctionKeys;
+ DWORD dwNumberOfIndicators;
+ DWORD dwNumberOfKeysTotal;
+} RID_DEVICE_INFO_KEYBOARD, *PRID_DEVICE_INFO_KEYBOARD;
+
+typedef struct tagRID_DEVICE_INFO_HID {
+ DWORD dwVendorId;
+ DWORD dwProductId;
+ DWORD dwVersionNumber;
+ USHORT usUsagePage;
+ USHORT usUsage;
+} RID_DEVICE_INFO_HID, *PRID_DEVICE_INFO_HID;
+
+typedef struct tagRID_DEVICE_INFO {
+ DWORD cbSize;
+ DWORD dwType;
+ union {
+ RID_DEVICE_INFO_MOUSE mouse;
+ RID_DEVICE_INFO_KEYBOARD keyboard;
+ RID_DEVICE_INFO_HID hid;
+ } DUMMYUNIONNAME;
+} RID_DEVICE_INFO, *PRID_DEVICE_INFO, *LPRID_DEVICE_INFO;
+
+#define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff)
+
+#define RIM_INPUT 0
+#define RIM_INPUTSINK 1
+
+#define RIM_TYPEMOUSE 0
+#define RIM_TYPEKEYBOARD 1
+#define RIM_TYPEHID 2
+
+#define RI_MOUSE_LEFT_BUTTON_DOWN 0x0001
+#define RI_MOUSE_LEFT_BUTTON_UP 0x0002
+#define RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004
+#define RI_MOUSE_RIGHT_BUTTON_UP 0x0008
+#define RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010
+#define RI_MOUSE_MIDDLE_BUTTON_UP 0x0020
+
+#define RI_MOUSE_BUTTON_1_DOWN RI_MOUSE_LEFT_BUTTON_DOWN
+#define RI_MOUSE_BUTTON_1_UP RI_MOUSE_LEFT_BUTTON_UP
+#define RI_MOUSE_BUTTON_2_DOWN RI_MOUSE_RIGHT_BUTTON_DOWN
+#define RI_MOUSE_BUTTON_2_UP RI_MOUSE_RIGHT_BUTTON_UP
+#define RI_MOUSE_BUTTON_3_DOWN RI_MOUSE_MIDDLE_BUTTON_DOWN
+#define RI_MOUSE_BUTTON_3_UP RI_MOUSE_MIDDLE_BUTTON_UP
+
+#define RI_MOUSE_BUTTON_4_DOWN 0x0040
+#define RI_MOUSE_BUTTON_4_UP 0x0080
+#define RI_MOUSE_BUTTON_5_DOWN 0x0100
+#define RI_MOUSE_BUTTON_5_UP 0x0200
+#define RI_MOUSE_WHEEL 0x0400
+#define RI_MOUSE_HORIZONTAL_WHEEL 0x0800
+
+#define MOUSE_MOVE_RELATIVE 0x00
+#define MOUSE_MOVE_ABSOLUTE 0x01
+#define MOUSE_VIRTUAL_DESKTOP 0x02
+#define MOUSE_ATTRIBUTES_CHANGED 0x04
+#define MOUSE_MOVE_NOCOALESCE 0x08
+
+#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF
+
+#define RI_KEY_MAKE 0x00
+#define RI_KEY_BREAK 0x01
+#define RI_KEY_E0 0x02
+#define RI_KEY_E1 0x04
+#define RI_KEY_TERMSRV_SET_LED 0x08
+#define RI_KEY_TERMSRV_SHADOW 0x10
+
+#define RAWINPUT_ALIGN(x) (((x) + sizeof(DWORD_PTR) - 1) & ~(sizeof(DWORD_PTR) - 1))
+#define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize)))
+
+#define RID_INPUT 0x10000003
+#define RID_HEADER 0x10000005
+
+#define RIDI_PREPARSEDDATA 0x20000005
+#define RIDI_DEVICENAME 0x20000007
+#define RIDI_DEVICEINFO 0x2000000b
+
+#define RIDEV_REMOVE 0x00000001
+#define RIDEV_EXCLUDE 0x00000010
+#define RIDEV_PAGEONLY 0x00000020
+#define RIDEV_NOLEGACY 0x00000030
+#define RIDEV_INPUTSINK 0x00000100
+#define RIDEV_CAPTUREMOUSE 0x00000200
+#define RIDEV_NOHOTKEYS 0x00000200
+#define RIDEV_APPKEYS 0x00000400
+#define RIDEV_EXINPUTSINK 0x00001000
+#define RIDEV_DEVNOTIFY 0x00002000
+#define RIDEV_EXMODEMASK 0x000000F0
+
+#define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK)
+
+typedef struct tagGESTURECONFIG {
+ DWORD dwID;
+ DWORD dwWant;
+ DWORD dwBlock;
+} GESTURECONFIG, *PGESTURECONFIG;
+
+#define GIDC_ARRIVAL 1
+#define GIDC_REMOVAL 2
+
+#if (_WIN32_WINNT >= 0x0601)
+#define GET_DEVICE_CHANGE_WPARAM(wParam) (LOWORD(wParam))
+#elif (_WIN32_WINNT >= 0x0501)
+#define GET_DEVICE_CHANGE_LPARAM(lParam) (LOWORD(lParam))
+#endif
+
+typedef struct tagGUITHREADINFO
+{
+ DWORD cbSize;
+ DWORD flags;
+ HWND hwndActive;
+ HWND hwndFocus;
+ HWND hwndCapture;
+ HWND hwndMenuOwner;
+ HWND hwndMoveSize;
+ HWND hwndCaret;
+ RECT rcCaret;
+} GUITHREADINFO, *PGUITHREADINFO, *LPGUITHREADINFO;
+
+#define GUI_CARETBLINKING 0x00000001
+#define GUI_INMOVESIZE 0x00000002
+#define GUI_INMENUMODE 0x00000004
+#define GUI_SYSTEMMENUMODE 0x00000008
+#define GUI_POPUPMENUMODE 0x00000010
+#define GUI_16BITTASK 0x00000020
+
+
+/***** Dialogs *****/
+
+/* Gcc on Solaris has a version of this that we don't care about */
+#undef FSHIFT
+
+#define FVIRTKEY TRUE /* Assumed to be == TRUE */
+#define FNOINVERT 0x02
+#define FSHIFT 0x04
+#define FCONTROL 0x08
+#define FALT 0x10
+
+
+typedef struct tagANIMATIONINFO
+{
+ UINT cbSize;
+ INT iMinAnimate;
+} ANIMATIONINFO, *LPANIMATIONINFO;
+
+typedef struct tagNMHDR
+{
+ HWND hwndFrom;
+ UINT_PTR idFrom;
+ UINT code;
+} NMHDR, *LPNMHDR;
+
+typedef struct tagDRAWTEXTPARAMS
+{
+ UINT cbSize;
+ INT iTabLength;
+ INT iLeftMargin;
+ INT iRightMargin;
+ UINT uiLengthDrawn;
+} DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
+
+typedef struct
+{
+ LPARAM lParam;
+ WPARAM wParam;
+ UINT message;
+ HWND hwnd;
+} CWPSTRUCT, *PCWPSTRUCT, *LPCWPSTRUCT;
+
+typedef struct
+{
+ LRESULT lResult;
+ LPARAM lParam;
+ WPARAM wParam;
+ DWORD message;
+ HWND hwnd;
+} CWPRETSTRUCT, *PCWPRETSTRUCT, *LPCWPRETSTRUCT;
+
+typedef struct tagWINDOWPLACEMENT
+{
+ UINT length;
+ UINT flags;
+ UINT showCmd;
+ POINT ptMinPosition;
+ POINT ptMaxPosition;
+ RECT rcNormalPosition;
+} WINDOWPLACEMENT, *PWINDOWPLACEMENT, *LPWINDOWPLACEMENT;
+
+
+ /* WINDOWPLACEMENT flags */
+#define WPF_SETMINPOSITION 0x0001
+#define WPF_RESTORETOMAXIMIZED 0x0002
+
+/***** Dialogs *****/
+
+#define IS_INTRESOURCE(x) (((ULONG_PTR)(x) >> 16) == 0)
+#define MAKEINTRESOURCEA(i) (LPSTR)((ULONG_PTR)((WORD)(i)))
+#define MAKEINTRESOURCEW(i) (LPWSTR)((ULONG_PTR)((WORD)(i)))
+
+#ifndef RC_INVOKED
+# ifdef WINE_NO_UNICODE_MACROS /* force using a cast */
+# define MAKEINTRESOURCE(i) ((ULONG_PTR)((WORD)(i)))
+# else
+# define MAKEINTRESOURCE WINELIB_NAME_AW(MAKEINTRESOURCE)
+# endif
+#endif
+
+/* Predefined resource types */
+#define RT_CURSOR MAKEINTRESOURCE(1)
+#define RT_BITMAP MAKEINTRESOURCE(2)
+#define RT_ICON MAKEINTRESOURCE(3)
+#define RT_MENU MAKEINTRESOURCE(4)
+#define RT_DIALOG MAKEINTRESOURCE(5)
+#define RT_STRING MAKEINTRESOURCE(6)
+#define RT_FONTDIR MAKEINTRESOURCE(7)
+#define RT_FONT MAKEINTRESOURCE(8)
+#define RT_ACCELERATOR MAKEINTRESOURCE(9)
+#define RT_RCDATA MAKEINTRESOURCE(10)
+#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
+#define RT_GROUP_CURSOR MAKEINTRESOURCE(12)
+#define RT_GROUP_ICON MAKEINTRESOURCE(14)
+#define RT_VERSION MAKEINTRESOURCE(16)
+#define RT_DLGINCLUDE MAKEINTRESOURCE(17)
+#define RT_PLUGPLAY MAKEINTRESOURCE(19)
+#define RT_VXD MAKEINTRESOURCE(20)
+#define RT_ANICURSOR MAKEINTRESOURCE(21)
+#define RT_ANIICON MAKEINTRESOURCE(22)
+#define RT_HTML MAKEINTRESOURCE(23)
+
+#ifdef RC_INVOKED
+#define RT_MANIFEST 24
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID 1
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID 16
+#else
+#define RT_MANIFEST MAKEINTRESOURCE(24)
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16)
+#endif
+
+ /* cbWndExtra bytes for dialog class */
+#define DLGWINDOWEXTRA 30
+
+
+ /* Dialog messages */
+#define DM_GETDEFID (WM_USER+0)
+#define DM_SETDEFID (WM_USER+1)
+#define DM_REPOSITION (WM_USER+2)
+
+#define DC_HASDEFID 0x534b
+
+/* Bit flags for DRAWITEMSTRUCT.CtlType */
+#define ODT_MENU 1
+#define ODT_LISTBOX 2
+#define ODT_COMBOBOX 3
+#define ODT_BUTTON 4
+#define ODT_STATIC 5
+
+/* Bit flags for DRAWITEMSTRUCT.itemAction */
+#define ODA_DRAWENTIRE 0x1
+#define ODA_SELECT 0x2
+#define ODA_FOCUS 0x4
+
+/* Bit flags for DRAWITEMSTRUCT.itemState */
+#define ODS_SELECTED 0x0001 /* Selected */
+#define ODS_GRAYED 0x0002 /* Grayed (Menus only) */
+#define ODS_DISABLED 0x0004 /* Disabled */
+#define ODS_CHECKED 0x0008 /* Checked (Menus only) */
+#define ODS_FOCUS 0x0010 /* Has focus */
+#define ODS_DEFAULT 0x0020 /* Default */
+#define ODS_HOTLIGHT 0x0040 /* Highlighted when under mouse */
+#define ODS_INACTIVE 0x0080 /* Inactive */
+#define ODS_NOACCEL 0x0100 /* No keyboard accelerator */
+#define ODS_NOFOCUSRECT 0x0200 /* No focus rectangle */
+#define ODS_COMBOBOXEDIT 0x1000 /* Edit of a combo box */
+
+#ifndef NOCOLOR
+
+#define COLOR_SCROLLBAR 0
+#define COLOR_BACKGROUND 1
+#define COLOR_ACTIVECAPTION 2
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_MENU 4
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_MENUTEXT 7
+#define COLOR_WINDOWTEXT 8
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_INACTIVEBORDER 11
+#define COLOR_APPWORKSPACE 12
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
+#define COLOR_BTNFACE 15
+#define COLOR_BTNSHADOW 16
+#define COLOR_GRAYTEXT 17
+#define COLOR_BTNTEXT 18
+#define COLOR_INACTIVECAPTIONTEXT 19
+#define COLOR_BTNHIGHLIGHT 20
+/* win95 colors */
+#define COLOR_3DDKSHADOW 21
+#define COLOR_3DLIGHT 22
+#define COLOR_INFOTEXT 23
+#define COLOR_INFOBK 24
+#define COLOR_DESKTOP COLOR_BACKGROUND
+#define COLOR_3DFACE COLOR_BTNFACE
+#define COLOR_3DSHADOW COLOR_BTNSHADOW
+#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
+/* win98 colors */
+#define COLOR_ALTERNATEBTNFACE 25 /* undocumented, constant name unknown */
+#define COLOR_HOTLIGHT 26
+#define COLOR_GRADIENTACTIVECAPTION 27
+#define COLOR_GRADIENTINACTIVECAPTION 28
+/* win2k/xp colors */
+#define COLOR_MENUHILIGHT 29
+#define COLOR_MENUBAR 30
+
+ /* WM_CTLCOLOR values */
+#define CTLCOLOR_MSGBOX 0
+#define CTLCOLOR_EDIT 1
+#define CTLCOLOR_LISTBOX 2
+#define CTLCOLOR_BTN 3
+#define CTLCOLOR_DLG 4
+#define CTLCOLOR_SCROLLBAR 5
+#define CTLCOLOR_STATIC 6
+
+WINUSERAPI COLORREF WINAPI GetSysColor(INT);
+WINUSERAPI BOOL WINAPI SetSysColors(INT,const INT*,const COLORREF*);
+
+#endif /* NOCOLOR */
+
+/* IMESTATUS type */
+#define EMSIS_COMPOSITIONSTRING 1
+
+/* IMESTATUS type specific data */
+#define EIMES_GETCOMPSTRATONCE 0x0001
+#define EIMES_CANCELCOMPSTRINFOCUS 0x0002
+#define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004
+
+/* EDITWORDBREAKPROC code values */
+#define WB_LEFT 0
+#define WB_RIGHT 1
+#define WB_ISDELIMITER 2
+
+/* Edit control notification codes */
+#define EN_SETFOCUS 0x0100
+#define EN_KILLFOCUS 0x0200
+#define EN_CHANGE 0x0300
+#define EN_UPDATE 0x0400
+#define EN_ERRSPACE 0x0500
+#define EN_MAXTEXT 0x0501
+#define EN_HSCROLL 0x0601
+#define EN_VSCROLL 0x0602
+
+/* New since win95 : EM_SETMARGIN parameters */
+#define EC_LEFTMARGIN 0x0001
+#define EC_RIGHTMARGIN 0x0002
+#define EC_USEFONTINFO 0xffff
+
+
+ /* GetSystemMetrics() codes */
+#define SM_CXSCREEN 0
+#define SM_CYSCREEN 1
+#define SM_CXVSCROLL 2
+#define SM_CYHSCROLL 3
+#define SM_CYCAPTION 4
+#define SM_CXBORDER 5
+#define SM_CYBORDER 6
+#define SM_CXDLGFRAME 7
+#define SM_CYDLGFRAME 8
+#define SM_CYVTHUMB 9
+#define SM_CXHTHUMB 10
+#define SM_CXICON 11
+#define SM_CYICON 12
+#define SM_CXCURSOR 13
+#define SM_CYCURSOR 14
+#define SM_CYMENU 15
+#define SM_CXFULLSCREEN 16
+#define SM_CYFULLSCREEN 17
+#define SM_CYKANJIWINDOW 18
+#define SM_MOUSEPRESENT 19
+#define SM_CYVSCROLL 20
+#define SM_CXHSCROLL 21
+#define SM_DEBUG 22
+#define SM_SWAPBUTTON 23
+#define SM_RESERVED1 24
+#define SM_RESERVED2 25
+#define SM_RESERVED3 26
+#define SM_RESERVED4 27
+#define SM_CXMIN 28
+#define SM_CYMIN 29
+#define SM_CXSIZE 30
+#define SM_CYSIZE 31
+#define SM_CXFRAME 32
+#define SM_CYFRAME 33
+#define SM_CXMINTRACK 34
+#define SM_CYMINTRACK 35
+#define SM_CXDOUBLECLK 36
+#define SM_CYDOUBLECLK 37
+#define SM_CXICONSPACING 38
+#define SM_CYICONSPACING 39
+#define SM_MENUDROPALIGNMENT 40
+#define SM_PENWINDOWS 41
+#define SM_DBCSENABLED 42
+#define SM_CMOUSEBUTTONS 43
+#define SM_CXFIXEDFRAME SM_CXDLGFRAME
+#define SM_CYFIXEDFRAME SM_CYDLGFRAME
+#define SM_CXSIZEFRAME SM_CXFRAME
+#define SM_CYSIZEFRAME SM_CYFRAME
+#define SM_SECURE 44
+#define SM_CXEDGE 45
+#define SM_CYEDGE 46
+#define SM_CXMINSPACING 47
+#define SM_CYMINSPACING 48
+#define SM_CXSMICON 49
+#define SM_CYSMICON 50
+#define SM_CYSMCAPTION 51
+#define SM_CXSMSIZE 52
+#define SM_CYSMSIZE 53
+#define SM_CXMENUSIZE 54
+#define SM_CYMENUSIZE 55
+#define SM_ARRANGE 56
+#define SM_CXMINIMIZED 57
+#define SM_CYMINIMIZED 58
+#define SM_CXMAXTRACK 59
+#define SM_CYMAXTRACK 60
+#define SM_CXMAXIMIZED 61
+#define SM_CYMAXIMIZED 62
+#define SM_NETWORK 63
+#define SM_CLEANBOOT 67
+#define SM_CXDRAG 68
+#define SM_CYDRAG 69
+#define SM_SHOWSOUNDS 70
+#define SM_CXMENUCHECK 71
+#define SM_CYMENUCHECK 72
+#define SM_SLOWMACHINE 73
+#define SM_MIDEASTENABLED 74
+#define SM_MOUSEWHEELPRESENT 75
+#define SM_XVIRTUALSCREEN 76
+#define SM_YVIRTUALSCREEN 77
+#define SM_CXVIRTUALSCREEN 78
+#define SM_CYVIRTUALSCREEN 79
+#define SM_CMONITORS 80
+#define SM_SAMEDISPLAYFORMAT 81
+#define SM_IMMENABLED 82
+#define SM_CXFOCUSBORDER 83
+#define SM_CYFOCUSBORDER 84
+#define SM_TABLETPC 86
+#define SM_MEDIACENTER 87
+#define SM_STARTER 88
+#define SM_SERVERR2 89
+#define SM_CMETRICS 90
+#define SM_MOUSEHORIZONTALWHEELPRESENT 91
+#define SM_CXPADDEDBORDER 92
+
+#define SM_REMOTESESSION 0x1000
+#define SM_SHUTTINGDOWN 0x2000
+#define SM_REMOTECONTROL 0x2001
+#define SM_CARETBLINKINGENABLED 0x2002
+
+#define PMB_ACTIVE 0x00000001
+
+
+/* wParam for WM_POWERBROADCAST */
+#define PBT_APMQUERYSUSPEND 0x0000
+#define PBT_APMQUERYSTANDBY 0x0001
+#define PBT_APMQUERYSUSPENDFAILED 0x0002
+#define PBT_APMQUERYSTANDBYFAILED 0x0003
+#define PBT_APMSUSPEND 0x0004
+#define PBT_APMSTANDBY 0x0005
+#define PBT_APMRESUMECRITICAL 0x0006
+#define PBT_APMRESUMESUSPEND 0x0007
+#define PBT_APMRESUMESTANDBY 0x0008
+#define PBT_APMBATTERYLOW 0x0009
+#define PBT_APMPOWERSTATUSCHANGE 0x000A
+#define PBT_APMOEMEVENT 0x000B
+#define PBT_APMRESUMEAUTOMATIC 0x0012
+
+#define PBTF_APMRESUMEFROMFAILURE 0x00000001
+
+
+/* MsgWaitForMultipleObjectsEx flags */
+#define MWMO_WAITALL 0x0001
+#define MWMO_ALERTABLE 0x0002
+#define MWMO_INPUTAVAILABLE 0x0004
+
+/* WM_GETDLGCODE values */
+#define DLGC_WANTARROWS 0x0001
+#define DLGC_WANTTAB 0x0002
+#define DLGC_WANTALLKEYS 0x0004
+#define DLGC_WANTMESSAGE 0x0004
+#define DLGC_HASSETSEL 0x0008
+#define DLGC_DEFPUSHBUTTON 0x0010
+#define DLGC_UNDEFPUSHBUTTON 0x0020
+#define DLGC_RADIOBUTTON 0x0040
+#define DLGC_WANTCHARS 0x0080
+#define DLGC_STATIC 0x0100
+#define DLGC_BUTTON 0x2000
+
+/* Used for EnumDisplaySettingsEx */
+#define ENUM_CURRENT_SETTINGS ((DWORD) -1)
+#define ENUM_REGISTRY_SETTINGS ((DWORD) -2)
+
+#define EDS_RAWMODE 0x00000002
+#define EDS_ROTATEDMODE 0x00000004
+
+/* Used for PrintWindow */
+#define PW_CLIENTONLY 0x00000001
+
+/****** Window classes ******/
+
+typedef struct tagCREATESTRUCTA
+{
+ LPVOID lpCreateParams;
+ HINSTANCE hInstance;
+ HMENU hMenu;
+ HWND hwndParent;
+ INT cy;
+ INT cx;
+ INT y;
+ INT x;
+ LONG style;
+ LPCSTR lpszName;
+ LPCSTR lpszClass;
+ DWORD dwExStyle;
+} CREATESTRUCTA, *LPCREATESTRUCTA;
+
+typedef struct tagCREATESTRUCTW
+{
+ LPVOID lpCreateParams;
+ HINSTANCE hInstance;
+ HMENU hMenu;
+ HWND hwndParent;
+ INT cy;
+ INT cx;
+ INT y;
+ INT x;
+ LONG style;
+ LPCWSTR lpszName;
+ LPCWSTR lpszClass;
+ DWORD dwExStyle;
+} CREATESTRUCTW, *LPCREATESTRUCTW;
+
+DECL_WINELIB_TYPE_AW(CREATESTRUCT)
+DECL_WINELIB_TYPE_AW(LPCREATESTRUCT)
+
+typedef struct tagPAINTSTRUCT
+{
+ HDC hdc;
+ BOOL fErase;
+ RECT rcPaint;
+ BOOL fRestore;
+ BOOL fIncUpdate;
+ BYTE rgbReserved[32];
+} PAINTSTRUCT, *PPAINTSTRUCT, *LPPAINTSTRUCT;
+
+typedef struct tagCLIENTCREATESTRUCT
+{
+ HMENU hWindowMenu;
+ UINT idFirstChild;
+} CLIENTCREATESTRUCT, *LPCLIENTCREATESTRUCT;
+
+
+typedef struct tagMDICREATESTRUCTA
+{
+ LPCSTR szClass;
+ LPCSTR szTitle;
+ HINSTANCE hOwner;
+ INT x;
+ INT y;
+ INT cx;
+ INT cy;
+ DWORD style;
+ LPARAM lParam;
+} MDICREATESTRUCTA, *LPMDICREATESTRUCTA;
+
+typedef struct tagMDICREATESTRUCTW
+{
+ LPCWSTR szClass;
+ LPCWSTR szTitle;
+ HINSTANCE hOwner;
+ INT x;
+ INT y;
+ INT cx;
+ INT cy;
+ DWORD style;
+ LPARAM lParam;
+} MDICREATESTRUCTW, *LPMDICREATESTRUCTW;
+
+DECL_WINELIB_TYPE_AW(MDICREATESTRUCT)
+DECL_WINELIB_TYPE_AW(LPMDICREATESTRUCT)
+
+#define MDITILE_VERTICAL 0x0000
+#define MDITILE_HORIZONTAL 0x0001
+#define MDITILE_SKIPDISABLED 0x0002
+#define MDITILE_ZORDER 0x0004
+
+#define MDIS_ALLCHILDSTYLES 0x0001
+
+typedef struct tagSTYLESTRUCT {
+ DWORD styleOld;
+ DWORD styleNew;
+} STYLESTRUCT, *LPSTYLESTRUCT;
+
+#define WC_DIALOG MAKEINTATOM(0x8002)
+
+ /* Offsets for GetWindowLong() and GetWindowWord() */
+#define GWL_EXSTYLE (-20)
+#define GWL_STYLE (-16)
+#if !defined _WIN64 && !defined __WINESRC__
+# define GWL_USERDATA (-21)
+# define GWL_ID (-12)
+# define GWL_HWNDPARENT (-8)
+# define GWL_HINSTANCE (-6)
+# define GWL_WNDPROC (-4)
+# define DWL_MSGRESULT 0
+# define DWL_DLGPROC 4
+# define DWL_USER 8
+#endif /* _WIN64 && __WINESRC__ */
+
+ /* Offsets for GetWindowLongPtr() and SetWindowLongPtr() */
+#define GWLP_USERDATA (-21)
+#define GWLP_ID (-12)
+#define GWLP_HWNDPARENT (-8)
+#define GWLP_HINSTANCE (-6)
+#define GWLP_WNDPROC (-4)
+#define DWLP_MSGRESULT 0
+#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
+#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)
+
+ /* GetWindow() constants */
+#define GW_HWNDFIRST 0
+#define GW_HWNDLAST 1
+#define GW_HWNDNEXT 2
+#define GW_HWNDPREV 3
+#define GW_OWNER 4
+#define GW_CHILD 5
+
+/* GetAncestor() constants */
+#define GA_PARENT 1
+#define GA_ROOT 2
+#define GA_ROOTOWNER 3
+
+ /* WM_GETMINMAXINFO struct */
+typedef struct tagMINMAXINFO
+{
+ POINT ptReserved;
+ POINT ptMaxSize;
+ POINT ptMaxPosition;
+ POINT ptMinTrackSize;
+ POINT ptMaxTrackSize;
+} MINMAXINFO, *PMINMAXINFO, *LPMINMAXINFO;
+
+
+ /* RedrawWindow() flags */
+#define RDW_INVALIDATE 0x0001
+#define RDW_INTERNALPAINT 0x0002
+#define RDW_ERASE 0x0004
+#define RDW_VALIDATE 0x0008
+#define RDW_NOINTERNALPAINT 0x0010
+#define RDW_NOERASE 0x0020
+#define RDW_NOCHILDREN 0x0040
+#define RDW_ALLCHILDREN 0x0080
+#define RDW_UPDATENOW 0x0100
+#define RDW_ERASENOW 0x0200
+#define RDW_FRAME 0x0400
+#define RDW_NOFRAME 0x0800
+
+/* debug flags */
+#define DBGFILL_ALLOC 0xfd
+#define DBGFILL_FREE 0xfb
+#define DBGFILL_BUFFER 0xf9
+#define DBGFILL_STACK 0xf7
+
+ /* WM_WINDOWPOSCHANGING/CHANGED struct */
+typedef struct tagWINDOWPOS
+{
+ HWND hwnd;
+ HWND hwndInsertAfter;
+ INT x;
+ INT y;
+ INT cx;
+ INT cy;
+ UINT flags;
+} WINDOWPOS, *PWINDOWPOS, *LPWINDOWPOS;
+
+
+ /* WM_NCCALCSIZE parameter structure */
+typedef struct
+{
+ RECT rgrc[3];
+ WINDOWPOS *lppos;
+} NCCALCSIZE_PARAMS, *LPNCCALCSIZE_PARAMS;
+
+
+#define PRF_CHECKVISIBLE __MSABI_LONG(0x00000001)
+#define PRF_NONCLIENT __MSABI_LONG(0x00000002)
+#define PRF_CLIENT __MSABI_LONG(0x00000004)
+#define PRF_ERASEBKGND __MSABI_LONG(0x00000008)
+#define PRF_CHILDREN __MSABI_LONG(0x00000010)
+#define PRF_OWNED __MSABI_LONG(0x00000020)
+
+ /* Offsets for GetClassLong() and GetClassWord() */
+#if !defined _WIN64 && !defined __WINESRC__
+# define GCL_MENUNAME (-8)
+# define GCL_HBRBACKGROUND (-10)
+# define GCL_HCURSOR (-12)
+# define GCL_HICON (-14)
+# define GCL_HMODULE (-16)
+# define GCL_WNDPROC (-24)
+# define GCL_HICONSM (-34)
+#endif /* _WIN64 && __WINESRC__ */
+
+#define GCL_CBWNDEXTRA (-18)
+#define GCL_CBCLSEXTRA (-20)
+#define GCL_STYLE (-26)
+#define GCW_ATOM (-32)
+
+#define GCLP_MENUNAME (-8)
+#define GCLP_HBRBACKGROUND (-10)
+#define GCLP_HCURSOR (-12)
+#define GCLP_HICON (-14)
+#define GCLP_HMODULE (-16)
+#define GCLP_WNDPROC (-24)
+#define GCLP_HICONSM (-34)
+
+/* BroadcastSystemMessage flags */
+#define BSM_ALLCOMPONENTS 0x00000000
+#define BSM_VXDS 0x00000001
+#define BSM_NETDRIVER 0x00000002
+#define BSM_INSTALLABLEDRIVERS 0x00000004
+#define BSM_APPLICATIONS 0x00000008
+#define BSM_ALLDESKTOPS 0x00000010
+
+#define BSF_QUERY 0x00000001
+#define BSF_IGNORECURRENTTASK 0x00000002
+#define BSF_FLUSHDISK 0x00000004
+#define BSF_NOHANG 0x00000008
+#define BSF_POSTMESSAGE 0x00000010
+#define BSF_FORCEIFHUNG 0x00000020
+#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
+#define BSF_ALLOWSFW 0x00000080
+#define BSF_SENDNOTIFYMESSAGE 0x00000100
+#define BSF_RETURNHDESK 0x00000200
+#define BSF_LUID 0x00000400
+
+#define BROADCAST_QUERY_DENY 0x424D5144
+
+/***** Window hooks *****/
+
+ /* Hook values */
+#define WH_MIN (-1)
+#define WH_MSGFILTER (-1)
+#define WH_JOURNALRECORD 0
+#define WH_JOURNALPLAYBACK 1
+#define WH_KEYBOARD 2
+#define WH_GETMESSAGE 3
+#define WH_CALLWNDPROC 4
+#define WH_CBT 5
+#define WH_SYSMSGFILTER 6
+#define WH_MOUSE 7
+#define WH_HARDWARE 8
+#define WH_DEBUG 9
+#define WH_SHELL 10
+#define WH_FOREGROUNDIDLE 11
+#define WH_CALLWNDPROCRET 12
+#define WH_KEYBOARD_LL 13
+#define WH_MOUSE_LL 14
+#define WH_MAX 14
+
+#define WH_MINHOOK WH_MIN
+#define WH_MAXHOOK WH_MAX
+
+ /* Hook action codes */
+#define HC_ACTION 0
+#define HC_GETNEXT 1
+#define HC_SKIP 2
+#define HC_NOREMOVE 3
+#define HC_NOREM HC_NOREMOVE
+#define HC_SYSMODALON 4
+#define HC_SYSMODALOFF 5
+
+ /* CallMsgFilter() values */
+#define MSGF_DIALOGBOX 0
+#define MSGF_MESSAGEBOX 1
+#define MSGF_MENU 2
+#define MSGF_MOVE 3
+#define MSGF_SIZE 4
+#define MSGF_SCROLLBAR 5
+#define MSGF_NEXTWINDOW 6
+#define MSGF_MAX 8
+#define MSGF_USER 0x1000
+#define MSGF_DDEMGR 0x8001
+
+typedef struct tagWNDCLASSA
+{
+ UINT style;
+ WNDPROC lpfnWndProc;
+ INT cbClsExtra;
+ INT cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCSTR lpszMenuName;
+ LPCSTR lpszClassName;
+} WNDCLASSA, *PWNDCLASSA, *LPWNDCLASSA;
+
+typedef struct tagWNDCLASSW
+{
+ UINT style;
+ WNDPROC lpfnWndProc;
+ INT cbClsExtra;
+ INT cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCWSTR lpszMenuName;
+ LPCWSTR lpszClassName;
+} WNDCLASSW, *PWNDCLASSW, *LPWNDCLASSW;
+
+DECL_WINELIB_TYPE_AW(WNDCLASS)
+DECL_WINELIB_TYPE_AW(PWNDCLASS)
+DECL_WINELIB_TYPE_AW(LPWNDCLASS)
+
+typedef struct tagCOPYDATASTRUCT {
+ ULONG_PTR dwData;
+ DWORD cbData;
+ PVOID lpData;
+} COPYDATASTRUCT, *PCOPYDATASTRUCT;
+
+typedef struct tagMDINEXTMENU {
+ HMENU hmenuIn;
+ HMENU hmenuNext;
+ HWND hwndNext;
+} MDINEXTMENU, *PMDINEXTMENU, *LPMDINEXTMENU;
+
+typedef struct tagMULTIKEYHELPA
+{
+ DWORD mkSize;
+ CHAR mkKeylist;
+ CHAR szKeyphrase[1];
+} MULTIKEYHELPA, *PMULTIKEYHELPA, *LPMULTIKEYHELPA;
+
+typedef struct tagMULTIKEYHELPW
+{
+ DWORD mkSize;
+ WCHAR mkKeylist;
+ WCHAR szKeyphrase[1];
+} MULTIKEYHELPW, *PMULTIKEYHELPW, *LPMULTIKEYHELPW;
+
+DECL_WINELIB_TYPE_AW(MULTIKEYHELP)
+DECL_WINELIB_TYPE_AW(PMULTIKEYHELP)
+DECL_WINELIB_TYPE_AW(LPMULTIKEYHELP)
+
+typedef struct tagHELPWININFOA {
+ int wStructSize;
+ int x;
+ int y;
+ int dx;
+ int dy;
+ int wMax;
+ CHAR rgchMember[2];
+} HELPWININFOA, *PHELPWININFOA, *LPHELPWININFOA;
+
+typedef struct tagHELPWININFOW {
+ int wStructSize;
+ int x;
+ int y;
+ int dx;
+ int dy;
+ int wMax;
+ WCHAR rgchMember[2];
+} HELPWININFOW, *PHELPWININFOW, *LPHELPWININFOW;
+
+DECL_WINELIB_TYPE_AW(HELPWININFO)
+DECL_WINELIB_TYPE_AW(PHELPWININFO)
+DECL_WINELIB_TYPE_AW(LPHELPWININFO)
+
+
+ /* ChangeDisplaySettings return codes */
+
+#define DISP_CHANGE_SUCCESSFUL 0
+#define DISP_CHANGE_RESTART 1
+#define DISP_CHANGE_FAILED (-1)
+#define DISP_CHANGE_BADMODE (-2)
+#define DISP_CHANGE_NOTUPDATED (-3)
+#define DISP_CHANGE_BADFLAGS (-4)
+#define DISP_CHANGE_BADPARAM (-5)
+#define DISP_CHANGE_BADDUALVIEW (-6)
+
+/* ChangeDisplaySettings.dwFlags */
+#define CDS_UPDATEREGISTRY 0x00000001
+#define CDS_TEST 0x00000002
+#define CDS_FULLSCREEN 0x00000004
+#define CDS_GLOBAL 0x00000008
+#define CDS_SET_PRIMARY 0x00000010
+#define CDS_VIDEOPARAMETERS 0x00000020
+#define CDS_NORESET 0x10000000
+#define CDS_SETRECT 0x20000000
+#define CDS_RESET 0x40000000
+
+typedef struct tagWNDCLASSEXA
+{
+ UINT cbSize;
+ UINT style;
+ WNDPROC lpfnWndProc;
+ INT cbClsExtra;
+ INT cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCSTR lpszMenuName;
+ LPCSTR lpszClassName;
+ HICON hIconSm;
+} WNDCLASSEXA, *PWNDCLASSEXA, *LPWNDCLASSEXA;
+
+typedef struct tagWNDCLASSEXW
+{
+ UINT cbSize;
+ UINT style;
+ WNDPROC lpfnWndProc;
+ INT cbClsExtra;
+ INT cbWndExtra;
+ HINSTANCE hInstance;
+ HICON hIcon;
+ HCURSOR hCursor;
+ HBRUSH hbrBackground;
+ LPCWSTR lpszMenuName;
+ LPCWSTR lpszClassName;
+ HICON hIconSm;
+} WNDCLASSEXW, *PWNDCLASSEXW, *LPWNDCLASSEXW;
+
+DECL_WINELIB_TYPE_AW(WNDCLASSEX)
+DECL_WINELIB_TYPE_AW(PWNDCLASSEX)
+DECL_WINELIB_TYPE_AW(LPWNDCLASSEX)
+
+typedef struct tagMSG
+{
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+} MSG, *PMSG, *LPMSG;
+
+#define POINTSTOPOINT(pt, pts) { (pt).x = (pts).x; (pt).y = (pts).y; }
+#define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x), (short)((pt).y)))
+
+#define MAKELPARAM(low,high) ((LPARAM)(DWORD)MAKELONG(low,high))
+#define MAKEWPARAM(low,high) ((WPARAM)(DWORD)MAKELONG(low,high))
+#define MAKELRESULT(low,high) ((LRESULT)(DWORD)MAKELONG(low,high))
+
+/* Cursors / Icons */
+
+typedef struct _ICONINFO {
+ BOOL fIcon;
+ DWORD xHotspot;
+ DWORD yHotspot;
+ HBITMAP hbmMask;
+ HBITMAP hbmColor;
+} ICONINFO, *PICONINFO;
+
+typedef struct _ICONINFOEXA
+{
+ DWORD cbSize;
+ BOOL fIcon;
+ DWORD xHotspot;
+ DWORD yHotspot;
+ HBITMAP hbmMask;
+ HBITMAP hbmColor;
+ WORD wResID;
+ CHAR szModName[MAX_PATH];
+ CHAR szResName[MAX_PATH];
+} ICONINFOEXA, *PICONINFOEXA;
+
+typedef struct _ICONINFOEXW
+{
+ DWORD cbSize;
+ BOOL fIcon;
+ DWORD xHotspot;
+ DWORD yHotspot;
+ HBITMAP hbmMask;
+ HBITMAP hbmColor;
+ WORD wResID;
+ WCHAR szModName[MAX_PATH];
+ WCHAR szResName[MAX_PATH];
+} ICONINFOEXW, *PICONINFOEXW;
+
+DECL_WINELIB_TYPE_AW(ICONINFOEX)
+DECL_WINELIB_TYPE_AW(PICONINFOEX)
+
+typedef struct tagCURSORINFO
+{
+ DWORD cbSize;
+ DWORD flags;
+ HCURSOR hCursor;
+ POINT ptScreenPos;
+} CURSORINFO, *PCURSORINFO, *LPCURSORINFO;
+
+#define CURSOR_SHOWING 0x00000001
+#define CURSOR_SUPPRESSED 0x00000002
+
+/* this is the 6 byte accel struct used in Win32 when presented to the user */
+typedef struct tagACCEL
+{
+#ifdef WORDS_BIGENDIAN
+ WORD fVirt;
+ WORD key;
+ DWORD cmd;
+#else
+ BYTE fVirt;
+ WORD key;
+ WORD cmd;
+#endif
+} ACCEL, *LPACCEL;
+
+
+/* Flags for TrackPopupMenu */
+#define TPM_LEFTBUTTON 0x0000
+#define TPM_RECURSE 0x0001
+#define TPM_RIGHTBUTTON 0x0002
+#define TPM_LEFTALIGN 0x0000
+#define TPM_CENTERALIGN 0x0004
+#define TPM_RIGHTALIGN 0x0008
+#define TPM_TOPALIGN 0x0000
+#define TPM_VCENTERALIGN 0x0010
+#define TPM_BOTTOMALIGN 0x0020
+#define TPM_HORIZONTAL 0x0000
+#define TPM_VERTICAL 0x0040
+#define TPM_NONOTIFY 0x0080
+#define TPM_RETURNCMD 0x0100
+#define TPM_HORPOSANIMATION 0x0400
+#define TPM_HORNEGANIMATION 0x0800
+#define TPM_VERPOSANIMATION 0x1000
+#define TPM_VERNEGANIMATION 0x2000
+#define TPM_NOANIMATION 0x4000
+#define TPM_LAYOUTRTL 0x8000
+
+typedef struct tagTPMPARAMS
+{
+ UINT cbSize;
+ RECT rcExclude;
+} TPMPARAMS, *LPTPMPARAMS;
+
+
+/*
+ * Combobox information
+ */
+typedef struct tagCOMBOBOXINFO
+{
+ DWORD cbSize;
+ RECT rcItem;
+ RECT rcButton;
+ DWORD stateButton;
+ HWND hwndCombo;
+ HWND hwndItem;
+ HWND hwndList;
+} COMBOBOXINFO, *PCOMBOBOXINFO, *LPCOMBOBOXINFO;
+
+typedef struct tagMENUITEMINFOA {
+ UINT cbSize;
+ UINT fMask;
+ UINT fType;
+ UINT fState;
+ UINT wID;
+ HMENU hSubMenu;
+ HBITMAP hbmpChecked;
+ HBITMAP hbmpUnchecked;
+ ULONG_PTR dwItemData;
+ LPSTR dwTypeData;
+ UINT cch;
+ HBITMAP hbmpItem;
+} MENUITEMINFOA, *LPMENUITEMINFOA;
+
+typedef struct tagMENUITEMINFOW {
+ UINT cbSize;
+ UINT fMask;
+ UINT fType;
+ UINT fState;
+ UINT wID;
+ HMENU hSubMenu;
+ HBITMAP hbmpChecked;
+ HBITMAP hbmpUnchecked;
+ ULONG_PTR dwItemData;
+ LPWSTR dwTypeData;
+ UINT cch;
+ HBITMAP hbmpItem;
+} MENUITEMINFOW, *LPMENUITEMINFOW;
+
+DECL_WINELIB_TYPE_AW(MENUITEMINFO)
+DECL_WINELIB_TYPE_AW(LPMENUITEMINFO)
+typedef const MENUITEMINFOA *LPCMENUITEMINFOA;
+typedef const MENUITEMINFOW *LPCMENUITEMINFOW;
+DECL_WINELIB_TYPE_AW(LPCMENUITEMINFO)
+
+typedef struct tagMENUBARINFO {
+ DWORD cbSize;
+ RECT rcBar;
+ HMENU hMenu;
+ HWND hwndMenu;
+ BOOL fBarFocused:1;
+ BOOL fFocused:1;
+} MENUBARINFO, *PMENUBARINFO, *LPMENUBARINFO;
+
+typedef struct tagMENUINFO {
+ DWORD cbSize;
+ DWORD fMask;
+ DWORD dwStyle;
+ UINT cyMax;
+ HBRUSH hbrBack;
+ DWORD dwContextHelpID;
+ ULONG_PTR dwMenuData;
+} MENUINFO, *LPMENUINFO;
+
+typedef const MENUINFO *LPCMENUINFO;
+
+#define MIM_MAXHEIGHT 0x00000001
+#define MIM_BACKGROUND 0x00000002
+#define MIM_HELPID 0x00000004
+#define MIM_MENUDATA 0x00000008
+#define MIM_STYLE 0x00000010
+#define MIM_APPLYTOSUBMENUS 0x80000000
+
+#define MNS_NOCHECK 0x80000000
+#define MNS_MODELESS 0x40000000
+#define MNS_DRAGDROP 0x20000000
+#define MNS_AUTODISMISS 0x10000000
+#define MNS_NOTIFYBYPOS 0x08000000
+#define MNS_CHECKORBMP 0x04000000
+
+typedef struct {
+ WORD versionNumber;
+ WORD offset;
+} MENUITEMTEMPLATEHEADER, *PMENUITEMTEMPLATEHEADER;
+
+
+typedef struct {
+ WORD mtOption;
+ WORD mtID;
+ WCHAR mtString[1];
+} MENUITEMTEMPLATE, *PMENUITEMTEMPLATE;
+
+
+typedef VOID MENUTEMPLATE;
+typedef PVOID *LPMENUTEMPLATE;
+
+/* Field specifiers for MENUITEMINFO[AW] type. */
+#define MIIM_STATE 0x00000001
+#define MIIM_ID 0x00000002
+#define MIIM_SUBMENU 0x00000004
+#define MIIM_CHECKMARKS 0x00000008
+#define MIIM_TYPE 0x00000010
+#define MIIM_DATA 0x00000020
+#define MIIM_STRING 0x00000040
+#define MIIM_BITMAP 0x00000080
+#define MIIM_FTYPE 0x00000100
+
+#define HBMMENU_CALLBACK ((HBITMAP) -1)
+#define HBMMENU_SYSTEM ((HBITMAP) 1)
+#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)
+#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)
+#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)
+#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)
+#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)
+#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)
+#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)
+#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
+#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
+
+/* WM_H/VSCROLL commands */
+#define SB_LINEUP 0
+#define SB_LINELEFT 0
+#define SB_LINEDOWN 1
+#define SB_LINERIGHT 1
+#define SB_PAGEUP 2
+#define SB_PAGELEFT 2
+#define SB_PAGEDOWN 3
+#define SB_PAGERIGHT 3
+#define SB_THUMBPOSITION 4
+#define SB_THUMBTRACK 5
+#define SB_TOP 6
+#define SB_LEFT 6
+#define SB_BOTTOM 7
+#define SB_RIGHT 7
+#define SB_ENDSCROLL 8
+
+/* Scroll bar selection constants */
+#define SB_HORZ 0
+#define SB_VERT 1
+#define SB_CTL 2
+#define SB_BOTH 3
+
+/* EnableScrollBar() flags */
+#define ESB_ENABLE_BOTH 0x0000
+#define ESB_DISABLE_BOTH 0x0003
+
+#define ESB_DISABLE_LEFT 0x0001
+#define ESB_DISABLE_RIGHT 0x0002
+
+#define ESB_DISABLE_UP 0x0001
+#define ESB_DISABLE_DOWN 0x0002
+
+#define ESB_DISABLE_LTUP ESB_DISABLE_LEFT
+#define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT
+
+/* Static Control Messages */
+#define STM_SETICON 0x0170
+#define STM_GETICON 0x0171
+#define STM_SETIMAGE 0x0172
+#define STM_GETIMAGE 0x0173
+#define STM_MSGMAX 0x0174
+
+#define STN_CLICKED 0
+#define STN_DBLCLK 1
+#define STN_ENABLE 2
+#define STN_DISABLE 3
+
+/* Scrollbar messages */
+#define SBM_SETPOS 0x00e0
+#define SBM_GETPOS 0x00e1
+#define SBM_SETRANGE 0x00e2
+#define SBM_GETRANGE 0x00e3
+#define SBM_ENABLE_ARROWS 0x00e4
+#define SBM_SETRANGEREDRAW 0x00e6
+#define SBM_SETSCROLLINFO 0x00e9
+#define SBM_GETSCROLLINFO 0x00ea
+#define SBM_GETSCROLLBARINFO 0x00eb
+
+/* Scrollbar info */
+typedef struct tagSCROLLINFO
+{
+ UINT cbSize;
+ UINT fMask;
+ INT nMin;
+ INT nMax;
+ UINT nPage;
+ INT nPos;
+ INT nTrackPos;
+} SCROLLINFO, *LPSCROLLINFO;
+
+typedef const SCROLLINFO *LPCSCROLLINFO;
+
+#define CCHILDREN_SCROLLBAR 5
+
+typedef struct tagSCROLLBARINFO
+{
+ DWORD cbSize; /* Size of SCROLLBARINFO struct */
+ RECT rcScrollBar; /* Coordinates of the scroll bar */
+ INT dxyLineButton; /* Height or width */
+ INT xyThumbTop; /* Position of the top or the left */
+ INT xyThumbBottom; /* Position of the bottom or the right */
+ INT reserved;
+ DWORD rgstate[CCHILDREN_SCROLLBAR+1];
+} SCROLLBARINFO, *PSCROLLBARINFO, *LPSCROLLBARINFO;
+
+/* GetScrollInfo() flags */
+#define SIF_RANGE 0x0001
+#define SIF_PAGE 0x0002
+#define SIF_POS 0x0004
+#define SIF_DISABLENOSCROLL 0x0008
+#define SIF_TRACKPOS 0x0010
+#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
+
+/* Listbox messages */
+#define LB_ADDSTRING 0x0180
+#define LB_INSERTSTRING 0x0181
+#define LB_DELETESTRING 0x0182
+#define LB_SELITEMRANGEEX 0x0183
+#define LB_RESETCONTENT 0x0184
+#define LB_SETSEL 0x0185
+#define LB_SETCURSEL 0x0186
+#define LB_GETSEL 0x0187
+#define LB_GETCURSEL 0x0188
+#define LB_GETTEXT 0x0189
+#define LB_GETTEXTLEN 0x018a
+#define LB_GETCOUNT 0x018b
+#define LB_SELECTSTRING 0x018c
+#define LB_DIR 0x018d
+#define LB_GETTOPINDEX 0x018e
+#define LB_FINDSTRING 0x018f
+#define LB_GETSELCOUNT 0x0190
+#define LB_GETSELITEMS 0x0191
+#define LB_SETTABSTOPS 0x0192
+#define LB_GETHORIZONTALEXTENT 0x0193
+#define LB_SETHORIZONTALEXTENT 0x0194
+#define LB_SETCOLUMNWIDTH 0x0195
+#define LB_ADDFILE 0x0196
+#define LB_SETTOPINDEX 0x0197
+#define LB_GETITEMRECT 0x0198
+#define LB_GETITEMDATA 0x0199
+#define LB_SETITEMDATA 0x019a
+#define LB_SELITEMRANGE 0x019b
+#define LB_SETANCHORINDEX 0x019c
+#define LB_GETANCHORINDEX 0x019d
+#define LB_SETCARETINDEX 0x019e
+#define LB_GETCARETINDEX 0x019f
+#define LB_SETITEMHEIGHT 0x01a0
+#define LB_GETITEMHEIGHT 0x01a1
+#define LB_FINDSTRINGEXACT 0x01a2
+#define LB_CARETON 0x01a3
+#define LB_CARETOFF 0x01a4
+#define LB_SETLOCALE 0x01a5
+#define LB_GETLOCALE 0x01a6
+#define LB_SETCOUNT 0x01a7
+#define LB_INITSTORAGE 0x01a8
+#define LB_ITEMFROMPOINT 0x01a9
+#define LB_GETLISTBOXINFO 0x01b2
+#define LB_MSGMAX 0x01b3
+
+/* Listbox notification codes */
+#define LBN_ERRSPACE (-2)
+#define LBN_SELCHANGE 1
+#define LBN_DBLCLK 2
+#define LBN_SELCANCEL 3
+#define LBN_SETFOCUS 4
+#define LBN_KILLFOCUS 5
+
+/* Listbox message return values */
+#define LB_OKAY 0
+#define LB_ERR (-1)
+#define LB_ERRSPACE (-2)
+
+#define LB_CTLCODE __MSABI_LONG(0)
+
+/* Combo box messages */
+#define CB_GETEDITSEL 0x0140
+#define CB_LIMITTEXT 0x0141
+#define CB_SETEDITSEL 0x0142
+#define CB_ADDSTRING 0x0143
+#define CB_DELETESTRING 0x0144
+#define CB_DIR 0x0145
+#define CB_GETCOUNT 0x0146
+#define CB_GETCURSEL 0x0147
+#define CB_GETLBTEXT 0x0148
+#define CB_GETLBTEXTLEN 0x0149
+#define CB_INSERTSTRING 0x014a
+#define CB_RESETCONTENT 0x014b
+#define CB_FINDSTRING 0x014c
+#define CB_SELECTSTRING 0x014d
+#define CB_SETCURSEL 0x014e
+#define CB_SHOWDROPDOWN 0x014f
+#define CB_GETITEMDATA 0x0150
+#define CB_SETITEMDATA 0x0151
+#define CB_GETDROPPEDCONTROLRECT 0x0152
+#define CB_SETITEMHEIGHT 0x0153
+#define CB_GETITEMHEIGHT 0x0154
+#define CB_SETEXTENDEDUI 0x0155
+#define CB_GETEXTENDEDUI 0x0156
+#define CB_GETDROPPEDSTATE 0x0157
+#define CB_FINDSTRINGEXACT 0x0158
+#define CB_SETLOCALE 0x0159
+#define CB_GETLOCALE 0x015a
+#define CB_GETTOPINDEX 0x015b
+#define CB_SETTOPINDEX 0x015c
+#define CB_GETHORIZONTALEXTENT 0x015d
+#define CB_SETHORIZONTALEXTENT 0x015e
+#define CB_GETDROPPEDWIDTH 0x015f
+#define CB_SETDROPPEDWIDTH 0x0160
+#define CB_INITSTORAGE 0x0161
+#define CB_MULTIPLEADDSTRING 0x0163
+#define CB_GETCOMBOBOXINFO 0x0164
+#define CB_MSGMAX 0x0165
+
+/* Combo box notification codes */
+#define CBN_ERRSPACE (-1)
+#define CBN_SELCHANGE 1
+#define CBN_DBLCLK 2
+#define CBN_SETFOCUS 3
+#define CBN_KILLFOCUS 4
+#define CBN_EDITCHANGE 5
+#define CBN_EDITUPDATE 6
+#define CBN_DROPDOWN 7
+#define CBN_CLOSEUP 8
+#define CBN_SELENDOK 9
+#define CBN_SELENDCANCEL 10
+
+/* Combo box message return values */
+#define CB_OKAY 0
+#define CB_ERR (-1)
+#define CB_ERRSPACE (-2)
+
+#define MB_OK 0x00000000
+#define MB_OKCANCEL 0x00000001
+#define MB_ABORTRETRYIGNORE 0x00000002
+#define MB_YESNOCANCEL 0x00000003
+#define MB_YESNO 0x00000004
+#define MB_RETRYCANCEL 0x00000005
+#define MB_CANCELTRYCONTINUE 0x00000006
+#define MB_TYPEMASK 0x0000000F
+
+#define MB_ICONHAND 0x00000010
+#define MB_ICONQUESTION 0x00000020
+#define MB_ICONEXCLAMATION 0x00000030
+#define MB_ICONASTERISK 0x00000040
+#define MB_USERICON 0x00000080
+#define MB_ICONMASK 0x000000F0
+
+#define MB_ICONINFORMATION MB_ICONASTERISK
+#define MB_ICONSTOP MB_ICONHAND
+#define MB_ICONWARNING MB_ICONEXCLAMATION
+#define MB_ICONERROR MB_ICONHAND
+
+#define MB_DEFBUTTON1 0x00000000
+#define MB_DEFBUTTON2 0x00000100
+#define MB_DEFBUTTON3 0x00000200
+#define MB_DEFBUTTON4 0x00000300
+#define MB_DEFMASK 0x00000F00
+
+#define MB_APPLMODAL 0x00000000
+#define MB_SYSTEMMODAL 0x00001000
+#define MB_TASKMODAL 0x00002000
+#define MB_MODEMASK 0x00003000
+
+#define MB_HELP 0x00004000
+#define MB_NOFOCUS 0x00008000
+#define MB_MISCMASK 0x0000C000
+
+#define MB_SETFOREGROUND 0x00010000
+#define MB_DEFAULT_DESKTOP_ONLY 0x00020000
+#define MB_SERVICE_NOTIFICATION 0x00040000
+#define MB_TOPMOST 0x00040000
+#define MB_RIGHT 0x00080000
+#define MB_RTLREADING 0x00100000
+
+#define HELPINFO_WINDOW 0x0001
+#define HELPINFO_MENUITEM 0x0002
+
+/* Structure pointed to by lParam of WM_HELP */
+typedef struct tagHELPINFO
+{
+ UINT cbSize; /* Size in bytes of this struct */
+ INT iContextType; /* Either HELPINFO_WINDOW or HELPINFO_MENUITEM */
+ INT iCtrlId; /* Control Id or a Menu item Id. */
+ HANDLE hItemHandle; /* hWnd of control or hMenu. */
+ DWORD_PTR dwContextId; /* Context Id associated with this item */
+ POINT MousePos; /* Mouse Position in screen co-ordinates */
+} HELPINFO,*LPHELPINFO;
+
+typedef void (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
+
+typedef struct tagMSGBOXPARAMSA
+{
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCSTR lpszText;
+ LPCSTR lpszCaption;
+ DWORD dwStyle;
+ LPCSTR lpszIcon;
+ DWORD_PTR dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
+} MSGBOXPARAMSA, *PMSGBOXPARAMSA, *LPMSGBOXPARAMSA;
+
+typedef struct tagMSGBOXPARAMSW
+{
+ UINT cbSize;
+ HWND hwndOwner;
+ HINSTANCE hInstance;
+ LPCWSTR lpszText;
+ LPCWSTR lpszCaption;
+ DWORD dwStyle;
+ LPCWSTR lpszIcon;
+ DWORD_PTR dwContextHelpId;
+ MSGBOXCALLBACK lpfnMsgBoxCallback;
+ DWORD dwLanguageId;
+} MSGBOXPARAMSW, *PMSGBOXPARAMSW, *LPMSGBOXPARAMSW;
+
+DECL_WINELIB_TYPE_AW(MSGBOXPARAMS)
+DECL_WINELIB_TYPE_AW(PMSGBOXPARAMS)
+DECL_WINELIB_TYPE_AW(LPMSGBOXPARAMS)
+
+#define MONITOR_DEFAULTTONULL 0x00000000
+#define MONITOR_DEFAULTTOPRIMARY 0x00000001
+#define MONITOR_DEFAULTTONEAREST 0x00000002
+
+#define MONITORINFOF_PRIMARY 0x00000001
+
+#ifndef CCHDEVICENAME
+#define CCHDEVICENAME 32
+#endif
+
+typedef struct tagMONITORINFO
+{
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
+} MONITORINFO, *LPMONITORINFO;
+
+typedef struct tagMONITORINFOEXA
+{ /* the 4 first entries are the same as MONITORINFO */
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
+ CHAR szDevice[CCHDEVICENAME];
+} MONITORINFOEXA, *LPMONITORINFOEXA;
+
+typedef struct tagMONITORINFOEXW
+{ /* the 4 first entries are the same as MONITORINFO */
+ DWORD cbSize;
+ RECT rcMonitor;
+ RECT rcWork;
+ DWORD dwFlags;
+ WCHAR szDevice[CCHDEVICENAME];
+} MONITORINFOEXW, *LPMONITORINFOEXW;
+
+DECL_WINELIB_TYPE_AW(MONITORINFOEX)
+DECL_WINELIB_TYPE_AW(LPMONITORINFOEX)
+
+typedef BOOL (CALLBACK *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
+
+#include <pshpack2.h>
+
+typedef struct tagDLGTEMPLATE
+{
+ DWORD style;
+ DWORD dwExtendedStyle;
+ WORD cdit;
+ short x;
+ short y;
+ short cx;
+ short cy;
+} DLGTEMPLATE;
+
+typedef DLGTEMPLATE *LPDLGTEMPLATEA;
+typedef DLGTEMPLATE *LPDLGTEMPLATEW;
+DECL_WINELIB_TYPE_AW(LPDLGTEMPLATE)
+typedef const DLGTEMPLATE *LPCDLGTEMPLATEA;
+typedef const DLGTEMPLATE *LPCDLGTEMPLATEW;
+DECL_WINELIB_TYPE_AW(LPCDLGTEMPLATE)
+
+typedef struct tagDLGITEMTEMPLATE
+{
+ DWORD style;
+ DWORD dwExtendedStyle;
+ short x;
+ short y;
+ short cx;
+ short cy;
+ WORD id;
+} DLGITEMTEMPLATE;
+
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
+DECL_WINELIB_TYPE_AW(PDLGITEMTEMPLATE)
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
+typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
+DECL_WINELIB_TYPE_AW(LPDLGITEMTEMPLATE)
+
+#include <poppack.h>
+
+ /* CBT hook values */
+#define HCBT_MOVESIZE 0
+#define HCBT_MINMAX 1
+#define HCBT_QS 2
+#define HCBT_CREATEWND 3
+#define HCBT_DESTROYWND 4
+#define HCBT_ACTIVATE 5
+#define HCBT_CLICKSKIPPED 6
+#define HCBT_KEYSKIPPED 7
+#define HCBT_SYSCOMMAND 8
+#define HCBT_SETFOCUS 9
+
+ /* CBT hook structures */
+
+typedef struct tagCBT_CREATEWNDA
+{
+ CREATESTRUCTA *lpcs;
+ HWND hwndInsertAfter;
+} CBT_CREATEWNDA, *LPCBT_CREATEWNDA;
+
+typedef struct tagCBT_CREATEWNDW
+{
+ CREATESTRUCTW *lpcs;
+ HWND hwndInsertAfter;
+} CBT_CREATEWNDW, *LPCBT_CREATEWNDW;
+
+DECL_WINELIB_TYPE_AW(CBT_CREATEWND)
+DECL_WINELIB_TYPE_AW(LPCBT_CREATEWND)
+
+typedef struct tagCBTACTIVATESTRUCT
+{
+ BOOL fMouse;
+ HWND hWndActive;
+} CBTACTIVATESTRUCT, *LPCBTACTIVATESTRUCT;
+
+
+typedef struct tagDROPSTRUCT
+{
+ HWND hwndSource;
+ HWND hwndSink;
+ DWORD wFmt;
+ ULONG_PTR dwData;
+ POINT ptDrop;
+ DWORD dwControlData;
+} DROPSTRUCT, *PDROPSTRUCT, *LPDROPSTRUCT;
+
+#define DOF_EXECUTABLE 0x8001
+#define DOF_DOCUMENT 0x8002
+#define DOF_DIRECTORY 0x8003
+#define DOF_MULTIPLE 0x8004
+#define DOF_PROGMAN 0x0001
+#define DOF_SHELLDATA 0x0002
+
+/* modifiers for RegisterHotKey */
+#define MOD_ALT 0x0001
+#define MOD_CONTROL 0x0002
+#define MOD_SHIFT 0x0004
+#define MOD_WIN 0x0008
+
+/* ids for RegisterHotKey */
+#define IDHOT_SNAPWINDOW (-1) /* SHIFT-PRINTSCRN */
+#define IDHOT_SNAPDESKTOP (-2) /* PRINTSCRN */
+
+ /* keybd_event flags */
+#define KEYEVENTF_EXTENDEDKEY 0x0001
+#define KEYEVENTF_KEYUP 0x0002
+#define KEYEVENTF_UNICODE 0x0004
+#define KEYEVENTF_SCANCODE 0x0008
+
+ /* mouse_event flags */
+#define MOUSEEVENTF_MOVE 0x0001
+#define MOUSEEVENTF_LEFTDOWN 0x0002
+#define MOUSEEVENTF_LEFTUP 0x0004
+#define MOUSEEVENTF_RIGHTDOWN 0x0008
+#define MOUSEEVENTF_RIGHTUP 0x0010
+#define MOUSEEVENTF_MIDDLEDOWN 0x0020
+#define MOUSEEVENTF_MIDDLEUP 0x0040
+#define MOUSEEVENTF_XDOWN 0x0080
+#define MOUSEEVENTF_XUP 0x0100
+#define MOUSEEVENTF_WHEEL 0x0800
+#define MOUSEEVENTF_HWHEEL 0x1000
+#define MOUSEEVENTF_MOVE_NOCOALESCE 0x2000
+#define MOUSEEVENTF_VIRTUALDESK 0x4000
+#define MOUSEEVENTF_ABSOLUTE 0x8000
+
+/* ExitWindows() flags */
+#define EW_RESTARTWINDOWS 0x0042
+#define EW_REBOOTSYSTEM 0x0043
+#define EW_EXITANDEXECAPP 0x0044
+
+/* ExitWindowsEx() flags */
+#define EWX_LOGOFF 0
+#define EWX_SHUTDOWN 1
+#define EWX_REBOOT 2
+#define EWX_FORCE 4
+#define EWX_POWEROFF 8
+#define EWX_FORCEIFHUNG 16
+
+/* SetLastErrorEx types */
+#define SLE_ERROR 0x00000001
+#define SLE_MINORERROR 0x00000002
+#define SLE_WARNING 0x00000003
+
+/* Predefined resources */
+#define IDI_APPLICATION MAKEINTRESOURCE(32512)
+#define IDI_HAND MAKEINTRESOURCE(32513)
+#define IDI_QUESTION MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK MAKEINTRESOURCE(32516)
+#define IDI_WINLOGO MAKEINTRESOURCE(32517)
+
+#define IDI_WARNING IDI_EXCLAMATION
+#define IDI_ERROR IDI_HAND
+#define IDI_INFORMATION IDI_ASTERISK
+
+#define IDC_ARROW MAKEINTRESOURCE(32512)
+#define IDC_IBEAM MAKEINTRESOURCE(32513)
+#define IDC_WAIT MAKEINTRESOURCE(32514)
+#define IDC_CROSS MAKEINTRESOURCE(32515)
+#define IDC_UPARROW MAKEINTRESOURCE(32516)
+#define IDC_PEN MAKEINTRESOURCE(32631)
+#define IDC_SIZE MAKEINTRESOURCE(32640)
+#define IDC_ICON MAKEINTRESOURCE(32641)
+#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
+#define IDC_SIZENESW MAKEINTRESOURCE(32643)
+#define IDC_SIZEWE MAKEINTRESOURCE(32644)
+#define IDC_SIZENS MAKEINTRESOURCE(32645)
+#define IDC_SIZEALL MAKEINTRESOURCE(32646)
+#define IDC_NO MAKEINTRESOURCE(32648)
+#define IDC_HAND MAKEINTRESOURCE(32649)
+#define IDC_APPSTARTING MAKEINTRESOURCE(32650)
+#define IDC_HELP MAKEINTRESOURCE(32651)
+
+#define MNC_IGNORE 0
+#define MNC_CLOSE 1
+#define MNC_EXECUTE 2
+#define MNC_SELECT 3
+
+/* SystemParametersInfo */
+#define SPI_GETBEEP 1
+#define SPI_SETBEEP 2
+#define SPI_GETMOUSE 3
+#define SPI_SETMOUSE 4
+#define SPI_GETBORDER 5
+#define SPI_SETBORDER 6
+#define SPI_GETKEYBOARDSPEED 10
+#define SPI_SETKEYBOARDSPEED 11
+#define SPI_LANGDRIVER 12
+#define SPI_ICONHORIZONTALSPACING 13
+#define SPI_GETSCREENSAVETIMEOUT 14
+#define SPI_SETSCREENSAVETIMEOUT 15
+#define SPI_GETSCREENSAVEACTIVE 16
+#define SPI_SETSCREENSAVEACTIVE 17
+#define SPI_GETGRIDGRANULARITY 18
+#define SPI_SETGRIDGRANULARITY 19
+#define SPI_SETDESKWALLPAPER 20
+#define SPI_SETDESKPATTERN 21
+#define SPI_GETKEYBOARDDELAY 22
+#define SPI_SETKEYBOARDDELAY 23
+#define SPI_ICONVERTICALSPACING 24
+#define SPI_GETICONTITLEWRAP 25
+#define SPI_SETICONTITLEWRAP 26
+#define SPI_GETMENUDROPALIGNMENT 27
+#define SPI_SETMENUDROPALIGNMENT 28
+#define SPI_SETDOUBLECLKWIDTH 29
+#define SPI_SETDOUBLECLKHEIGHT 30
+#define SPI_GETICONTITLELOGFONT 31
+#define SPI_SETDOUBLECLICKTIME 32
+#define SPI_SETMOUSEBUTTONSWAP 33
+#define SPI_SETICONTITLELOGFONT 34
+#define SPI_GETFASTTASKSWITCH 35
+#define SPI_SETFASTTASKSWITCH 36
+#define SPI_SETDRAGFULLWINDOWS 37
+#define SPI_GETDRAGFULLWINDOWS 38
+#define SPI_GETNONCLIENTMETRICS 41
+#define SPI_SETNONCLIENTMETRICS 42
+#define SPI_GETMINIMIZEDMETRICS 43
+#define SPI_SETMINIMIZEDMETRICS 44
+#define SPI_GETICONMETRICS 45
+#define SPI_SETICONMETRICS 46
+#define SPI_SETWORKAREA 47
+#define SPI_GETWORKAREA 48
+#define SPI_SETPENWINDOWS 49
+#define SPI_GETFILTERKEYS 50
+#define SPI_SETFILTERKEYS 51
+#define SPI_GETTOGGLEKEYS 52
+#define SPI_SETTOGGLEKEYS 53
+#define SPI_GETMOUSEKEYS 54
+#define SPI_SETMOUSEKEYS 55
+#define SPI_GETSHOWSOUNDS 56
+#define SPI_SETSHOWSOUNDS 57
+#define SPI_GETSTICKYKEYS 58
+#define SPI_SETSTICKYKEYS 59
+#define SPI_GETACCESSTIMEOUT 60
+#define SPI_SETACCESSTIMEOUT 61
+#define SPI_GETSERIALKEYS 62
+#define SPI_SETSERIALKEYS 63
+#define SPI_GETSOUNDSENTRY 64
+#define SPI_SETSOUNDSENTRY 65
+#define SPI_GETHIGHCONTRAST 66
+#define SPI_SETHIGHCONTRAST 67
+#define SPI_GETKEYBOARDPREF 68
+#define SPI_SETKEYBOARDPREF 69
+#define SPI_GETSCREENREADER 70
+#define SPI_SETSCREENREADER 71
+#define SPI_GETANIMATION 72
+#define SPI_SETANIMATION 73
+#define SPI_GETFONTSMOOTHING 74
+#define SPI_SETFONTSMOOTHING 75
+#define SPI_SETDRAGWIDTH 76
+#define SPI_SETDRAGHEIGHT 77
+#define SPI_SETHANDHELD 78
+#define SPI_GETLOWPOWERTIMEOUT 79
+#define SPI_GETPOWEROFFTIMEOUT 80
+#define SPI_SETLOWPOWERTIMEOUT 81
+#define SPI_SETPOWEROFFTIMEOUT 82
+#define SPI_GETLOWPOWERACTIVE 83
+#define SPI_GETPOWEROFFACTIVE 84
+#define SPI_SETLOWPOWERACTIVE 85
+#define SPI_SETPOWEROFFACTIVE 86
+#define SPI_SETCURSORS 87
+#define SPI_SETICONS 88
+#define SPI_GETDEFAULTINPUTLANG 89
+#define SPI_SETDEFAULTINPUTLANG 90
+#define SPI_SETLANGTOGGLE 91
+#define SPI_GETWINDOWSEXTENSION 92
+#define SPI_SETMOUSETRAILS 93
+#define SPI_GETMOUSETRAILS 94
+#define SPI_GETSNAPTODEFBUTTON 95
+#define SPI_SETSNAPTODEFBUTTON 96
+#define SPI_SETSCREENSAVERRUNNING 97
+#define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
+#define SPI_GETMOUSEHOVERWIDTH 98
+#define SPI_SETMOUSEHOVERWIDTH 99
+#define SPI_GETMOUSEHOVERHEIGHT 100
+#define SPI_SETMOUSEHOVERHEIGHT 101
+#define SPI_GETMOUSEHOVERTIME 102
+#define SPI_SETMOUSEHOVERTIME 103
+#define SPI_GETWHEELSCROLLLINES 104
+#define SPI_SETWHEELSCROLLLINES 105
+#define SPI_GETMENUSHOWDELAY 106
+#define SPI_SETMENUSHOWDELAY 107
+#define SPI_GETWHEELSCROLLCHARS 108
+#define SPI_SETWHEELSCROLLCHARS 109
+#define SPI_GETSHOWIMEUI 110
+#define SPI_SETSHOWIMEUI 111
+#define SPI_GETMOUSESPEED 112
+#define SPI_SETMOUSESPEED 113
+#define SPI_GETSCREENSAVERRUNNING 114
+#define SPI_GETDESKWALLPAPER 115
+#define SPI_GETAUDIODESCRIPTION 116
+#define SPI_SETAUDIODESCRIPTION 117
+
+#define SPI_GETACTIVEWINDOWTRACKING 0x1000
+#define SPI_SETACTIVEWINDOWTRACKING 0x1001
+#define SPI_GETMENUANIMATION 0x1002
+#define SPI_SETMENUANIMATION 0x1003
+#define SPI_GETCOMBOBOXANIMATION 0x1004
+#define SPI_SETCOMBOBOXANIMATION 0x1005
+#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
+#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
+#define SPI_GETGRADIENTCAPTIONS 0x1008
+#define SPI_SETGRADIENTCAPTIONS 0x1009
+#define SPI_GETKEYBOARDCUES 0x100A
+#define SPI_SETKEYBOARDCUES 0x100B
+#define SPI_GETMENUUNDERLINES SPI_GETKEYBOARDCUES
+#define SPI_SETMENUUNDERLINES SPI_SETKEYBOARDCUES
+#define SPI_GETACTIVEWNDTRKZORDER 0x100C
+#define SPI_SETACTIVEWNDTRKZORDER 0x100D
+#define SPI_GETHOTTRACKING 0x100E
+#define SPI_SETHOTTRACKING 0x100F
+#define SPI_GETMENUFADE 0x1012
+#define SPI_SETMENUFADE 0x1013
+#define SPI_GETSELECTIONFADE 0x1014
+#define SPI_SETSELECTIONFADE 0x1015
+#define SPI_GETTOOLTIPANIMATION 0x1016
+#define SPI_SETTOOLTIPANIMATION 0x1017
+#define SPI_GETTOOLTIPFADE 0x1018
+#define SPI_SETTOOLTIPFADE 0x1019
+#define SPI_GETCURSORSHADOW 0x101A
+#define SPI_SETCURSORSHADOW 0x101B
+#define SPI_GETMOUSESONAR 0x101C
+#define SPI_SETMOUSESONAR 0x101D
+#define SPI_GETMOUSECLICKLOCK 0x101E
+#define SPI_SETMOUSECLICKLOCK 0x101F
+#define SPI_GETMOUSEVANISH 0x1020
+#define SPI_SETMOUSEVANISH 0x1021
+#define SPI_GETFLATMENU 0x1022
+#define SPI_SETFLATMENU 0x1023
+#define SPI_GETDROPSHADOW 0x1024
+#define SPI_SETDROPSHADOW 0x1025
+#define SPI_GETBLOCKSENDINPUTRESETS 0x1026
+#define SPI_SETBLOCKSENDINPUTRESETS 0x1027
+#define SPI_GETUIEFFECTS 0x103E
+#define SPI_SETUIEFFECTS 0x103F
+#define SPI_GETDISABLEOVERLAPPEDCONTENT 0x1040
+#define SPI_SETDISABLEOVERLAPPEDCONTENT 0x1041
+#define SPI_GETCLIENTAREAANIMATION 0x1042
+#define SPI_SETCLIENTAREAANIMATION 0x1043
+#define SPI_GETCLEARTYPE 0x1048
+#define SPI_SETCLEARTYPE 0x1049
+#define SPI_GETSPEECHRECOGNITION 0x104A
+#define SPI_SETSPEECHRECOGNITION 0x104B
+#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
+#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
+#define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002
+#define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003
+#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
+#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
+#define SPI_GETCARETWIDTH 0x2006
+#define SPI_SETCARETWIDTH 0x2007
+#define SPI_GETMOUSECLICKLOCKTIME 0x2008
+#define SPI_SETMOUSECLICKLOCKTIME 0x2009
+#define SPI_GETFONTSMOOTHINGTYPE 0x200A
+#define SPI_SETFONTSMOOTHINGTYPE 0x200B
+#define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
+#define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
+#define SPI_GETFOCUSBORDERWIDTH 0x200E
+#define SPI_SETFOCUSBORDERWIDTH 0x200F
+#define SPI_GETFOCUSBORDERHEIGHT 0x2010
+#define SPI_SETFOCUSBORDERHEIGHT 0x2011
+#define SPI_GETFONTSMOOTHINGORIENTATION 0x2012
+#define SPI_SETFONTSMOOTHINGORIENTATION 0x2013
+
+#define FE_FONTSMOOTHINGSTANDARD 0x0001
+#define FE_FONTSMOOTHINGCLEARTYPE 0x0002
+#define FE_FONTSMOOTHINGDOCKING 0x8000
+
+#define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000
+#define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001
+
+#define SETWALLPAPER_DEFAULT ((LPWSTR)-1)
+
+/* SystemParametersInfo flags */
+
+#define SPIF_UPDATEINIFILE 1
+#define SPIF_SENDWININICHANGE 2
+#define SPIF_SENDCHANGE SPIF_SENDWININICHANGE
+
+#if defined(_WINGDI_) && !defined(NOGDI)
+typedef struct tagNONCLIENTMETRICSA {
+ UINT cbSize;
+ INT iBorderWidth;
+ INT iScrollWidth;
+ INT iScrollHeight;
+ INT iCaptionWidth;
+ INT iCaptionHeight;
+ LOGFONTA lfCaptionFont;
+ INT iSmCaptionWidth;
+ INT iSmCaptionHeight;
+ LOGFONTA lfSmCaptionFont;
+ INT iMenuWidth;
+ INT iMenuHeight;
+ LOGFONTA lfMenuFont;
+ LOGFONTA lfStatusFont;
+ LOGFONTA lfMessageFont;
+ INT iPaddedBorderWidth;
+} NONCLIENTMETRICSA, *PNONCLIENTMETRICSA, *LPNONCLIENTMETRICSA;
+
+typedef struct tagNONCLIENTMETRICSW {
+ UINT cbSize;
+ INT iBorderWidth;
+ INT iScrollWidth;
+ INT iScrollHeight;
+ INT iCaptionWidth;
+ INT iCaptionHeight;
+ LOGFONTW lfCaptionFont;
+ INT iSmCaptionWidth;
+ INT iSmCaptionHeight;
+ LOGFONTW lfSmCaptionFont;
+ INT iMenuWidth;
+ INT iMenuHeight;
+ LOGFONTW lfMenuFont;
+ LOGFONTW lfStatusFont;
+ LOGFONTW lfMessageFont;
+ INT iPaddedBorderWidth;
+} NONCLIENTMETRICSW, *PNONCLIENTMETRICSW, *LPNONCLIENTMETRICSW;
+
+DECL_WINELIB_TYPE_AW(NONCLIENTMETRICS)
+DECL_WINELIB_TYPE_AW(PNONCLIENTMETRICS)
+DECL_WINELIB_TYPE_AW(LPNONCLIENTMETRICS)
+
+typedef struct tagICONMETRICSA {
+ UINT cbSize;
+ int iHorzSpacing;
+ int iVertSpacing;
+ int iTitleWrap;
+ LOGFONTA lfFont;
+} ICONMETRICSA, *PICONMETRICSA, *LPICONMETRICSA;
+
+typedef struct tagICONMETRICSW {
+ UINT cbSize;
+ int iHorzSpacing;
+ int iVertSpacing;
+ int iTitleWrap;
+ LOGFONTW lfFont;
+} ICONMETRICSW, *PICONMETRICSW, *LPICONMETRICSW;
+
+DECL_WINELIB_TYPE_AW(ICONMETRICS)
+DECL_WINELIB_TYPE_AW(PICONMETRICS)
+DECL_WINELIB_TYPE_AW(LPICONMETRICS)
+
+typedef struct tagUPDATELAYEREDWINDOWINFO
+{
+ DWORD cbSize;
+ HDC hdcDst;
+ POINT const* pptDst;
+ SIZE const* psize;
+ HDC hdcSrc;
+ POINT const* pptSrc;
+ COLORREF crKey;
+ BLENDFUNCTION const* pblend;
+ DWORD dwFlags;
+ RECT const* prcDirty;
+} UPDATELAYEREDWINDOWINFO, *PUPDATELAYEREDWINDOWINFO;
+
+#endif /* defined(_WINGDI_) && !defined(NOGDI) */
+
+#define ARW_BOTTOMLEFT __MSABI_LONG(0x0000)
+#define ARW_BOTTOMRIGHT __MSABI_LONG(0x0001)
+#define ARW_TOPLEFT __MSABI_LONG(0x0002)
+#define ARW_TOPRIGHT __MSABI_LONG(0x0003)
+#define ARW_STARTMASK __MSABI_LONG(0x0003)
+#define ARW_STARTRIGHT __MSABI_LONG(0x0001)
+#define ARW_STARTTOP __MSABI_LONG(0x0002)
+
+#define ARW_LEFT __MSABI_LONG(0x0000)
+#define ARW_RIGHT __MSABI_LONG(0x0000)
+#define ARW_UP __MSABI_LONG(0x0004)
+#define ARW_DOWN __MSABI_LONG(0x0004)
+#define ARW_HIDE __MSABI_LONG(0x0008)
+
+typedef struct tagMINIMIZEDMETRICS {
+ UINT cbSize;
+ int iWidth;
+ int iHorzGap;
+ int iVertGap;
+ int iArrange;
+} MINIMIZEDMETRICS, *PMINIMIZEDMETRICS, *LPMINIMIZEDMETRICS;
+
+/* Window affinity */
+#define WDA_NONE 0x0
+#define WDA_MONITOR 0x1
+
+/* Window scrolling */
+#define SW_SCROLLCHILDREN 0x0001
+#define SW_INVALIDATE 0x0002
+#define SW_ERASE 0x0004
+
+/* CreateWindow() coordinates */
+#define CW_USEDEFAULT ((INT)0x80000000)
+
+/* ChildWindowFromPointEx Flags */
+#define CWP_ALL 0x0000
+#define CWP_SKIPINVISIBLE 0x0001
+#define CWP_SKIPDISABLED 0x0002
+#define CWP_SKIPTRANSPARENT 0x0004
+
+ /* PeekMessage() options */
+#define PM_NOREMOVE 0x0000
+#define PM_REMOVE 0x0001
+#define PM_NOYIELD 0x0002
+#define PM_QS_INPUT (QS_INPUT << 16)
+#define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
+#define PM_QS_PAINT (QS_PAINT << 16)
+#define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16)
+
+/* SetTimer() limits */
+#define USER_TIMER_MINIMUM 0x0000000A
+#define USER_TIMER_MAXIMUM 0x7FFFFFFF
+
+/* SetCoalescableTimer() tolerances */
+#define TIMERV_DEFAULT_COALESCING 0
+#define TIMERV_NO_COALESCING 0xFFFFFFFF
+#define TIMERV_COALESCING_MIN 1
+#define TIMERV_COALESCING_MAX 0x7FFFFFF5
+
+/* AnimateWindow() flags */
+#define AW_SLIDE 0x00040000
+#define AW_ACTIVATE 0x00020000
+#define AW_BLEND 0x00080000
+#define AW_HIDE 0x00010000
+#define AW_CENTER 0x00000010
+#define AW_HOR_POSITIVE 0x00000001
+#define AW_HOR_NEGATIVE 0x00000002
+#define AW_VER_POSITIVE 0x00000004
+#define AW_VER_NEGATIVE 0x00000008
+
+/* FlashWindowEx() flags */
+#define FLASHW_STOP 0x00000000
+#define FLASHW_CAPTION 0x00000001
+#define FLASHW_TRAY 0x00000002
+#define FLASHW_ALL (FLASHW_CAPTION|FLASHW_TRAY)
+#define FLASHW_TIMER 0x00000004
+#define FLASHW_TIMERNOFG 0x0000000C
+
+typedef struct {
+ UINT cbSize;
+ HWND hwnd;
+ DWORD dwFlags;
+ UINT uCount;
+ DWORD dwTimeout;
+} FLASHWINFO, *PFLASHWINFO;
+
+/* SetLayeredWindowAttributes() flags */
+#define LWA_COLORKEY 0x00000001
+#define LWA_ALPHA 0x00000002
+
+/* UpdateLayeredWindow() flags */
+#define ULW_COLORKEY 0x00000001
+#define ULW_ALPHA 0x00000002
+#define ULW_OPAQUE 0x00000004
+#define ULW_EX_NORESIZE 0x00000008
+
+/* SetWindowPos() and WINDOWPOS flags */
+#define SWP_NOSIZE 0x0001
+#define SWP_NOMOVE 0x0002
+#define SWP_NOZORDER 0x0004
+#define SWP_NOREDRAW 0x0008
+#define SWP_NOACTIVATE 0x0010
+#define SWP_FRAMECHANGED 0x0020 /* The frame changed: send WM_NCCALCSIZE */
+#define SWP_SHOWWINDOW 0x0040
+#define SWP_HIDEWINDOW 0x0080
+#define SWP_NOCOPYBITS 0x0100
+#define SWP_NOOWNERZORDER 0x0200 /* Don't do owner Z ordering */
+
+#define SWP_DRAWFRAME SWP_FRAMECHANGED
+#define SWP_NOREPOSITION SWP_NOOWNERZORDER
+
+#define SWP_NOSENDCHANGING 0x0400
+#define SWP_DEFERERASE 0x2000
+#define SWP_ASYNCWINDOWPOS 0x4000
+
+/* undocumented SWP flags - from SDK 3.1 */
+#define SWP_NOCLIENTSIZE 0x0800
+#define SWP_NOCLIENTMOVE 0x1000
+#define SWP_STATECHANGED 0x8000
+
+#define HWND_DESKTOP ((HWND)0)
+#define HWND_BROADCAST ((HWND)0xffff)
+
+/* SetWindowPos() hwndInsertAfter field values */
+#define HWND_TOP ((HWND)0)
+#define HWND_BOTTOM ((HWND)1)
+#define HWND_TOPMOST ((HWND)-1)
+#define HWND_NOTOPMOST ((HWND)-2)
+#define HWND_MESSAGE ((HWND)-3)
+
+/* GetDCEx flags */
+#define DCX_WINDOW 0x00000001
+#define DCX_CACHE 0x00000002
+#define DCX_NORESETATTRS 0x00000004
+#define DCX_CLIPCHILDREN 0x00000008
+#define DCX_CLIPSIBLINGS 0x00000010
+#define DCX_PARENTCLIP 0x00000020
+#define DCX_EXCLUDERGN 0x00000040
+#define DCX_INTERSECTRGN 0x00000080
+#define DCX_EXCLUDEUPDATE 0x00000100
+#define DCX_INTERSECTUPDATE 0x00000200
+#define DCX_LOCKWINDOWUPDATE 0x00000400
+#define DCX_USESTYLE 0x00010000
+#define DCX_NORECOMPUTE 0x00100000
+#define DCX_VALIDATE 0x00200000
+
+
+
+/* for GetMenuDefaultItem */
+#define GMDI_USEDISABLED __MSABI_LONG(0x0001)
+#define GMDI_GOINTOPOPUPS __MSABI_LONG(0x0002)
+
+/* DrawText() flags */
+#define DT_TOP 0x00000000
+#define DT_LEFT 0x00000000
+#define DT_CENTER 0x00000001
+#define DT_RIGHT 0x00000002
+#define DT_VCENTER 0x00000004
+#define DT_BOTTOM 0x00000008
+#define DT_WORDBREAK 0x00000010
+#define DT_SINGLELINE 0x00000020
+#define DT_EXPANDTABS 0x00000040
+#define DT_TABSTOP 0x00000080
+#define DT_NOCLIP 0x00000100
+#define DT_EXTERNALLEADING 0x00000200
+#define DT_CALCRECT 0x00000400
+#define DT_NOPREFIX 0x00000800
+#define DT_INTERNAL 0x00001000
+#define DT_EDITCONTROL 0x00002000
+#define DT_PATH_ELLIPSIS 0x00004000
+#define DT_END_ELLIPSIS 0x00008000
+#define DT_MODIFYSTRING 0x00010000
+#define DT_RTLREADING 0x00020000
+#define DT_WORD_ELLIPSIS 0x00040000
+#define DT_NOFULLWIDTHCHARBREAK 0x00080000
+#define DT_HIDEPREFIX 0x00100000
+#define DT_PREFIXONLY 0x00200000
+
+/* DrawCaption()/DrawCaptionTemp() flags */
+#define DC_ACTIVE 0x0001
+#define DC_SMALLCAP 0x0002
+#define DC_ICON 0x0004
+#define DC_TEXT 0x0008
+#define DC_INBUTTON 0x0010
+#define DC_GRADIENT 0x0020
+#define DC_BUTTONS 0x1000
+
+/* DrawEdge() flags */
+#define BDR_RAISEDOUTER 0x0001
+#define BDR_SUNKENOUTER 0x0002
+#define BDR_RAISEDINNER 0x0004
+#define BDR_SUNKENINNER 0x0008
+
+#define BDR_OUTER 0x0003
+#define BDR_INNER 0x000c
+#define BDR_RAISED 0x0005
+#define BDR_SUNKEN 0x000a
+
+#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
+#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
+#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)
+#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)
+
+/* border flags */
+#define BF_LEFT 0x0001
+#define BF_TOP 0x0002
+#define BF_RIGHT 0x0004
+#define BF_BOTTOM 0x0008
+#define BF_DIAGONAL 0x0010
+#define BF_MIDDLE 0x0800 /* Fill in the middle */
+#define BF_SOFT 0x1000 /* For softer buttons */
+#define BF_ADJUST 0x2000 /* Calculate the space left over */
+#define BF_FLAT 0x4000 /* For flat rather than 3D borders */
+#define BF_MONO 0x8000 /* For monochrome borders */
+#define BF_TOPLEFT (BF_TOP | BF_LEFT)
+#define BF_TOPRIGHT (BF_TOP | BF_RIGHT)
+#define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT)
+#define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT)
+#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
+#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT)
+#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
+
+/* DrawFrameControl() uType's */
+
+#define DFC_CAPTION 1
+#define DFC_MENU 2
+#define DFC_SCROLL 3
+#define DFC_BUTTON 4
+#define DFC_POPUPMENU 5
+
+/* uState's */
+
+#define DFCS_CAPTIONCLOSE 0x0000
+#define DFCS_CAPTIONMIN 0x0001
+#define DFCS_CAPTIONMAX 0x0002
+#define DFCS_CAPTIONRESTORE 0x0003
+#define DFCS_CAPTIONHELP 0x0004 /* Windows 95 only */
+
+#define DFCS_MENUARROW 0x0000
+#define DFCS_MENUCHECK 0x0001
+#define DFCS_MENUBULLET 0x0002
+#define DFCS_MENUARROWRIGHT 0x0004
+
+#define DFCS_SCROLLUP 0x0000
+#define DFCS_SCROLLDOWN 0x0001
+#define DFCS_SCROLLLEFT 0x0002
+#define DFCS_SCROLLRIGHT 0x0003
+#define DFCS_SCROLLCOMBOBOX 0x0005
+#define DFCS_SCROLLSIZEGRIP 0x0008
+#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
+
+#define DFCS_BUTTONCHECK 0x0000
+#define DFCS_BUTTONRADIOIMAGE 0x0001
+#define DFCS_BUTTONRADIOMASK 0x0002 /* to draw nonsquare button */
+#define DFCS_BUTTONRADIO 0x0004
+#define DFCS_BUTTON3STATE 0x0008
+#define DFCS_BUTTONPUSH 0x0010
+
+/* additional state of the control */
+
+#define DFCS_INACTIVE 0x0100
+#define DFCS_PUSHED 0x0200
+#define DFCS_CHECKED 0x0400
+#define DFCS_TRANSPARENT 0x0800
+#define DFCS_HOT 0x1000
+#define DFCS_ADJUSTRECT 0x2000 /* exclude surrounding edge */
+#define DFCS_FLAT 0x4000
+#define DFCS_MONO 0x8000
+
+
+/* Image type */
+#define DST_COMPLEX 0x0000
+#define DST_TEXT 0x0001
+#define DST_PREFIXTEXT 0x0002
+#define DST_ICON 0x0003
+#define DST_BITMAP 0x0004
+
+/* State type */
+#define DSS_NORMAL 0x0000
+#define DSS_UNION 0x0010 /* Gray string appearance */
+#define DSS_DISABLED 0x0020
+#define DSS_DEFAULT 0x0040 /* Make it bold */
+#define DSS_MONO 0x0080
+#define DSS_HIDEPREFIX 0x0200
+#define DSS_PREFIXONLY 0x0400
+#define DSS_RIGHT 0x8000
+
+/* UserObjectInformation classes */
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+
+
+/* Sent as the lParam of a WM_DRAWITEM message to instruct how an
+ * owner drawn control is to be drawn */
+typedef struct tagDRAWITEMSTRUCT
+{
+ UINT CtlType; /* Type of control (ODT_* flags from "winuser.h") */
+ UINT CtlID; /* Control ID */
+ UINT itemID; /* Menu item ID */
+ UINT itemAction; /* Action to perform (ODA_* flags from "winuser.h") */
+ UINT itemState; /* Item state (ODS_* flags from "winuser.h") */
+ HWND hwndItem; /* Control window */
+ HDC hDC; /* Device context to draw to */
+ RECT rcItem; /* Position of the control in hDC */
+ ULONG_PTR itemData; /* Extra data added by the application, if any */
+} DRAWITEMSTRUCT, *PDRAWITEMSTRUCT, *LPDRAWITEMSTRUCT;
+
+
+typedef struct tagMEASUREITEMSTRUCT
+{
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ UINT itemWidth;
+ UINT itemHeight;
+ ULONG_PTR itemData;
+} MEASUREITEMSTRUCT, *PMEASUREITEMSTRUCT, *LPMEASUREITEMSTRUCT;
+
+
+typedef struct tagDELETEITEMSTRUCT
+{
+ UINT CtlType;
+ UINT CtlID;
+ UINT itemID;
+ HWND hwndItem;
+ ULONG_PTR itemData;
+} DELETEITEMSTRUCT, *PDELETEITEMSTRUCT, *LPDELETEITEMSTRUCT;
+
+
+typedef struct tagCOMPAREITEMSTRUCT
+{
+ UINT CtlType;
+ UINT CtlID;
+ HWND hwndItem;
+ UINT itemID1;
+ ULONG_PTR itemData1;
+ UINT itemID2;
+ ULONG_PTR itemData2;
+ DWORD dwLocaleId;
+} COMPAREITEMSTRUCT, *PCOMPAREITEMSTRUCT, *LPCOMPAREITEMSTRUCT;
+
+
+/* WM_KEYUP/DOWN/CHAR HIWORD(lParam) flags */
+#define KF_EXTENDED 0x0100
+#define KF_DLGMODE 0x0800
+#define KF_MENUMODE 0x1000
+#define KF_ALTDOWN 0x2000
+#define KF_REPEAT 0x4000
+#define KF_UP 0x8000
+
+
+/* MapVirtualKey translation types */
+#define MAPVK_VK_TO_VSC 0
+#define MAPVK_VSC_TO_VK 1
+#define MAPVK_VK_TO_CHAR 2
+#define MAPVK_VSC_TO_VK_EX 3
+#define MAPVK_VK_TO_VSC_EX 4
+
+
+
+typedef struct tagTRACKMOUSEEVENT {
+ DWORD cbSize;
+ DWORD dwFlags;
+ HWND hwndTrack;
+ DWORD dwHoverTime;
+} TRACKMOUSEEVENT, *LPTRACKMOUSEEVENT;
+
+ /* Queue status flags */
+#define QS_KEY 0x0001
+#define QS_MOUSEMOVE 0x0002
+#define QS_MOUSEBUTTON 0x0004
+#define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON)
+#define QS_POSTMESSAGE 0x0008
+#define QS_TIMER 0x0010
+#define QS_PAINT 0x0020
+#define QS_SENDMESSAGE 0x0040
+#define QS_HOTKEY 0x0080
+#define QS_ALLPOSTMESSAGE 0x0100
+#define QS_RAWINPUT 0x0400
+#define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT)
+#define QS_ALLEVENTS (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
+#define QS_ALLINPUT (QS_ALLEVENTS | QS_SENDMESSAGE)
+
+/* Extra (undocumented) queue wake bits - see "Undoc. Windows" */
+#define QS_SMRESULT 0x8000
+
+/* InSendMessageEx flags */
+#define ISMEX_NOSEND 0x00000000
+#define ISMEX_SEND 0x00000001
+#define ISMEX_NOTIFY 0x00000002
+#define ISMEX_CALLBACK 0x00000004
+#define ISMEX_REPLIED 0x00000008
+
+#define DDL_READWRITE 0x0000
+#define DDL_READONLY 0x0001
+#define DDL_HIDDEN 0x0002
+#define DDL_SYSTEM 0x0004
+#define DDL_DIRECTORY 0x0010
+#define DDL_ARCHIVE 0x0020
+
+#define DDL_POSTMSGS 0x2000
+#define DDL_DRIVES 0x4000
+#define DDL_EXCLUSIVE 0x8000
+
+ /* Shell hook values */
+#define HSHELL_WINDOWCREATED 1
+#define HSHELL_WINDOWDESTROYED 2
+#define HSHELL_ACTIVATESHELLWINDOW 3
+#define HSHELL_WINDOWACTIVATED 4
+#define HSHELL_GETMINRECT 5
+#define HSHELL_REDRAW 6
+#define HSHELL_TASKMAN 7
+#define HSHELL_LANGUAGE 8
+#define HSHELL_SYSMENU 9
+#define HSHELL_ENDTASK 10
+#define HSHELL_ACCESSIBILITYSTATE 11
+#define HSHELL_APPCOMMAND 12
+#define HSHELL_WINDOWREPLACED 13
+#define HSHELL_WINDOWREPLACING 14
+
+#define HSHELL_HIGHBIT 0x8000
+#define HSHELL_FLASH (HSHELL_REDRAW|HSHELL_HIGHBIT)
+#define HSHELL_RUDEAPPACTIVATED (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT)
+
+/* App commands */
+#define APPCOMMAND_BROWSER_BACKWARD 1
+#define APPCOMMAND_BROWSER_FORWARD 2
+#define APPCOMMAND_BROWSER_REFRESH 3
+#define APPCOMMAND_BROWSER_STOP 4
+#define APPCOMMAND_BROWSER_SEARCH 5
+#define APPCOMMAND_BROWSER_FAVORITES 6
+#define APPCOMMAND_BROWSER_HOME 7
+#define APPCOMMAND_VOLUME_MUTE 8
+#define APPCOMMAND_VOLUME_DOWN 9
+#define APPCOMMAND_VOLUME_UP 10
+#define APPCOMMAND_MEDIA_NEXTTRACK 11
+#define APPCOMMAND_MEDIA_PREVIOUSTRACK 12
+#define APPCOMMAND_MEDIA_STOP 13
+#define APPCOMMAND_MEDIA_PLAY_PAUSE 14
+#define APPCOMMAND_LAUNCH_MAIL 15
+#define APPCOMMAND_LAUNCH_MEDIA_SELECT 16
+#define APPCOMMAND_LAUNCH_APP1 17
+#define APPCOMMAND_LAUNCH_APP2 18
+#define APPCOMMAND_BASS_DOWN 19
+#define APPCOMMAND_BASS_BOOST 20
+#define APPCOMMAND_BASS_UP 21
+#define APPCOMMAND_TREBLE_DOWN 22
+#define APPCOMMAND_TREBLE_UP 23
+#define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24
+#define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25
+#define APPCOMMAND_MICROPHONE_VOLUME_UP 26
+#define APPCOMMAND_HELP 27
+#define APPCOMMAND_FIND 28
+#define APPCOMMAND_NEW 29
+#define APPCOMMAND_OPEN 30
+#define APPCOMMAND_CLOSE 31
+#define APPCOMMAND_SAVE 32
+#define APPCOMMAND_PRINT 33
+#define APPCOMMAND_UNDO 34
+#define APPCOMMAND_REDO 35
+#define APPCOMMAND_COPY 36
+#define APPCOMMAND_CUT 37
+#define APPCOMMAND_PASTE 38
+#define APPCOMMAND_REPLY_TO_MAIL 39
+#define APPCOMMAND_FORWARD_MAIL 40
+#define APPCOMMAND_SEND_MAIL 41
+#define APPCOMMAND_SPELL_CHECK 42
+#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43
+#define APPCOMMAND_MIC_ON_OFF_TOGGLE 44
+#define APPCOMMAND_CORRECTION_LIST 45
+#define APPCOMMAND_MEDIA_PLAY 46
+#define APPCOMMAND_MEDIA_PAUSE 47
+#define APPCOMMAND_MEDIA_RECORD 48
+#define APPCOMMAND_MEDIA_FAST_FORWARD 49
+#define APPCOMMAND_MEDIA_REWIND 50
+#define APPCOMMAND_MEDIA_CHANNEL_UP 51
+#define APPCOMMAND_MEDIA_CHANNEL_DOWN 52
+#define APPCOMMAND_DELETE 53
+#define APPCOMMAND_DWM_FLIP3D 54
+
+#define FAPPCOMMAND_MOUSE 0x8000
+#define FAPPCOMMAND_KEY 0
+#define FAPPCOMMAND_OEM 0x1000
+#define FAPPCOMMAND_MASK 0xF000
+
+#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
+#define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
+#define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM
+#define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam))
+#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)
+
+
+/* types of LoadImage */
+#define IMAGE_BITMAP 0
+#define IMAGE_ICON 1
+#define IMAGE_CURSOR 2
+#define IMAGE_ENHMETAFILE 3
+
+/* loadflags to LoadImage */
+#define LR_DEFAULTCOLOR 0x0000
+#define LR_MONOCHROME 0x0001
+#define LR_COLOR 0x0002
+#define LR_COPYRETURNORG 0x0004
+#define LR_COPYDELETEORG 0x0008
+#define LR_LOADFROMFILE 0x0010
+#define LR_LOADTRANSPARENT 0x0020
+#define LR_DEFAULTSIZE 0x0040
+#define LR_VGA_COLOR 0x0080
+#define LR_LOADMAP3DCOLORS 0x1000
+#define LR_CREATEDIBSECTION 0x2000
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 0x8000
+
+/* Flags for DrawIconEx. */
+#define DI_MASK 0x0001
+#define DI_IMAGE 0x0002
+#define DI_NORMAL (DI_MASK | DI_IMAGE)
+#define DI_COMPAT 0x0004
+#define DI_DEFAULTSIZE 0x0008
+#define DI_NOMIRROR 0x0010
+
+/* RegisterDeviceNotification stuff */
+typedef PVOID HDEVNOTIFY;
+typedef HDEVNOTIFY *PHDEVNOTIFY;
+
+#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000
+
+/* used for GetWindowInfo() */
+
+#define WS_ACTIVECAPTION 0x0001
+
+typedef struct tagWINDOWINFO {
+ DWORD cbSize;
+ RECT rcWindow;
+ RECT rcClient;
+ DWORD dwStyle;
+ DWORD dwExStyle;
+ DWORD dwWindowStatus;
+ UINT cxWindowBorders;
+ UINT cyWindowBorders;
+ ATOM atomWindowType;
+ WORD wCreatorVersion;
+} WINDOWINFO, *PWINDOWINFO, *LPWINDOWINFO;
+
+/* used for GetTitleBarInfo() */
+
+#define CCHILDREN_TITLEBAR 5
+
+typedef struct tagTITLEBARINFO {
+ DWORD cbSize;
+ RECT rcTitleBar;
+ DWORD rgstate[CCHILDREN_TITLEBAR+1];
+} TITLEBARINFO, *PTITLEBARINFO, *LPTITLEBARINFO;
+
+/* used by GetLastInputInfo */
+typedef struct tagLASTINPUTINFO {
+ UINT cbSize;
+ DWORD dwTime;
+} LASTINPUTINFO, *PLASTINPUTINFO;
+
+/* used by GetAltTabInfo */
+typedef struct
+{
+ DWORD cbSize;
+ INT cItems;
+ INT cColumns;
+ INT cRows;
+ INT iColFocus;
+ INT iRowFocus;
+ INT cxItem;
+ INT cyItem;
+ POINT ptStart;
+} ALTTABINFO, *PALTTABINFO, *LPALTTABINFO;
+
+/* SetWinEventHook() flags */
+#define WINEVENT_OUTOFCONTEXT 0x0
+#define WINEVENT_SKIPOWNTHREAD 0x1
+#define WINEVENT_SKIPOWNPROCESS 0x2
+#define WINEVENT_INCONTEXT 0x4
+
+#define ENDSESSION_LOGOFF 0x80000000
+
+/* Object Id's */
+#define CHILDID_SELF 0
+#define INDEXID_OBJECT 0
+#define INDEXID_CONTAINER 0
+
+/* System object Id's */
+#define OBJID_WINDOW 0
+#define OBJID_SYSMENU -1
+#define OBJID_TITLEBAR -2
+#define OBJID_MENU -3
+#define OBJID_CLIENT -4
+#define OBJID_VSCROLL -5
+#define OBJID_HSCROLL -6
+#define OBJID_SIZEGRIP -7
+#define OBJID_CARET -8
+#define OBJID_CURSOR -9
+#define OBJID_ALERT -10
+#define OBJID_SOUND -11
+#define OBJID_QUERYCLASSNAMEIDX -12
+#define OBJID_NATIVEOM -16
+
+/* User event Id limits */
+#define EVENT_MIN 0x00000001
+#define EVENT_MAX 0x7FFFFFFF
+
+/* System events */
+#define EVENT_SYSTEM_SOUND 0x01
+#define EVENT_SYSTEM_ALERT 0x02
+#define EVENT_SYSTEM_FOREGROUND 0x03
+#define EVENT_SYSTEM_MENUSTART 0x04
+#define EVENT_SYSTEM_MENUEND 0x05
+#define EVENT_SYSTEM_MENUPOPUPSTART 0x06
+#define EVENT_SYSTEM_MENUPOPUPEND 0x07
+#define EVENT_SYSTEM_CAPTURESTART 0x08
+#define EVENT_SYSTEM_CAPTUREEND 0x09
+#define EVENT_SYSTEM_MOVESIZESTART 0x0A
+#define EVENT_SYSTEM_MOVESIZEEND 0x0B
+#define EVENT_SYSTEM_CONTEXTHELPSTART 0x0C
+#define EVENT_SYSTEM_CONTEXTHELPEND 0x0D
+#define EVENT_SYSTEM_DRAGDROPSTART 0x0E
+#define EVENT_SYSTEM_DRAGDROPEND 0x0F
+#define EVENT_SYSTEM_DIALOGSTART 0x10
+#define EVENT_SYSTEM_DIALOGEND 0x11
+#define EVENT_SYSTEM_SCROLLINGSTART 0x12
+#define EVENT_SYSTEM_SCROLLINGEND 0x13
+#define EVENT_SYSTEM_SWITCHSTART 0x14
+#define EVENT_SYSTEM_SWITCHEND 0x15
+#define EVENT_SYSTEM_MINIMIZESTART 0x16
+#define EVENT_SYSTEM_MINIMIZEEND 0x17
+
+/* Console events */
+#define EVENT_CONSOLE_CARET 0x4001
+#define EVENT_CONSOLE_UPDATE_REGION 0x4002
+#define EVENT_CONSOLE_UPDATE_SIMPLE 0x4003
+#define EVENT_CONSOLE_UPDATE_SCROLL 0x4004
+#define EVENT_CONSOLE_LAYOUT 0x4005
+#define EVENT_CONSOLE_START_APPLICATION 0x4006
+#define EVENT_CONSOLE_END_APPLICATION 0x4007
+
+#define CONSOLE_APPLICATION_16BIT 0x1
+#define CONSOLE_CARET_SELECTION 0x1
+#define CONSOLE_CARET_VISIBLE 0x2
+
+/* Object events */
+#define EVENT_OBJECT_CREATE 0x8000
+#define EVENT_OBJECT_DESTROY 0x8001
+#define EVENT_OBJECT_SHOW 0x8002
+#define EVENT_OBJECT_HIDE 0x8003
+#define EVENT_OBJECT_REORDER 0x8004
+#define EVENT_OBJECT_FOCUS 0x8005
+#define EVENT_OBJECT_SELECTION 0x8006
+#define EVENT_OBJECT_SELECTIONADD 0x8007
+#define EVENT_OBJECT_SELECTIONREMOVE 0x8008
+#define EVENT_OBJECT_SELECTIONWITHIN 0x8009
+#define EVENT_OBJECT_STATECHANGE 0x800A
+#define EVENT_OBJECT_LOCATIONCHANGE 0x800B
+#define EVENT_OBJECT_NAMECHANGE 0x800C
+#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
+#define EVENT_OBJECT_VALUECHANGE 0x800E
+#define EVENT_OBJECT_PARENTCHANGE 0x800F
+#define EVENT_OBJECT_HELPCHANGE 0x8010
+#define EVENT_OBJECT_DEFACTIONCHANGE 0x8011
+#define EVENT_OBJECT_ACCELERATORCHANGE 0x8012
+
+/* Sound events */
+#define SOUND_SYSTEM_STARTUP 1
+#define SOUND_SYSTEM_SHUTDOWN 2
+#define SOUND_SYSTEM_BEEP 3
+#define SOUND_SYSTEM_ERROR 4
+#define SOUND_SYSTEM_QUESTION 5
+#define SOUND_SYSTEM_WARNING 6
+#define SOUND_SYSTEM_INFORMATION 7
+#define SOUND_SYSTEM_MAXIMIZE 8
+#define SOUND_SYSTEM_MINIMIZE 9
+#define SOUND_SYSTEM_RESTOREUP 10
+#define SOUND_SYSTEM_RESTOREDOWN 11
+#define SOUND_SYSTEM_APPSTART 12
+#define SOUND_SYSTEM_FAULT 13
+#define SOUND_SYSTEM_APPEND 14
+#define SOUND_SYSTEM_MENUCOMMAND 15
+#define SOUND_SYSTEM_MENUPOPUP 16
+#define CSOUND_SYSTEM 16
+
+/* Alert events */
+#define ALERT_SYSTEM_INFORMATIONAL 1
+#define ALERT_SYSTEM_WARNING 2
+#define ALERT_SYSTEM_ERROR 3
+#define ALERT_SYSTEM_QUERY 4
+#define ALERT_SYSTEM_CRITICAL 5
+#define CALERT_SYSTEM 6
+
+/* System state flags */
+#define STATE_SYSTEM_UNAVAILABLE 0x00000001
+#define STATE_SYSTEM_SELECTED 0x00000002
+#define STATE_SYSTEM_FOCUSED 0x00000004
+#define STATE_SYSTEM_PRESSED 0x00000008
+#define STATE_SYSTEM_CHECKED 0x00000010
+#define STATE_SYSTEM_MIXED 0x00000020
+#define STATE_SYSTEM_INDETERMINATE STATE_SYSTEM_MIXED
+#define STATE_SYSTEM_READONLY 0x00000040
+#define STATE_SYSTEM_HOTTRACKED 0x00000080
+#define STATE_SYSTEM_DEFAULT 0x00000100
+#define STATE_SYSTEM_EXPANDED 0x00000200
+#define STATE_SYSTEM_COLLAPSED 0x00000400
+#define STATE_SYSTEM_BUSY 0x00000800
+#define STATE_SYSTEM_FLOATING 0x00001000
+#define STATE_SYSTEM_MARQUEED 0x00002000
+#define STATE_SYSTEM_ANIMATED 0x00004000
+#define STATE_SYSTEM_INVISIBLE 0x00008000
+#define STATE_SYSTEM_OFFSCREEN 0x00010000
+#define STATE_SYSTEM_SIZEABLE 0x00020000
+#define STATE_SYSTEM_MOVEABLE 0x00040000
+#define STATE_SYSTEM_SELFVOICING 0x00080000
+#define STATE_SYSTEM_FOCUSABLE 0x00100000
+#define STATE_SYSTEM_SELECTABLE 0x00200000
+#define STATE_SYSTEM_LINKED 0x00400000
+#define STATE_SYSTEM_TRAVERSED 0x00800000
+#define STATE_SYSTEM_MULTISELECTABLE 0x01000000
+#define STATE_SYSTEM_EXTSELECTABLE 0x02000000
+#define STATE_SYSTEM_ALERT_LOW 0x04000000
+#define STATE_SYSTEM_ALERT_MEDIUM 0x08000000
+#define STATE_SYSTEM_ALERT_HIGH 0x10000000
+#define STATE_SYSTEM_PROTECTED 0x20000000
+#define STATE_SYSTEM_VALID 0x3FFFFFFF
+
+/* Lock codes for LockSetForegroundWindow */
+#define LSFW_LOCK 1
+#define LSFW_UNLOCK 2
+
+/* Values for AllowSetForegroundWindow */
+#define ASFW_ANY ((DWORD)-1)
+
+#define EnumTaskWindows(handle,proc,lparam) \
+ EnumThreadWindows(handle,proc,lparam)
+#define OemToAnsiA OemToCharA
+#define OemToAnsiW OemToCharW
+#define OemToAnsi WINELIB_NAME_AW(OemToAnsi)
+#define OemToAnsiBuffA OemToCharBuffA
+#define OemToAnsiBuffW OemToCharBuffW
+#define OemToAnsiBuff WINELIB_NAME_AW(OemToAnsiBuff)
+#define AnsiToOemA CharToOemA
+#define AnsiToOemW CharToOemW
+#define AnsiToOem WINELIB_NAME_AW(AnsiToOem)
+#define AnsiToOemBuffA CharToOemBuffA
+#define AnsiToOemBuffW CharToOemBuffW
+#define AnsiToOemBuff WINELIB_NAME_AW(AnsiToOemBuff)
+
+/* ChangeWindowMessageFilter flags */
+#define MSGFLT_ADD 1
+#define MSGFLT_REMOVE 2
+
+/* ChangeWindowMessageFilterEx defines */
+#define MSGFLTINFO_NONE 0
+#define MSGFLTINFO_ALREADYALLOWED_FORWND 1
+#define MSGFLTINFO_ALREADYDISALLOWED_FORWND 2
+#define MSGFLTINFO_ALLOWED_HIGHER 3
+
+typedef struct tagCHANGEFILTERSTRUCT
+{
+ DWORD cbSize;
+ DWORD ExtStatus;
+} CHANGEFILTERSTRUCT, *PCHANGEFILTERSTRUCT;
+
+/* Actions for ChangeWindowMessageFilterEx */
+#define MSGFLT_RESET 0
+#define MSGFLT_ALLOW 1
+#define MSGFLT_DISALLOW 2
+
+#define USER_DEFAULT_SCREEN_DPI 96
+
+typedef enum tagAR_STATE {
+ AR_ENABLED = 0x0,
+ AR_DISABLED = 0x1,
+ AR_SUPPRESSED = 0x2,
+ AR_REMOTESESSION = 0x4,
+ AR_MULTIMON = 0x8,
+ AR_NOSENSOR = 0x10,
+ AR_NOT_SUPPORTED = 0x20,
+ AR_DOCKED = 0x40,
+ AR_LAPTOP = 0x80
+} AR_STATE, *PAR_STATE;
+
+typedef enum ORIENTATION_PREFERENCE {
+ ORIENTATION_PREFERENCE_NONE = 0x0,
+ ORIENTATION_PREFERENCE_LANDSCAPE = 0x1,
+ ORIENTATION_PREFERENCE_PORTRAIT = 0x2,
+ ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 0x4,
+ ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 0x8
+} ORIENTATION_PREFERENCE;
+
+/* Touch input definitions */
+DECLARE_HANDLE(HTOUCHINPUT);
+
+typedef struct tagTOUCHINPUT {
+ LONG x;
+ LONG y;
+ HANDLE hSource;
+ DWORD dwID;
+ DWORD dwFlags;
+ DWORD dwMask;
+ DWORD dwTime;
+ ULONG_PTR dwExtraInfo;
+ DWORD cxContact;
+ DWORD cyContact;
+} TOUCHINPUT, *PTOUCHINPUT;
+typedef TOUCHINPUT const * PCTOUCHINPUT;
+
+/* Gesture definitions */
+DECLARE_HANDLE(HGESTUREINFO);
+
+typedef struct tagGESTUREINFO {
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD dwID;
+ HWND hwndTarget;
+ POINTS ptsLocation;
+ DWORD dwInstanceID;
+ DWORD dwSequenceID;
+ ULONGLONG ullArguments;
+ UINT cbExtraArgs;
+} GESTUREINFO, *PGESTUREINFO;
+typedef GESTUREINFO const * PCGESTUREINFO;
+
+#define POINTER_DEVICE_PRODUCT_STRING_MAX 520
+
+typedef enum tagPOINTER_DEVICE_TYPE {
+ POINTER_DEVICE_TYPE_INTEGRATED_PEN = 0x00000001,
+ POINTER_DEVICE_TYPE_EXTERNAL_PEN = 0x00000002,
+ POINTER_DEVICE_TYPE_TOUCH = 0x00000003,
+ POINTER_DEVICE_TYPE_TOUCH_PAD = 0x00000004,
+ POINTER_DEVICE_TYPE_MAX = 0xFFFFFFFF
+} POINTER_DEVICE_TYPE;
+
+typedef struct tagPOINTER_DEVICE_INFO {
+ DWORD displayOrientation;
+ HANDLE device;
+ POINTER_DEVICE_TYPE pointerDeviceType;
+ HMONITOR monitor;
+ ULONG startingCursorId;
+ USHORT maxActiveContacts;
+ WCHAR productString[POINTER_DEVICE_PRODUCT_STRING_MAX];
+} POINTER_DEVICE_INFO;
+
+enum tagPOINTER_INPUT_TYPE
+{
+ PT_POINTER = 1,
+ PT_TOUCH,
+ PT_PEN,
+ PT_MOUSE,
+ PT_TOUCHPAD,
+};
+typedef DWORD POINTER_INPUT_TYPE;
+
+typedef struct tagAUDIODESCRIPTION
+{
+ UINT cbSize;
+ BOOL Enabled;
+ LCID Locale;
+} AUDIODESCRIPTION, *LPAUDIODESCRIPTION;
+
+#if defined(_WINGDI_) && !defined(NOGDI)
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsA(LPDEVMODEA,DWORD);
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsW(LPDEVMODEW,DWORD);
+#define ChangeDisplaySettings WINELIB_NAME_AW(ChangeDisplaySettings)
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsExA(LPCSTR,LPDEVMODEA,HWND,DWORD,LPVOID);
+WINUSERAPI LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPVOID);
+#define ChangeDisplaySettingsEx WINELIB_NAME_AW(ChangeDisplaySettingsEx)
+WINUSERAPI HDESK WINAPI CreateDesktopA(LPCSTR,LPCSTR,LPDEVMODEA,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+WINUSERAPI HDESK WINAPI CreateDesktopW(LPCWSTR,LPCWSTR,LPDEVMODEW,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+#define CreateDesktop WINELIB_NAME_AW(CreateDesktop)
+WINUSERAPI LONG WINAPI DisplayConfigGetDeviceInfo(DISPLAYCONFIG_DEVICE_INFO_HEADER *);
+WINUSERAPI BOOL WINAPI EnumDisplayDevicesA(LPCSTR,DWORD,LPDISPLAY_DEVICEA,DWORD);
+WINUSERAPI BOOL WINAPI EnumDisplayDevicesW(LPCWSTR,DWORD,LPDISPLAY_DEVICEW,DWORD);
+#define EnumDisplayDevices WINELIB_NAME_AW(EnumDisplayDevices)
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsA(LPCSTR,DWORD,LPDEVMODEA);
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsW(LPCWSTR,DWORD,LPDEVMODEW);
+#define EnumDisplaySettings WINELIB_NAME_AW(EnumDisplaySettings)
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsExA(LPCSTR,DWORD,LPDEVMODEA,DWORD);
+WINUSERAPI BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR,DWORD,LPDEVMODEW,DWORD);
+#define EnumDisplaySettingsEx WINELIB_NAME_AW(EnumDisplaySettingsEx)
+WINUSERAPI LONG WINAPI GetDisplayConfigBufferSizes(UINT32,UINT32*,UINT32*);
+WINUSERAPI BOOL WINAPI UpdateLayeredWindow(HWND,HDC,POINT*,SIZE*,HDC,POINT*,COLORREF,BLENDFUNCTION*,DWORD);
+WINUSERAPI BOOL WINAPI UpdateLayeredWindowIndirect(HWND,UPDATELAYEREDWINDOWINFO const*);
+#endif /* defined(_WINGDI_) && !defined(NOGDI) */
+
+WINUSERAPI HKL WINAPI ActivateKeyboardLayout(HKL,UINT);
+WINUSERAPI BOOL WINAPI AddClipboardFormatListener(HWND);
+WINUSERAPI BOOL WINAPI AdjustWindowRect(LPRECT,DWORD,BOOL);
+WINUSERAPI BOOL WINAPI AdjustWindowRectEx(LPRECT,DWORD,BOOL,DWORD);
+WINUSERAPI BOOL WINAPI AdjustWindowRectExForDpi(RECT*,DWORD,BOOL,DWORD,UINT);
+WINUSERAPI BOOL WINAPI AllowSetForegroundWindow(DWORD);
+WINUSERAPI BOOL WINAPI AnimateWindow(HWND,DWORD,DWORD);
+#define AnsiLowerA CharLowerA
+#define AnsiLowerW CharLowerW
+#define AnsiLower WINELIB_NAME_AW(AnsiLower)
+#define AnsiLowerBuffA CharLowerBuffA
+#define AnsiLowerBuffW CharLowerBuffW
+#define AnsiLowerBuff WINELIB_NAME_AW(AnsiLowerBuff)
+#define AnsiNextA CharNextA
+#define AnsiNextW CharNextW
+#define AnsiNext WINELIB_NAME_AW(AnsiNext)
+#define AnsiPrevA CharPrevA
+#define AnsiPrevW CharPrevW
+#define AnsiPrev WINELIB_NAME_AW(AnsiPrev)
+#define AnsiUpperA CharUpperA
+#define AnsiUpperW CharUpperW
+#define AnsiUpper WINELIB_NAME_AW(AnsiUpper)
+#define AnsiUpperBuffA CharUpperBuffA
+#define AnsiUpperBuffW CharUpperBuffW
+#define AnsiUpperBuff WINELIB_NAME_AW(AnsiUpperBuff)
+WINUSERAPI BOOL WINAPI AnyPopup(void);
+WINUSERAPI BOOL WINAPI AppendMenuA(HMENU,UINT,UINT_PTR,LPCSTR);
+WINUSERAPI BOOL WINAPI AppendMenuW(HMENU,UINT,UINT_PTR,LPCWSTR);
+#define AppendMenu WINELIB_NAME_AW(AppendMenu)
+WINUSERAPI BOOL WINAPI AreDpiAwarenessContextsEqual(DPI_AWARENESS_CONTEXT,DPI_AWARENESS_CONTEXT);
+WINUSERAPI UINT WINAPI ArrangeIconicWindows(HWND);
+WINUSERAPI BOOL WINAPI AttachThreadInput(DWORD,DWORD,BOOL);
+WINUSERAPI HDWP WINAPI BeginDeferWindowPos(INT);
+WINUSERAPI HDC WINAPI BeginPaint(HWND,LPPAINTSTRUCT);
+WINUSERAPI BOOL WINAPI BlockInput(BOOL);
+WINUSERAPI BOOL WINAPI BringWindowToTop(HWND);
+WINUSERAPI LONG WINAPI BroadcastSystemMessageA(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+WINUSERAPI LONG WINAPI BroadcastSystemMessageW(DWORD,LPDWORD,UINT,WPARAM,LPARAM);
+#define BroadcastSystemMessage WINELIB_NAME_AW(BroadcastSystemMessage)
+WINUSERAPI LONG WINAPI BroadcastSystemMessageExA(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO);
+WINUSERAPI LONG WINAPI BroadcastSystemMessageExW(DWORD,LPDWORD,UINT,WPARAM,LPARAM,PBSMINFO);
+#define BroadcastSystemMessageEx WINELIB_NAME_AW(BroadcastSystemMessageEx)
+WINUSERAPI void WINAPI CalcChildScroll(HWND, INT);
+WINUSERAPI BOOL WINAPI CallMsgFilterA(LPMSG,INT);
+WINUSERAPI BOOL WINAPI CallMsgFilterW(LPMSG,INT);
+#define CallMsgFilter WINELIB_NAME_AW(CallMsgFilter)
+WINUSERAPI LRESULT WINAPI CallNextHookEx(HHOOK,INT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI CallWindowProcA(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI CallWindowProcW(WNDPROC,HWND,UINT,WPARAM,LPARAM);
+#define CallWindowProc WINELIB_NAME_AW(CallWindowProc)
+WINUSERAPI WORD WINAPI CascadeWindows(HWND, UINT, const RECT *, UINT, const HWND *);
+WINUSERAPI BOOL WINAPI ChangeClipboardChain(HWND,HWND);
+WINUSERAPI BOOL WINAPI ChangeMenuA(HMENU,UINT,LPCSTR,UINT,UINT);
+WINUSERAPI BOOL WINAPI ChangeMenuW(HMENU,UINT,LPCWSTR,UINT,UINT);
+#define ChangeMenu WINELIB_NAME_AW(ChangeMenu)
+WINUSERAPI BOOL WINAPI ChangeWindowMessageFilter(UINT,DWORD);
+WINUSERAPI BOOL WINAPI ChangeWindowMessageFilterEx(HWND,UINT,DWORD,CHANGEFILTERSTRUCT*);
+WINUSERAPI LPSTR WINAPI CharLowerA(LPSTR);
+WINUSERAPI LPWSTR WINAPI CharLowerW(LPWSTR);
+#define CharLower WINELIB_NAME_AW(CharLower)
+WINUSERAPI DWORD WINAPI CharLowerBuffA(LPSTR,DWORD);
+WINUSERAPI DWORD WINAPI CharLowerBuffW(LPWSTR,DWORD);
+#define CharLowerBuff WINELIB_NAME_AW(CharLowerBuff)
+WINUSERAPI LPSTR WINAPI CharNextA(LPCSTR);
+WINUSERAPI LPWSTR WINAPI CharNextW(LPCWSTR);
+#define CharNext WINELIB_NAME_AW(CharNext)
+WINUSERAPI LPSTR WINAPI CharNextExA(WORD,LPCSTR,DWORD);
+/* no CharNextExW (doesn't make sense) */
+WINUSERAPI LPSTR WINAPI CharPrevA(LPCSTR,LPCSTR);
+WINUSERAPI LPWSTR WINAPI CharPrevW(LPCWSTR,LPCWSTR);
+#define CharPrev WINELIB_NAME_AW(CharPrev)
+WINUSERAPI LPSTR WINAPI CharPrevExA(WORD,LPCSTR,LPCSTR,DWORD);
+/* no CharPrevExW (doesn't make sense) */
+WINUSERAPI LPSTR WINAPI CharUpperA(LPSTR);
+WINUSERAPI LPWSTR WINAPI CharUpperW(LPWSTR);
+#define CharUpper WINELIB_NAME_AW(CharUpper)
+WINUSERAPI DWORD WINAPI CharUpperBuffA(LPSTR,DWORD);
+WINUSERAPI DWORD WINAPI CharUpperBuffW(LPWSTR,DWORD);
+#define CharUpperBuff WINELIB_NAME_AW(CharUpperBuff)
+WINUSERAPI BOOL WINAPI CharToOemA(LPCSTR,LPSTR);
+WINUSERAPI BOOL WINAPI CharToOemW(LPCWSTR,LPSTR);
+#define CharToOem WINELIB_NAME_AW(CharToOem)
+WINUSERAPI BOOL WINAPI CharToOemBuffA(LPCSTR,LPSTR,DWORD);
+WINUSERAPI BOOL WINAPI CharToOemBuffW(LPCWSTR,LPSTR,DWORD);
+#define CharToOemBuff WINELIB_NAME_AW(CharToOemBuff)
+WINUSERAPI BOOL WINAPI CheckDlgButton(HWND,INT,UINT);
+WINUSERAPI DWORD WINAPI CheckMenuItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI CheckMenuRadioItem(HMENU,UINT,UINT,UINT,UINT);
+WINUSERAPI BOOL WINAPI CheckRadioButton(HWND,int,int,int);
+WINUSERAPI HWND WINAPI ChildWindowFromPoint(HWND,POINT);
+WINUSERAPI HWND WINAPI ChildWindowFromPointEx(HWND,POINT,UINT);
+WINUSERAPI BOOL WINAPI ClientToScreen(HWND,LPPOINT);
+WINUSERAPI BOOL WINAPI ClipCursor(const RECT*);
+WINUSERAPI BOOL WINAPI CloseClipboard(void);
+WINUSERAPI BOOL WINAPI CloseDesktop(HDESK);
+WINUSERAPI BOOL WINAPI CloseTouchInputHandle(HTOUCHINPUT);
+WINUSERAPI BOOL WINAPI CloseWindow(HWND);
+WINUSERAPI BOOL WINAPI CloseWindowStation(HWINSTA);
+WINUSERAPI INT WINAPI CopyAcceleratorTableA(HACCEL,LPACCEL,INT);
+WINUSERAPI INT WINAPI CopyAcceleratorTableW(HACCEL,LPACCEL,INT);
+#define CopyAcceleratorTable WINELIB_NAME_AW(CopyAcceleratorTable)
+#define CopyCursor(cur) ((HCURSOR)CopyIcon((HICON)(cur)))
+WINUSERAPI HICON WINAPI CopyIcon(HICON);
+WINUSERAPI HANDLE WINAPI CopyImage(HANDLE,UINT,INT,INT,UINT);
+WINUSERAPI BOOL WINAPI CopyRect(RECT*,const RECT*);
+WINUSERAPI INT WINAPI CountClipboardFormats(void);
+WINUSERAPI HACCEL WINAPI CreateAcceleratorTableA(LPACCEL,INT);
+WINUSERAPI HACCEL WINAPI CreateAcceleratorTableW(LPACCEL,INT);
+#define CreateAcceleratorTable WINELIB_NAME_AW(CreateAcceleratorTable)
+WINUSERAPI HICON WINAPI CreateIconIndirect(PICONINFO);
+WINUSERAPI BOOL WINAPI CreateCaret(HWND,HBITMAP,INT,INT);
+WINUSERAPI HCURSOR WINAPI CreateCursor(HINSTANCE,INT,INT,INT,INT,LPCVOID,LPCVOID);
+#define CreateDialogA(inst,ptr,hwnd,dlg) CreateDialogParamA(inst,ptr,hwnd,dlg,0)
+#define CreateDialogW(inst,ptr,hwnd,dlg) CreateDialogParamW(inst,ptr,hwnd,dlg,0)
+#define CreateDialog WINELIB_NAME_AW(CreateDialog)
+#define CreateDialogIndirectA(inst,ptr,hwnd,dlg) CreateDialogIndirectParamA(inst,ptr,hwnd,dlg,0)
+#define CreateDialogIndirectW(inst,ptr,hwnd,dlg) CreateDialogIndirectParamW(inst,ptr,hwnd,dlg,0)
+#define CreateDialogIndirect WINELIB_NAME_AW(CreateDialogIndirect)
+WINUSERAPI HWND WINAPI CreateDialogIndirectParamA(HINSTANCE,LPCDLGTEMPLATEA,HWND,DLGPROC,LPARAM);
+WINUSERAPI HWND WINAPI CreateDialogIndirectParamW(HINSTANCE,LPCDLGTEMPLATEW,HWND,DLGPROC,LPARAM);
+#define CreateDialogIndirectParam WINELIB_NAME_AW(CreateDialogIndirectParam)
+WINUSERAPI HWND WINAPI CreateDialogParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+WINUSERAPI HWND WINAPI CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+#define CreateDialogParam WINELIB_NAME_AW(CreateDialogParam)
+WINUSERAPI HICON WINAPI CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,LPCVOID,LPCVOID);
+WINUSERAPI HICON WINAPI CreateIconFromResource(LPBYTE,UINT,BOOL,DWORD);
+WINUSERAPI HICON WINAPI CreateIconFromResourceEx(LPBYTE,UINT,BOOL,DWORD,INT,INT,UINT);
+WINUSERAPI HMENU WINAPI CreateMenu(void);
+WINUSERAPI HMENU WINAPI CreatePopupMenu(void);
+#define CreateWindowA(className,titleName,style,x,y,width,height,parent,menu,instance,param) CreateWindowExA(0,className,titleName,style,x,y,width,height,parent,menu,instance,param)
+#define CreateWindowW(className,titleName,style,x,y,width,height,parent,menu,instance,param) CreateWindowExW(0,className,titleName,style,x,y,width,height,parent,menu,instance,param)
+#define CreateWindow WINELIB_NAME_AW(CreateWindow)
+WINUSERAPI HWND WINAPI CreateWindowExA(DWORD,LPCSTR,LPCSTR,DWORD,INT,INT,INT,INT,HWND,HMENU,HINSTANCE,LPVOID);
+WINUSERAPI HWND WINAPI CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DWORD,INT,INT,INT,INT,HWND,HMENU,HINSTANCE,LPVOID);
+#define CreateWindowEx WINELIB_NAME_AW(CreateWindowEx)
+WINUSERAPI HWINSTA WINAPI CreateWindowStationA(LPCSTR,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+WINUSERAPI HWINSTA WINAPI CreateWindowStationW(LPCWSTR,DWORD,ACCESS_MASK,LPSECURITY_ATTRIBUTES);
+#define CreateWindowStation WINELIB_NAME_AW(CreateWindowStation)
+WINUSERAPI HWND WINAPI CreateMDIWindowA(LPCSTR,LPCSTR,DWORD,INT,INT,INT,INT,HWND,HINSTANCE,LPARAM);
+WINUSERAPI HWND WINAPI CreateMDIWindowW(LPCWSTR,LPCWSTR,DWORD,INT,INT,INT,INT,HWND,HINSTANCE,LPARAM);
+#define CreateMDIWindow WINELIB_NAME_AW(CreateMDIWindow)
+WINUSERAPI LRESULT WINAPI DefDlgProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefDlgProcW(HWND,UINT,WPARAM,LPARAM);
+#define DefDlgProc WINELIB_NAME_AW(DefDlgProc)
+WINUSERAPI HDWP WINAPI DeferWindowPos(HDWP,HWND,HWND,INT,INT,INT,INT,UINT);
+WINUSERAPI LRESULT WINAPI DefFrameProcA(HWND,HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefFrameProcW(HWND,HWND,UINT,WPARAM,LPARAM);
+#define DefFrameProc WINELIB_NAME_AW(DefFrameProc)
+#define DefHookProc(code,wparam,lparam,phhook) CallNextHookEx(*(phhook),code,wparam,lparam)
+WINUSERAPI LRESULT WINAPI DefMDIChildProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefMDIChildProcW(HWND,UINT,WPARAM,LPARAM);
+#define DefMDIChildProc WINELIB_NAME_AW(DefMDIChildProc)
+WINUSERAPI LRESULT WINAPI DefRawInputProc(PRAWINPUT*,INT,UINT);
+WINUSERAPI LRESULT WINAPI DefWindowProcA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI DefWindowProcW(HWND,UINT,WPARAM,LPARAM);
+#define DefWindowProc WINELIB_NAME_AW(DefWindowProc)
+WINUSERAPI BOOL WINAPI DeleteMenu(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI DeregisterShellHookWindow(HWND);
+WINUSERAPI BOOL WINAPI DestroyAcceleratorTable(HACCEL);
+WINUSERAPI BOOL WINAPI DestroyCaret(void);
+WINUSERAPI BOOL WINAPI DestroyCursor(HCURSOR);
+WINUSERAPI BOOL WINAPI DestroyIcon(HICON);
+WINUSERAPI BOOL WINAPI DestroyMenu(HMENU);
+WINUSERAPI BOOL WINAPI DestroyWindow(HWND);
+#define DialogBoxA(inst,template,owner,func) DialogBoxParamA(inst,template,owner,func,0)
+#define DialogBoxW(inst,template,owner,func) DialogBoxParamW(inst,template,owner,func,0)
+#define DialogBox WINELIB_NAME_AW(DialogBox)
+#define DialogBoxIndirectA(inst,template,owner,func) DialogBoxIndirectParamA(inst,template,owner,func,0)
+#define DialogBoxIndirectW(inst,template,owner,func) DialogBoxIndirectParamW(inst,template,owner,func,0)
+#define DialogBoxIndirect WINELIB_NAME_AW(DialogBoxIndirect)
+WINUSERAPI INT_PTR WINAPI DialogBoxIndirectParamA(HINSTANCE,LPCDLGTEMPLATEA,HWND,DLGPROC,LPARAM);
+WINUSERAPI INT_PTR WINAPI DialogBoxIndirectParamW(HINSTANCE,LPCDLGTEMPLATEW,HWND,DLGPROC,LPARAM);
+#define DialogBoxIndirectParam WINELIB_NAME_AW(DialogBoxIndirectParam)
+WINUSERAPI INT_PTR WINAPI DialogBoxParamA(HINSTANCE,LPCSTR,HWND,DLGPROC,LPARAM);
+WINUSERAPI INT_PTR WINAPI DialogBoxParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM);
+#define DialogBoxParam WINELIB_NAME_AW(DialogBoxParam)
+WINUSERAPI VOID WINAPI DisableProcessWindowsGhosting(VOID);
+WINUSERAPI LRESULT WINAPI DispatchMessageA(const MSG*);
+WINUSERAPI LRESULT WINAPI DispatchMessageW(const MSG*);
+#define DispatchMessage WINELIB_NAME_AW(DispatchMessage)
+WINUSERAPI INT WINAPI DlgDirListA(HWND,LPSTR,INT,INT,UINT);
+WINUSERAPI INT WINAPI DlgDirListW(HWND,LPWSTR,INT,INT,UINT);
+#define DlgDirList WINELIB_NAME_AW(DlgDirList)
+WINUSERAPI INT WINAPI DlgDirListComboBoxA(HWND,LPSTR,INT,INT,UINT);
+WINUSERAPI INT WINAPI DlgDirListComboBoxW(HWND,LPWSTR,INT,INT,UINT);
+#define DlgDirListComboBox WINELIB_NAME_AW(DlgDirListComboBox)
+WINUSERAPI BOOL WINAPI DlgDirSelectComboBoxExA(HWND,LPSTR,INT,INT);
+WINUSERAPI BOOL WINAPI DlgDirSelectComboBoxExW(HWND,LPWSTR,INT,INT);
+#define DlgDirSelectComboBoxEx WINELIB_NAME_AW(DlgDirSelectComboBoxEx)
+WINUSERAPI BOOL WINAPI DlgDirSelectExA(HWND,LPSTR,INT,INT);
+WINUSERAPI BOOL WINAPI DlgDirSelectExW(HWND,LPWSTR,INT,INT);
+#define DlgDirSelectEx WINELIB_NAME_AW(DlgDirSelectEx)
+WINUSERAPI BOOL WINAPI DragDetect(HWND,POINT);
+WINUSERAPI DWORD WINAPI DragObject(HWND,HWND,UINT,ULONG_PTR,HCURSOR);
+WINUSERAPI BOOL WINAPI DrawAnimatedRects(HWND,int,const RECT*,const RECT*);
+WINUSERAPI BOOL WINAPI DrawCaption(HWND,HDC,const RECT*,UINT);
+WINUSERAPI BOOL WINAPI DrawCaptionTempA(HWND,HDC,const RECT*,HFONT,HICON,LPCSTR,UINT);
+WINUSERAPI BOOL WINAPI DrawCaptionTempW(HWND,HDC,const RECT*,HFONT,HICON,LPCWSTR,UINT);
+#define DrawCaptionTemp WINELIB_NAME_AW(DrawCaptionTemp)
+WINUSERAPI BOOL WINAPI DrawEdge(HDC,LPRECT,UINT,UINT);
+WINUSERAPI BOOL WINAPI DrawFocusRect(HDC,const RECT*);
+WINUSERAPI BOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
+WINUSERAPI BOOL WINAPI DrawIcon(HDC,INT,INT,HICON);
+WINUSERAPI BOOL WINAPI DrawIconEx(HDC,INT,INT,HICON,INT,INT,UINT,HBRUSH,UINT);
+WINUSERAPI BOOL WINAPI DrawMenuBar(HWND);
+WINUSERAPI BOOL WINAPI DrawStateA(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,INT,INT,INT,INT,UINT);
+WINUSERAPI BOOL WINAPI DrawStateW(HDC,HBRUSH,DRAWSTATEPROC,LPARAM,WPARAM,INT,INT,INT,INT,UINT);
+#define DrawState WINELIB_NAME_AW(DrawState)
+WINUSERAPI INT WINAPI DrawTextA(HDC,LPCSTR,INT,LPRECT,UINT);
+WINUSERAPI INT WINAPI DrawTextW(HDC,LPCWSTR,INT,LPRECT,UINT);
+#define DrawText WINELIB_NAME_AW(DrawText)
+WINUSERAPI INT WINAPI DrawTextExA(HDC,LPSTR,INT,LPRECT,UINT,LPDRAWTEXTPARAMS);
+WINUSERAPI INT WINAPI DrawTextExW(HDC,LPWSTR,INT,LPRECT,UINT,LPDRAWTEXTPARAMS);
+#define DrawTextEx WINELIB_NAME_AW(DrawTextEx)
+WINUSERAPI BOOL WINAPI EmptyClipboard(void);
+WINUSERAPI BOOL WINAPI EnableMenuItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI EnableMouseInPointer(BOOL);
+WINUSERAPI BOOL WINAPI EnableScrollBar(HWND,UINT,UINT);
+WINUSERAPI BOOL WINAPI EnableWindow(HWND,BOOL);
+WINUSERAPI BOOL WINAPI EndDeferWindowPos(HDWP);
+WINUSERAPI BOOL WINAPI EndDialog(HWND,INT_PTR);
+WINUSERAPI BOOL WINAPI EndMenu(void);
+WINUSERAPI BOOL WINAPI EndPaint(HWND,const PAINTSTRUCT*);
+WINUSERAPI BOOL WINAPI EnumChildWindows(HWND,WNDENUMPROC,LPARAM);
+WINUSERAPI UINT WINAPI EnumClipboardFormats(UINT);
+WINUSERAPI BOOL WINAPI EnumDesktopsA(HWINSTA,DESKTOPENUMPROCA,LPARAM);
+WINUSERAPI BOOL WINAPI EnumDesktopsW(HWINSTA,DESKTOPENUMPROCW,LPARAM);
+#define EnumDesktops WINELIB_NAME_AW(EnumDesktops)
+WINUSERAPI BOOL WINAPI EnumDesktopWindows(HDESK,WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL WINAPI EnumDisplayMonitors(HDC,LPRECT,MONITORENUMPROC,LPARAM);
+WINUSERAPI INT WINAPI EnumPropsA(HWND,PROPENUMPROCA);
+WINUSERAPI INT WINAPI EnumPropsW(HWND,PROPENUMPROCW);
+#define EnumProps WINELIB_NAME_AW(EnumProps)
+WINUSERAPI INT WINAPI EnumPropsExA(HWND,PROPENUMPROCEXA,LPARAM);
+WINUSERAPI INT WINAPI EnumPropsExW(HWND,PROPENUMPROCEXW,LPARAM);
+#define EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
+WINUSERAPI BOOL WINAPI EnumThreadWindows(DWORD,WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL WINAPI EnumWindows(WNDENUMPROC,LPARAM);
+WINUSERAPI BOOL WINAPI EnumWindowStationsA(WINSTAENUMPROCA,LPARAM);
+WINUSERAPI BOOL WINAPI EnumWindowStationsW(WINSTAENUMPROCW,LPARAM);
+#define EnumWindowStations WINELIB_NAME_AW(EnumWindowStations)
+WINUSERAPI INT WINAPI ExcludeUpdateRgn(HDC,HWND);
+#define ExitWindows(a,b) ExitWindowsEx(EWX_LOGOFF,0xffffffff)
+WINUSERAPI BOOL WINAPI ExitWindowsEx(UINT,DWORD);
+WINUSERAPI INT WINAPI FillRect(HDC,const RECT*,HBRUSH);
+WINUSERAPI HWND WINAPI FindWindowA(LPCSTR,LPCSTR);
+WINUSERAPI HWND WINAPI FindWindowW(LPCWSTR,LPCWSTR);
+#define FindWindow WINELIB_NAME_AW(FindWindow)
+WINUSERAPI HWND WINAPI FindWindowExA(HWND,HWND,LPCSTR,LPCSTR);
+WINUSERAPI HWND WINAPI FindWindowExW(HWND,HWND,LPCWSTR,LPCWSTR);
+#define FindWindowEx WINELIB_NAME_AW(FindWindowEx)
+WINUSERAPI BOOL WINAPI FlashWindow(HWND,BOOL);
+WINUSERAPI BOOL WINAPI FlashWindowEx(PFLASHWINFO);
+WINUSERAPI INT WINAPI FrameRect(HDC,const RECT*,HBRUSH);
+WINUSERAPI HWND WINAPI GetActiveWindow(void);
+WINUSERAPI BOOL WINAPI GetAltTabInfoA(HWND,INT,PALTTABINFO,LPSTR,UINT);
+WINUSERAPI BOOL WINAPI GetAltTabInfoW(HWND,INT,PALTTABINFO,LPWSTR,UINT);
+#define GetAltTabInfo WINELIB_NAME_AW(GetAltTabInfo)
+WINUSERAPI HWND WINAPI GetAncestor(HWND,UINT);
+WINUSERAPI DWORD WINAPI GetAppCompatFlags(HTASK);
+WINUSERAPI SHORT WINAPI GetAsyncKeyState(INT);
+WINUSERAPI BOOL WINAPI GetAutoRotationState(AR_STATE*);
+WINUSERAPI DPI_AWARENESS WINAPI GetAwarenessFromDpiAwarenessContext(DPI_AWARENESS_CONTEXT);
+WINUSERAPI HWND WINAPI GetCapture(void);
+WINUSERAPI UINT WINAPI GetCaretBlinkTime(void);
+WINUSERAPI BOOL WINAPI GetCaretPos(LPPOINT);
+WINUSERAPI BOOL WINAPI GetClassInfoA(HINSTANCE,LPCSTR,WNDCLASSA *);
+WINUSERAPI BOOL WINAPI GetClassInfoW(HINSTANCE,LPCWSTR,WNDCLASSW *);
+#define GetClassInfo WINELIB_NAME_AW(GetClassInfo)
+WINUSERAPI BOOL WINAPI GetClassInfoExA(HINSTANCE,LPCSTR,WNDCLASSEXA *);
+WINUSERAPI BOOL WINAPI GetClassInfoExW(HINSTANCE,LPCWSTR,WNDCLASSEXW *);
+#define GetClassInfoEx WINELIB_NAME_AW(GetClassInfoEx)
+WINUSERAPI DWORD WINAPI GetClassLongA(HWND,INT);
+WINUSERAPI DWORD WINAPI GetClassLongW(HWND,INT);
+#define GetClassLong WINELIB_NAME_AW(GetClassLong)
+#ifdef _WIN64
+WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrA(HWND,INT);
+WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrW(HWND,INT);
+#else
+#define GetClassLongPtrA GetClassLongA
+#define GetClassLongPtrW GetClassLongW
+#endif
+#define GetClassLongPtr WINELIB_NAME_AW(GetClassLongPtr)
+WINUSERAPI INT WINAPI GetClassNameA(HWND,LPSTR,INT);
+WINUSERAPI INT WINAPI GetClassNameW(HWND,LPWSTR,INT);
+#define GetClassName WINELIB_NAME_AW(GetClassName)
+WINUSERAPI WORD WINAPI GetClassWord(HWND,INT);
+WINUSERAPI BOOL WINAPI GetClientRect(HWND,LPRECT);
+WINUSERAPI HANDLE WINAPI GetClipboardData(UINT);
+WINUSERAPI INT WINAPI GetClipboardFormatNameA(UINT,LPSTR,INT);
+WINUSERAPI INT WINAPI GetClipboardFormatNameW(UINT,LPWSTR,INT);
+#define GetClipboardFormatName WINELIB_NAME_AW(GetClipboardFormatName)
+WINUSERAPI HWND WINAPI GetClipboardOwner(void);
+WINUSERAPI DWORD WINAPI GetClipboardSequenceNumber(VOID);
+WINUSERAPI HWND WINAPI GetClipboardViewer(void);
+WINUSERAPI BOOL WINAPI GetClipCursor(LPRECT);
+WINUSERAPI BOOL WINAPI GetComboBoxInfo(HWND,PCOMBOBOXINFO);
+WINUSERAPI HCURSOR WINAPI GetCursor(void);
+WINUSERAPI BOOL WINAPI GetCursorInfo(PCURSORINFO);
+WINUSERAPI HCURSOR WINAPI GetCursorFrameInfo(HCURSOR,DWORD,DWORD,DWORD*,DWORD*);
+WINUSERAPI BOOL WINAPI GetCursorPos(LPPOINT);
+WINUSERAPI HDC WINAPI GetDC(HWND);
+WINUSERAPI HDC WINAPI GetDCEx(HWND,HRGN,DWORD);
+WINUSERAPI HWND WINAPI GetDesktopWindow(void);
+WINUSERAPI DWORD WINAPI GetDialogBaseUnits(void);
+WINUSERAPI BOOL WINAPI GetDisplayAutoRotationPreferences(ORIENTATION_PREFERENCE*);
+WINUSERAPI INT WINAPI GetDlgCtrlID(HWND);
+WINUSERAPI HWND WINAPI GetDlgItem(HWND,INT);
+WINUSERAPI UINT WINAPI GetDlgItemInt(HWND,INT,BOOL*,BOOL);
+WINUSERAPI UINT WINAPI GetDlgItemTextA(HWND,INT,LPSTR,INT);
+WINUSERAPI UINT WINAPI GetDlgItemTextW(HWND,INT,LPWSTR,INT);
+#define GetDlgItemText WINELIB_NAME_AW(GetDlgItemText)
+WINUSERAPI UINT WINAPI GetDoubleClickTime(void);
+WINUSERAPI BOOL WINAPI GetDpiForMonitorInternal(HMONITOR,UINT,UINT*,UINT*);
+WINUSERAPI UINT WINAPI GetDpiForWindow(HWND);
+WINUSERAPI UINT WINAPI GetDpiForSystem(void);
+WINUSERAPI HWND WINAPI GetFocus(void);
+WINUSERAPI HWND WINAPI GetForegroundWindow(void);
+WINUSERAPI BOOL WINAPI GetGestureConfig(HWND,DWORD,DWORD,UINT*,GESTURECONFIG*,UINT);
+WINUSERAPI BOOL WINAPI GetGestureInfo(HGESTUREINFO,PGESTUREINFO);
+WINUSERAPI BOOL WINAPI GetGUIThreadInfo(DWORD,GUITHREADINFO*);
+WINUSERAPI DWORD WINAPI GetGuiResources(HANDLE,DWORD);
+WINUSERAPI BOOL WINAPI GetIconInfo(HICON,PICONINFO);
+WINUSERAPI BOOL WINAPI GetIconInfoExA(HICON,ICONINFOEXA*);
+WINUSERAPI BOOL WINAPI GetIconInfoExW(HICON,ICONINFOEXW*);
+#define GetIconInfoEx WINELIB_NAME_AW(GetIconInfoEx)
+WINUSERAPI BOOL WINAPI GetInputState(void);
+WINUSERAPI UINT WINAPI GetInternalWindowPos(HWND,LPRECT,LPPOINT);
+WINUSERAPI UINT WINAPI GetKBCodePage(void);
+WINUSERAPI HKL WINAPI GetKeyboardLayout(DWORD);
+WINUSERAPI UINT WINAPI GetKeyboardLayoutList(INT,HKL *);
+WINUSERAPI BOOL WINAPI GetKeyboardState(LPBYTE);
+WINUSERAPI INT WINAPI GetKeyboardType(INT);
+WINUSERAPI INT WINAPI GetKeyNameTextA(LONG,LPSTR,INT);
+WINUSERAPI INT WINAPI GetKeyNameTextW(LONG,LPWSTR,INT);
+#define GetKeyNameText WINELIB_NAME_AW(GetKeyNameText)
+WINUSERAPI BOOL WINAPI GetKeyboardLayoutNameA(LPSTR);
+WINUSERAPI BOOL WINAPI GetKeyboardLayoutNameW(LPWSTR);
+#define GetKeyboardLayoutName WINELIB_NAME_AW(GetKeyboardLayoutName)
+WINUSERAPI SHORT WINAPI GetKeyState(INT);
+WINUSERAPI HWND WINAPI GetLastActivePopup(HWND);
+WINUSERAPI BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO);
+WINUSERAPI DWORD WINAPI GetListBoxInfo(HWND);
+WINUSERAPI UINT WINAPI GetRawInputBuffer(PRAWINPUT,PUINT,UINT);
+WINUSERAPI UINT WINAPI GetRawInputData(HRAWINPUT,UINT,LPVOID,PUINT,UINT);
+WINUSERAPI UINT WINAPI GetRawInputDeviceInfoA(HANDLE,UINT,LPVOID,PUINT);
+WINUSERAPI UINT WINAPI GetRawInputDeviceInfoW(HANDLE,UINT,LPVOID,PUINT);
+#define GetRawInputDeviceInfo WINELIB_NAME_AW(GetRawInputDeviceInfo)
+WINUSERAPI UINT WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST,PUINT,UINT);
+WINUSERAPI UINT WINAPI GetRegisteredRawInputDevices(PRAWINPUTDEVICE,PUINT,UINT);
+WINUSERAPI BOOL WINAPI GetLayeredWindowAttributes(HWND,COLORREF*,BYTE*,DWORD*);
+WINUSERAPI HMENU WINAPI GetMenu(HWND);
+WINUSERAPI BOOL WINAPI GetMenuBarInfo(HWND,LONG,LONG,PMENUBARINFO);
+WINUSERAPI DWORD WINAPI GetMenuCheckMarkDimensions(void);
+WINUSERAPI DWORD WINAPI GetMenuContextHelpId(HMENU);
+WINUSERAPI UINT WINAPI GetMenuDefaultItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO);
+WINUSERAPI INT WINAPI GetMenuItemCount(HMENU);
+WINUSERAPI UINT WINAPI GetMenuItemID(HMENU,INT);
+WINUSERAPI BOOL WINAPI GetMenuItemInfoA(HMENU,UINT,BOOL,MENUITEMINFOA*);
+WINUSERAPI BOOL WINAPI GetMenuItemInfoW(HMENU,UINT,BOOL,MENUITEMINFOW*);
+#define GetMenuItemInfo WINELIB_NAME_AW(GetMenuItemInfo)
+WINUSERAPI BOOL WINAPI GetMenuItemRect(HWND,HMENU,UINT,LPRECT);
+WINUSERAPI UINT WINAPI GetMenuState(HMENU,UINT,UINT);
+WINUSERAPI INT WINAPI GetMenuStringA(HMENU,UINT,LPSTR,INT,UINT);
+WINUSERAPI INT WINAPI GetMenuStringW(HMENU,UINT,LPWSTR,INT,UINT);
+#define GetMenuString WINELIB_NAME_AW(GetMenuString)
+WINUSERAPI BOOL WINAPI GetMessageA(LPMSG,HWND,UINT,UINT);
+WINUSERAPI BOOL WINAPI GetMessageW(LPMSG,HWND,UINT,UINT);
+#define GetMessage WINELIB_NAME_AW(GetMessage)
+WINUSERAPI LPARAM WINAPI GetMessageExtraInfo(void);
+WINUSERAPI DWORD WINAPI GetMessagePos(void);
+WINUSERAPI LONG WINAPI GetMessageTime(void);
+WINUSERAPI BOOL WINAPI GetMonitorInfoA(HMONITOR,LPMONITORINFO);
+WINUSERAPI BOOL WINAPI GetMonitorInfoW(HMONITOR,LPMONITORINFO);
+#define GetMonitorInfo WINELIB_NAME_AW(GetMonitorInfo)
+WINUSERAPI HWND WINAPI GetNextDlgGroupItem(HWND,HWND,BOOL);
+WINUSERAPI HWND WINAPI GetNextDlgTabItem(HWND,HWND,BOOL);
+#define GetNextWindow GetWindow
+WINUSERAPI HWND WINAPI GetOpenClipboardWindow(void);
+WINUSERAPI HWND WINAPI GetParent(HWND);
+WINUSERAPI BOOL WINAPI GetPhysicalCursorPos(POINT*);
+WINUSERAPI INT WINAPI GetPriorityClipboardFormat(UINT*,INT);
+WINUSERAPI BOOL WINAPI GetProcessDefaultLayout(DWORD*);
+WINUSERAPI BOOL WINAPI GetProcessDpiAwarenessInternal(HANDLE,DPI_AWARENESS*);
+WINUSERAPI HANDLE WINAPI GetPropA(HWND,LPCSTR);
+WINUSERAPI HANDLE WINAPI GetPropW(HWND,LPCWSTR);
+#define GetProp WINELIB_NAME_AW(GetProp)
+WINUSERAPI DWORD WINAPI GetQueueStatus(UINT);
+WINUSERAPI BOOL WINAPI GetScrollInfo(HWND,INT,LPSCROLLINFO);
+WINUSERAPI BOOL WINAPI GetScrollBarInfo(HWND,LONG,LPSCROLLBARINFO);
+WINUSERAPI INT WINAPI GetScrollPos(HWND,INT);
+WINUSERAPI BOOL WINAPI GetScrollRange(HWND,INT,LPINT,LPINT);
+WINUSERAPI HWND WINAPI GetShellWindow(void);
+WINUSERAPI HMENU WINAPI GetSubMenu(HMENU,INT);
+WINUSERAPI HBRUSH WINAPI GetSysColorBrush(INT);
+#define GetSysModalWindow() ((HWND)0)
+WINUSERAPI HMENU WINAPI GetSystemMenu(HWND,BOOL);
+WINUSERAPI INT WINAPI GetSystemMetrics(INT);
+WINUSERAPI INT WINAPI GetSystemMetricsForDpi(INT,UINT);
+WINUSERAPI DWORD WINAPI GetTabbedTextExtentA(HDC,LPCSTR,INT,INT,const INT*);
+WINUSERAPI DWORD WINAPI GetTabbedTextExtentW(HDC,LPCWSTR,INT,INT,const INT*);
+#define GetTabbedTextExtent WINELIB_NAME_AW(GetTabbedTextExtent)
+WINUSERAPI BOOL WINAPI GetTitleBarInfo(HWND,PTITLEBARINFO);
+WINUSERAPI HDESK WINAPI GetThreadDesktop(DWORD);
+WINUSERAPI DPI_AWARENESS_CONTEXT WINAPI GetThreadDpiAwarenessContext(void);
+WINUSERAPI HWND WINAPI GetTopWindow(HWND);
+WINUSERAPI BOOL WINAPI GetTouchInputInfo(HTOUCHINPUT,UINT,TOUCHINPUT*,int);
+WINUSERAPI BOOL WINAPI GetUpdateRect(HWND,LPRECT,BOOL);
+WINUSERAPI INT WINAPI GetUpdateRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL WINAPI GetUpdatedClipboardFormats(UINT*,UINT,UINT*);
+WINUSERAPI BOOL WINAPI GetUserObjectInformationA(HANDLE,INT,LPVOID,DWORD,LPDWORD);
+WINUSERAPI BOOL WINAPI GetUserObjectInformationW(HANDLE,INT,LPVOID,DWORD,LPDWORD);
+#define GetUserObjectInformation WINELIB_NAME_AW(GetUserObjectInformation)
+WINUSERAPI BOOL WINAPI GetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
+WINUSERAPI HWND WINAPI GetWindow(HWND,UINT);
+WINUSERAPI DWORD WINAPI GetWindowContextHelpId(HWND);
+WINUSERAPI HDC WINAPI GetWindowDC(HWND);
+WINUSERAPI BOOL WINAPI GetWindowDisplayAffinity(HWND,DWORD*);
+WINUSERAPI DPI_AWARENESS_CONTEXT WINAPI GetWindowDpiAwarenessContext(HWND);
+WINUSERAPI BOOL WINAPI GetWindowInfo(HWND, PWINDOWINFO);
+WINUSERAPI LONG WINAPI GetWindowLongA(HWND,INT);
+WINUSERAPI LONG WINAPI GetWindowLongW(HWND,INT);
+#define GetWindowLong WINELIB_NAME_AW(GetWindowLong)
+#ifdef _WIN64
+WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrA(HWND,INT);
+WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrW(HWND,INT);
+#else
+#define GetWindowLongPtrA GetWindowLongA
+#define GetWindowLongPtrW GetWindowLongW
+#endif
+#define GetWindowLongPtr WINELIB_NAME_AW(GetWindowLongPtr)
+WINUSERAPI UINT WINAPI GetWindowModuleFileNameA(HWND,LPSTR,UINT);
+WINUSERAPI UINT WINAPI GetWindowModuleFileNameW(HWND,LPWSTR,UINT);
+#define GetWindowModuleFileName WINELIB_NAME_AW(GetWindowModuleFileName)
+WINUSERAPI BOOL WINAPI GetWindowPlacement(HWND,LPWINDOWPLACEMENT);
+WINUSERAPI BOOL WINAPI GetWindowRect(HWND,LPRECT);
+WINUSERAPI INT WINAPI GetWindowRgnBox(HWND,LPRECT);
+WINUSERAPI INT WINAPI GetWindowRgn(HWND,HRGN);
+WINUSERAPI HWINSTA WINAPI GetProcessWindowStation(void);
+#define GetWindowTask(hwnd) ((HTASK)GetWindowThreadProcessId(hwnd,NULL))
+WINUSERAPI INT WINAPI GetWindowTextA(HWND,LPSTR,INT);
+WINUSERAPI INT WINAPI GetWindowTextW(HWND,LPWSTR,INT);
+#define GetWindowText WINELIB_NAME_AW(GetWindowText)
+WINUSERAPI INT WINAPI GetWindowTextLengthA(HWND);
+WINUSERAPI INT WINAPI GetWindowTextLengthW(HWND);
+#define GetWindowTextLength WINELIB_NAME_AW(GetWindowTextLength)
+WINUSERAPI DWORD WINAPI GetWindowThreadProcessId(HWND,LPDWORD);
+WINUSERAPI WORD WINAPI GetWindowWord(HWND,INT);
+WINUSERAPI BOOL WINAPI GrayStringA(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,INT,INT,INT,INT,INT);
+WINUSERAPI BOOL WINAPI GrayStringW(HDC,HBRUSH,GRAYSTRINGPROC,LPARAM,INT,INT,INT,INT,INT);
+#define GrayString WINELIB_NAME_AW(GrayString)
+WINUSERAPI BOOL WINAPI HideCaret(HWND);
+WINUSERAPI BOOL WINAPI HiliteMenuItem(HWND,HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI InSendMessage(void);
+WINUSERAPI DWORD WINAPI InSendMessageEx(LPVOID);
+WINUSERAPI BOOL WINAPI InsertMenuA(HMENU,UINT,UINT,UINT_PTR,LPCSTR);
+WINUSERAPI BOOL WINAPI InsertMenuW(HMENU,UINT,UINT,UINT_PTR,LPCWSTR);
+#define InsertMenu WINELIB_NAME_AW(InsertMenu)
+WINUSERAPI BOOL WINAPI InsertMenuItemA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
+WINUSERAPI BOOL WINAPI InsertMenuItemW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
+#define InsertMenuItem WINELIB_NAME_AW(InsertMenuItem)
+WINUSERAPI INT WINAPI InternalGetWindowText(HWND,LPWSTR,INT);
+WINUSERAPI BOOL WINAPI IntersectRect(LPRECT,const RECT*,const RECT*);
+WINUSERAPI BOOL WINAPI InvalidateRect(HWND,const RECT*,BOOL);
+WINUSERAPI BOOL WINAPI InvalidateRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL WINAPI InvertRect(HDC,const RECT*);
+WINUSERAPI BOOL WINAPI IsCharAlphaA(CHAR);
+WINUSERAPI BOOL WINAPI IsCharAlphaW(WCHAR);
+#define IsCharAlpha WINELIB_NAME_AW(IsCharAlpha)
+WINUSERAPI BOOL WINAPI IsCharAlphaNumericA(CHAR);
+WINUSERAPI BOOL WINAPI IsCharAlphaNumericW(WCHAR);
+#define IsCharAlphaNumeric WINELIB_NAME_AW(IsCharAlphaNumeric)
+WINUSERAPI BOOL WINAPI IsCharLowerA(CHAR);
+WINUSERAPI BOOL WINAPI IsCharLowerW(WCHAR);
+#define IsCharLower WINELIB_NAME_AW(IsCharLower)
+WINUSERAPI BOOL WINAPI IsCharUpperA(CHAR);
+WINUSERAPI BOOL WINAPI IsCharUpperW(WCHAR);
+#define IsCharUpper WINELIB_NAME_AW(IsCharUpper)
+WINUSERAPI BOOL WINAPI IsChild(HWND,HWND);
+WINUSERAPI BOOL WINAPI IsClipboardFormatAvailable(UINT);
+WINUSERAPI BOOL WINAPI IsDialogMessageA(HWND,LPMSG);
+WINUSERAPI BOOL WINAPI IsDialogMessageW(HWND,LPMSG);
+#define IsDialogMessage WINELIB_NAME_AW(IsDialogMessage)
+WINUSERAPI UINT WINAPI IsDlgButtonChecked(HWND,int);
+WINUSERAPI BOOL WINAPI IsGUIThread(BOOL);
+WINUSERAPI BOOL WINAPI IsHungAppWindow(HWND);
+WINUSERAPI BOOL WINAPI IsIconic(HWND);
+WINUSERAPI BOOL WINAPI IsMenu(HMENU);
+WINUSERAPI BOOL WINAPI IsProcessDPIAware(void);
+WINUSERAPI BOOL WINAPI IsTouchWindow(HWND,PULONG);
+WINUSERAPI BOOL WINAPI IsValidDpiAwarenessContext(DPI_AWARENESS_CONTEXT);
+WINUSERAPI BOOL WINAPI IsWinEventHookInstalled(DWORD);
+WINUSERAPI BOOL WINAPI IsWindow(HWND);
+WINUSERAPI BOOL WINAPI IsWindowEnabled(HWND);
+WINUSERAPI BOOL WINAPI IsWindowUnicode(HWND);
+WINUSERAPI BOOL WINAPI IsWindowVisible(HWND);
+WINUSERAPI BOOL WINAPI IsZoomed(HWND);
+WINUSERAPI BOOL WINAPI KillSystemTimer(HWND,UINT_PTR);
+WINUSERAPI BOOL WINAPI KillTimer(HWND,UINT_PTR);
+WINUSERAPI HACCEL WINAPI LoadAcceleratorsA(HINSTANCE,LPCSTR);
+WINUSERAPI HACCEL WINAPI LoadAcceleratorsW(HINSTANCE,LPCWSTR);
+#define LoadAccelerators WINELIB_NAME_AW(LoadAccelerators)
+WINUSERAPI HBITMAP WINAPI LoadBitmapA(HINSTANCE,LPCSTR);
+WINUSERAPI HBITMAP WINAPI LoadBitmapW(HINSTANCE,LPCWSTR);
+#define LoadBitmap WINELIB_NAME_AW(LoadBitmap)
+WINUSERAPI HCURSOR WINAPI LoadCursorA(HINSTANCE,LPCSTR);
+WINUSERAPI HCURSOR WINAPI LoadCursorW(HINSTANCE,LPCWSTR);
+#define LoadCursor WINELIB_NAME_AW(LoadCursor)
+WINUSERAPI HCURSOR WINAPI LoadCursorFromFileA(LPCSTR);
+WINUSERAPI HCURSOR WINAPI LoadCursorFromFileW(LPCWSTR);
+#define LoadCursorFromFile WINELIB_NAME_AW(LoadCursorFromFile)
+WINUSERAPI HICON WINAPI LoadIconA(HINSTANCE,LPCSTR);
+WINUSERAPI HICON WINAPI LoadIconW(HINSTANCE,LPCWSTR);
+#define LoadIcon WINELIB_NAME_AW(LoadIcon)
+WINUSERAPI HANDLE WINAPI LoadImageA(HINSTANCE,LPCSTR,UINT,INT,INT,UINT);
+WINUSERAPI HANDLE WINAPI LoadImageW(HINSTANCE,LPCWSTR,UINT,INT,INT,UINT);
+#define LoadImage WINELIB_NAME_AW(LoadImage)
+WINUSERAPI HKL WINAPI LoadKeyboardLayoutA(LPCSTR,UINT);
+WINUSERAPI HKL WINAPI LoadKeyboardLayoutW(LPCWSTR,UINT);
+#define LoadKeyboardLayout WINELIB_NAME_AW(LoadKeyboardLayout)
+WINUSERAPI HMENU WINAPI LoadMenuA(HINSTANCE,LPCSTR);
+WINUSERAPI HMENU WINAPI LoadMenuW(HINSTANCE,LPCWSTR);
+#define LoadMenu WINELIB_NAME_AW(LoadMenu)
+WINUSERAPI HMENU WINAPI LoadMenuIndirectA(LPCVOID);
+WINUSERAPI HMENU WINAPI LoadMenuIndirectW(LPCVOID);
+#define LoadMenuIndirect WINELIB_NAME_AW(LoadMenuIndirect)
+WINUSERAPI INT WINAPI LoadStringA(HINSTANCE,UINT,LPSTR,INT);
+WINUSERAPI INT WINAPI LoadStringW(HINSTANCE,UINT,LPWSTR,INT);
+#define LoadString WINELIB_NAME_AW(LoadString)
+WINUSERAPI BOOL WINAPI LogicalToPhysicalPoint(HWND,POINT*);
+WINUSERAPI BOOL WINAPI LogicalToPhysicalPointForPerMonitorDPI(HWND,POINT*);
+WINUSERAPI BOOL WINAPI LockSetForegroundWindow(UINT);
+WINUSERAPI BOOL WINAPI LockWindowUpdate(HWND);
+WINUSERAPI BOOL WINAPI LockWorkStation(void);
+WINUSERAPI INT WINAPI LookupIconIdFromDirectory(LPBYTE,BOOL);
+WINUSERAPI INT WINAPI LookupIconIdFromDirectoryEx(LPBYTE,BOOL,INT,INT,UINT);
+WINUSERAPI UINT WINAPI MapVirtualKeyA(UINT,UINT);
+WINUSERAPI UINT WINAPI MapVirtualKeyW(UINT,UINT);
+#define MapVirtualKey WINELIB_NAME_AW(MapVirtualKey)
+WINUSERAPI UINT WINAPI MapVirtualKeyExA(UINT,UINT,HKL);
+WINUSERAPI UINT WINAPI MapVirtualKeyExW(UINT,UINT,HKL);
+#define MapVirtualKeyEx WINELIB_NAME_AW(MapVirtualKeyEx)
+WINUSERAPI BOOL WINAPI MapDialogRect(HWND,LPRECT);
+WINUSERAPI INT WINAPI MapWindowPoints(HWND,HWND,LPPOINT,UINT);
+WINUSERAPI INT WINAPI MenuItemFromPoint(HWND,HMENU,POINT);
+WINUSERAPI BOOL WINAPI MessageBeep(UINT);
+WINUSERAPI INT WINAPI MessageBoxA(HWND,LPCSTR,LPCSTR,UINT);
+WINUSERAPI INT WINAPI MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT);
+#define MessageBox WINELIB_NAME_AW(MessageBox)
+WINUSERAPI INT WINAPI MessageBoxExA(HWND,LPCSTR,LPCSTR,UINT,WORD);
+WINUSERAPI INT WINAPI MessageBoxExW(HWND,LPCWSTR,LPCWSTR,UINT,WORD);
+#define MessageBoxEx WINELIB_NAME_AW(MessageBoxEx)
+WINUSERAPI INT WINAPI MessageBoxIndirectA(LPMSGBOXPARAMSA);
+WINUSERAPI INT WINAPI MessageBoxIndirectW(LPMSGBOXPARAMSW);
+#define MessageBoxIndirect WINELIB_NAME_AW(MessageBoxIndirect)
+WINUSERAPI BOOL WINAPI ModifyMenuA(HMENU,UINT,UINT,UINT_PTR,LPCSTR);
+WINUSERAPI BOOL WINAPI ModifyMenuW(HMENU,UINT,UINT,UINT_PTR,LPCWSTR);
+#define ModifyMenu WINELIB_NAME_AW(ModifyMenu)
+WINUSERAPI HMONITOR WINAPI MonitorFromPoint(POINT,DWORD);
+WINUSERAPI HMONITOR WINAPI MonitorFromRect(const RECT*,DWORD);
+WINUSERAPI HMONITOR WINAPI MonitorFromWindow(HWND,DWORD);
+WINUSERAPI BOOL WINAPI MoveWindow(HWND,INT,INT,INT,INT,BOOL);
+WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD,DWORD);
+WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD,const HANDLE*,DWORD,DWORD,DWORD);
+WINUSERAPI VOID WINAPI NotifyWinEvent(DWORD,HWND,LONG,LONG);
+WINUSERAPI DWORD WINAPI OemKeyScan(WORD);
+WINUSERAPI BOOL WINAPI OemToCharA(LPCSTR,LPSTR);
+WINUSERAPI BOOL WINAPI OemToCharW(LPCSTR,LPWSTR);
+#define OemToChar WINELIB_NAME_AW(OemToChar)
+WINUSERAPI BOOL WINAPI OemToCharBuffA(LPCSTR,LPSTR,DWORD);
+WINUSERAPI BOOL WINAPI OemToCharBuffW(LPCSTR,LPWSTR,DWORD);
+#define OemToCharBuff WINELIB_NAME_AW(OemToCharBuff)
+WINUSERAPI BOOL WINAPI OpenClipboard(HWND);
+WINUSERAPI HDESK WINAPI OpenDesktopA(LPCSTR,DWORD,BOOL,ACCESS_MASK);
+WINUSERAPI HDESK WINAPI OpenDesktopW(LPCWSTR,DWORD,BOOL,ACCESS_MASK);
+#define OpenDesktop WINELIB_NAME_AW(OpenDesktop)
+WINUSERAPI BOOL WINAPI OpenIcon(HWND);
+WINUSERAPI HDESK WINAPI OpenInputDesktop(DWORD,BOOL,ACCESS_MASK);
+WINUSERAPI HWINSTA WINAPI OpenWindowStationA(LPCSTR,BOOL,ACCESS_MASK);
+WINUSERAPI HWINSTA WINAPI OpenWindowStationW(LPCWSTR,BOOL,ACCESS_MASK);
+#define OpenWindowStation WINELIB_NAME_AW(OpenWindowStation)
+WINUSERAPI BOOL WINAPI PaintDesktop(HDC);
+WINUSERAPI BOOL WINAPI PeekMessageA(LPMSG,HWND,UINT,UINT,UINT);
+WINUSERAPI BOOL WINAPI PeekMessageW(LPMSG,HWND,UINT,UINT,UINT);
+#define PeekMessage WINELIB_NAME_AW(PeekMessage)
+WINUSERAPI BOOL WINAPI PhysicalToLogicalPoint(HWND,POINT*);
+WINUSERAPI BOOL WINAPI PhysicalToLogicalPointForPerMonitorDPI(HWND,POINT*);
+#define PostAppMessageA(thread,msg,wparam,lparam) PostThreadMessageA((DWORD)(thread),msg,wparam,lparam)
+#define PostAppMessageW(thread,msg,wparam,lparam) PostThreadMessageW((DWORD)(thread),msg,wparam,lparam)
+#define PostAppMessage WINELIB_NAME_AW(PostAppMessage)
+WINUSERAPI BOOL WINAPI PostMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI PostMessageW(HWND,UINT,WPARAM,LPARAM);
+#define PostMessage WINELIB_NAME_AW(PostMessage)
+WINUSERAPI void WINAPI PostQuitMessage(INT);
+WINUSERAPI BOOL WINAPI PostThreadMessageA(DWORD,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI PostThreadMessageW(DWORD,UINT,WPARAM,LPARAM);
+#define PostThreadMessage WINELIB_NAME_AW(PostThreadMessage)
+WINUSERAPI BOOL WINAPI PrintWindow(HWND,HDC,UINT);
+WINUSERAPI UINT WINAPI PrivateExtractIconExA(LPCSTR,int,HICON*,HICON*,UINT);
+WINUSERAPI UINT WINAPI PrivateExtractIconExW(LPCWSTR,int,HICON*,HICON*,UINT);
+WINUSERAPI UINT WINAPI PrivateExtractIconsA(LPCSTR,int,int,int,HICON*,UINT*,UINT,UINT);
+WINUSERAPI UINT WINAPI PrivateExtractIconsW(LPCWSTR,int,int,int,HICON*,UINT*,UINT,UINT);
+WINUSERAPI BOOL WINAPI PtInRect(const RECT*,POINT);
+WINUSERAPI HWND WINAPI RealChildWindowFromPoint(HWND,POINT);
+WINUSERAPI UINT WINAPI RealGetWindowClassA(HWND,LPSTR,UINT);
+WINUSERAPI UINT WINAPI RealGetWindowClassW(HWND,LPWSTR,UINT);
+#define RealGetWindowClass WINELIB_NAME_AW(RealGetWindowClass)
+WINUSERAPI BOOL WINAPI RedrawWindow(HWND,const RECT*,HRGN,UINT);
+WINUSERAPI ATOM WINAPI RegisterClassA(const WNDCLASSA *);
+WINUSERAPI ATOM WINAPI RegisterClassW(const WNDCLASSW *);
+#define RegisterClass WINELIB_NAME_AW(RegisterClass)
+WINUSERAPI ATOM WINAPI RegisterClassExA(const WNDCLASSEXA *);
+WINUSERAPI ATOM WINAPI RegisterClassExW(const WNDCLASSEXW *);
+#define RegisterClassEx WINELIB_NAME_AW(RegisterClassEx)
+WINUSERAPI UINT WINAPI RegisterClipboardFormatA(LPCSTR);
+WINUSERAPI UINT WINAPI RegisterClipboardFormatW(LPCWSTR);
+#define RegisterClipboardFormat WINELIB_NAME_AW(RegisterClipboardFormat)
+WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE,LPVOID,DWORD);
+WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE,LPVOID,DWORD);
+#define RegisterDeviceNotification WINELIB_NAME_AW(RegisterDeviceNotification)
+WINUSERAPI BOOL WINAPI RegisterHotKey(HWND,INT,UINT,UINT);
+WINUSERAPI BOOL WINAPI RegisterPointerDeviceNotifications(HWND,BOOL);
+WINUSERAPI HPOWERNOTIFY WINAPI RegisterPowerSettingNotification(HANDLE,LPCGUID,DWORD);
+WINUSERAPI BOOL WINAPI RegisterRawInputDevices(PRAWINPUTDEVICE,UINT,UINT);
+WINUSERAPI BOOL WINAPI RegisterShellHookWindow(HWND);
+WINUSERAPI BOOL WINAPI RegisterTouchWindow(HWND,ULONG);
+WINUSERAPI UINT WINAPI RegisterWindowMessageA(LPCSTR);
+WINUSERAPI UINT WINAPI RegisterWindowMessageW(LPCWSTR);
+#define RegisterWindowMessage WINELIB_NAME_AW(RegisterWindowMessage)
+WINUSERAPI BOOL WINAPI ReleaseCapture(void);
+WINUSERAPI INT WINAPI ReleaseDC(HWND,HDC);
+WINUSERAPI BOOL WINAPI RemoveClipboardFormatListener(HWND);
+WINUSERAPI BOOL WINAPI RemoveMenu(HMENU,UINT,UINT);
+WINUSERAPI HANDLE WINAPI RemovePropA(HWND,LPCSTR);
+WINUSERAPI HANDLE WINAPI RemovePropW(HWND,LPCWSTR);
+#define RemoveProp WINELIB_NAME_AW(RemoveProp)
+WINUSERAPI BOOL WINAPI ReplyMessage(LRESULT);
+WINUSERAPI BOOL WINAPI ScreenToClient(HWND,LPPOINT);
+WINUSERAPI VOID WINAPI ScrollChildren(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI ScrollDC(HDC,INT,INT,const RECT*,const RECT*,HRGN,LPRECT);
+WINUSERAPI BOOL WINAPI ScrollWindow(HWND,INT,INT,const RECT*,const RECT*);
+WINUSERAPI INT WINAPI ScrollWindowEx(HWND,INT,INT,const RECT*,const RECT*,HRGN,LPRECT,UINT);
+WINUSERAPI LRESULT WINAPI SendDlgItemMessageA(HWND,INT,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI SendDlgItemMessageW(HWND,INT,UINT,WPARAM,LPARAM);
+#define SendDlgItemMessage WINELIB_NAME_AW(SendDlgItemMessage)
+WINUSERAPI UINT WINAPI SendInput(UINT,LPINPUT,int);
+WINUSERAPI LRESULT WINAPI SendMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI LRESULT WINAPI SendMessageW(HWND,UINT,WPARAM,LPARAM);
+#define SendMessage WINELIB_NAME_AW(SendMessage)
+WINUSERAPI BOOL WINAPI SendMessageCallbackA(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
+WINUSERAPI BOOL WINAPI SendMessageCallbackW(HWND,UINT,WPARAM,LPARAM,SENDASYNCPROC,ULONG_PTR);
+#define SendMessageCallback WINELIB_NAME_AW(SendMessageCallback)
+WINUSERAPI LRESULT WINAPI SendMessageTimeoutA(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
+WINUSERAPI LRESULT WINAPI SendMessageTimeoutW(HWND,UINT,WPARAM,LPARAM,UINT,UINT,PDWORD_PTR);
+#define SendMessageTimeout WINELIB_NAME_AW(SendMessageTimeout)
+WINUSERAPI BOOL WINAPI SendNotifyMessageA(HWND,UINT,WPARAM,LPARAM);
+WINUSERAPI BOOL WINAPI SendNotifyMessageW(HWND,UINT,WPARAM,LPARAM);
+#define SendNotifyMessage WINELIB_NAME_AW(SendNotifyMessage)
+WINUSERAPI HWND WINAPI SetActiveWindow(HWND);
+WINUSERAPI HWND WINAPI SetCapture(HWND);
+WINUSERAPI BOOL WINAPI SetCaretBlinkTime(UINT);
+WINUSERAPI BOOL WINAPI SetCaretPos(INT,INT);
+WINUSERAPI DWORD WINAPI SetClassLongA(HWND,INT,LONG);
+WINUSERAPI DWORD WINAPI SetClassLongW(HWND,INT,LONG);
+#define SetClassLong WINELIB_NAME_AW(SetClassLong)
+#ifdef _WIN64
+WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrA(HWND,INT,LONG_PTR);
+WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrW(HWND,INT,LONG_PTR);
+#else
+#define SetClassLongPtrA SetClassLongA
+#define SetClassLongPtrW SetClassLongW
+#endif
+#define SetClassLongPtr WINELIB_NAME_AW(SetClassLongPtr)
+WINUSERAPI WORD WINAPI SetClassWord(HWND,INT,WORD);
+WINUSERAPI HANDLE WINAPI SetClipboardData(UINT,HANDLE);
+WINUSERAPI HWND WINAPI SetClipboardViewer(HWND);
+WINUSERAPI UINT_PTR WINAPI SetCoalescableTimer(HWND,UINT_PTR,UINT,TIMERPROC,ULONG);
+WINUSERAPI HCURSOR WINAPI SetCursor(HCURSOR);
+WINUSERAPI BOOL WINAPI SetCursorPos(INT,INT);
+WINUSERAPI VOID WINAPI SetDebugErrorLevel(DWORD);
+WINUSERAPI BOOL WINAPI SetDeskWallPaper(LPCSTR);
+WINUSERAPI BOOL WINAPI SetDlgItemInt(HWND,INT,UINT,BOOL);
+WINUSERAPI BOOL WINAPI SetDlgItemTextA(HWND,INT,LPCSTR);
+WINUSERAPI BOOL WINAPI SetDlgItemTextW(HWND,INT,LPCWSTR);
+#define SetDlgItemText WINELIB_NAME_AW(SetDlgItemText)
+WINUSERAPI BOOL WINAPI SetDoubleClickTime(UINT);
+WINUSERAPI HWND WINAPI SetFocus(HWND);
+WINUSERAPI BOOL WINAPI SetForegroundWindow(HWND);
+WINUSERAPI BOOL WINAPI SetGestureConfig(HWND,DWORD,UINT,PGESTURECONFIG,UINT);
+WINUSERAPI void WINAPI SetInternalWindowPos(HWND,UINT,LPRECT,LPPOINT);
+WINUSERAPI BOOL WINAPI SetKeyboardState(LPBYTE);
+WINUSERAPI VOID WINAPI SetLastErrorEx(DWORD,DWORD);
+WINUSERAPI BOOL WINAPI SetLayeredWindowAttributes(HWND,COLORREF,BYTE,DWORD);
+WINUSERAPI BOOL WINAPI SetMenu(HWND,HMENU);
+WINUSERAPI BOOL WINAPI SetMenuContextHelpId(HMENU,DWORD);
+WINUSERAPI BOOL WINAPI SetMenuDefaultItem(HMENU,UINT,UINT);
+WINUSERAPI BOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
+WINUSERAPI BOOL WINAPI SetMenuItemBitmaps(HMENU,UINT,UINT,HBITMAP,HBITMAP);
+WINUSERAPI BOOL WINAPI SetMenuItemInfoA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
+WINUSERAPI BOOL WINAPI SetMenuItemInfoW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
+#define SetMenuItemInfo WINELIB_NAME_AW(SetMenuItemInfo)
+WINUSERAPI LPARAM WINAPI SetMessageExtraInfo(LPARAM);
+WINUSERAPI BOOL WINAPI SetMessageQueue(INT);
+WINUSERAPI HWND WINAPI SetParent(HWND,HWND);
+WINUSERAPI BOOL WINAPI SetPhysicalCursorPos(INT,INT);
+WINUSERAPI BOOL WINAPI SetProcessDPIAware(void);
+WINUSERAPI BOOL WINAPI SetProcessDefaultLayout(DWORD);
+WINUSERAPI BOOL WINAPI SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT);
+WINUSERAPI BOOL WINAPI SetProcessDpiAwarenessInternal(DPI_AWARENESS);
+WINUSERAPI BOOL WINAPI SetProcessWindowStation(HWINSTA);
+WINUSERAPI BOOL WINAPI SetPropA(HWND,LPCSTR,HANDLE);
+WINUSERAPI BOOL WINAPI SetPropW(HWND,LPCWSTR,HANDLE);
+#define SetProp WINELIB_NAME_AW(SetProp)
+WINUSERAPI INT WINAPI SetScrollInfo(HWND,INT,const SCROLLINFO*,BOOL);
+WINUSERAPI INT WINAPI SetScrollPos(HWND,INT,INT,BOOL);
+WINUSERAPI BOOL WINAPI SetScrollRange(HWND,INT,INT,INT,BOOL);
+#define SetSysModalWindow(hwnd) ((HWND)0)
+WINUSERAPI BOOL WINAPI SetSystemCursor(HCURSOR,DWORD);
+WINUSERAPI BOOL WINAPI SetSystemMenu(HWND,HMENU);
+WINUSERAPI UINT_PTR WINAPI SetSystemTimer(HWND,UINT_PTR,UINT,TIMERPROC);
+WINUSERAPI BOOL WINAPI SetThreadDesktop(HDESK);
+WINUSERAPI DPI_AWARENESS_CONTEXT WINAPI SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT);
+WINUSERAPI UINT_PTR WINAPI SetTimer(HWND,UINT_PTR,UINT,TIMERPROC);
+WINUSERAPI BOOL WINAPI SetUserObjectInformationA(HANDLE,INT,LPVOID,DWORD);
+WINUSERAPI BOOL WINAPI SetUserObjectInformationW(HANDLE,INT,LPVOID,DWORD);
+#define SetUserObjectInformation WINELIB_NAME_AW(SetUserObjectInformation)
+WINUSERAPI BOOL WINAPI SetUserObjectSecurity(HANDLE,PSECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
+WINUSERAPI BOOL WINAPI SetWindowContextHelpId(HWND,DWORD);
+WINUSERAPI BOOL WINAPI SetWindowDisplayAffinity(HWND,DWORD);
+WINUSERAPI LONG WINAPI SetWindowLongA(HWND,INT,LONG);
+WINUSERAPI LONG WINAPI SetWindowLongW(HWND,INT,LONG);
+#define SetWindowLong WINELIB_NAME_AW(SetWindowLong)
+#ifdef _WIN64
+WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrA(HWND,INT,LONG_PTR);
+WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrW(HWND,INT,LONG_PTR);
+#else
+#define SetWindowLongPtrA SetWindowLongA
+#define SetWindowLongPtrW SetWindowLongW
+#endif
+#define SetWindowLongPtr WINELIB_NAME_AW(SetWindowLongPtr)
+WINUSERAPI BOOL WINAPI SetWindowPlacement(HWND,const WINDOWPLACEMENT*);
+WINUSERAPI HHOOK WINAPI SetWindowsHookA(INT,HOOKPROC);
+WINUSERAPI HHOOK WINAPI SetWindowsHookW(INT,HOOKPROC);
+#define SetWindowsHook WINELIB_NAME_AW(SetWindowsHook)
+WINUSERAPI HHOOK WINAPI SetWindowsHookExA(INT,HOOKPROC,HINSTANCE,DWORD);
+WINUSERAPI HHOOK WINAPI SetWindowsHookExW(INT,HOOKPROC,HINSTANCE,DWORD);
+#define SetWindowsHookEx WINELIB_NAME_AW(SetWindowsHookEx)
+WINUSERAPI BOOL WINAPI SetWindowPos(HWND,HWND,INT,INT,INT,INT,UINT);
+WINUSERAPI INT WINAPI SetWindowRgn(HWND,HRGN,BOOL);
+WINUSERAPI BOOL WINAPI SetWindowTextA(HWND,LPCSTR);
+WINUSERAPI BOOL WINAPI SetWindowTextW(HWND,LPCWSTR);
+#define SetWindowText WINELIB_NAME_AW(SetWindowText)
+WINUSERAPI WORD WINAPI SetWindowWord(HWND,INT,WORD);
+WINUSERAPI HWINEVENTHOOK WINAPI SetWinEventHook(DWORD,DWORD,HMODULE,WINEVENTPROC,DWORD,DWORD,DWORD);
+WINUSERAPI BOOL WINAPI ShowCaret(HWND);
+WINUSERAPI INT WINAPI ShowCursor(BOOL);
+WINUSERAPI BOOL WINAPI ShowScrollBar(HWND,INT,BOOL);
+WINUSERAPI BOOL WINAPI ShowOwnedPopups(HWND,BOOL);
+WINUSERAPI BOOL WINAPI ShowWindow(HWND,INT);
+WINUSERAPI BOOL WINAPI ShowWindowAsync(HWND,INT);
+WINUSERAPI BOOL WINAPI ShutdownBlockReasonCreate(HWND,LPCWSTR);
+WINUSERAPI BOOL WINAPI ShutdownBlockReasonDestroy(HWND);
+WINUSERAPI BOOL WINAPI SubtractRect(LPRECT,const RECT*,const RECT*);
+WINUSERAPI BOOL WINAPI SwapMouseButton(BOOL);
+WINUSERAPI BOOL WINAPI SwitchDesktop(HDESK);
+WINUSERAPI VOID WINAPI SwitchToThisWindow(HWND,BOOL);
+WINUSERAPI BOOL WINAPI SystemParametersInfoA(UINT,UINT,LPVOID,UINT);
+WINUSERAPI BOOL WINAPI SystemParametersInfoW(UINT,UINT,LPVOID,UINT);
+#define SystemParametersInfo WINELIB_NAME_AW(SystemParametersInfo)
+WINUSERAPI BOOL WINAPI SystemParametersInfoForDpi(UINT,UINT,void*,UINT,UINT);
+WINUSERAPI LONG WINAPI TabbedTextOutA(HDC,INT,INT,LPCSTR,INT,INT,const INT*,INT);
+WINUSERAPI LONG WINAPI TabbedTextOutW(HDC,INT,INT,LPCWSTR,INT,INT,const INT*,INT);
+#define TabbedTextOut WINELIB_NAME_AW(TabbedTextOut)
+WINUSERAPI WORD WINAPI TileWindows (HWND,UINT,const RECT *,UINT,const HWND *);
+WINUSERAPI INT WINAPI ToAscii(UINT,UINT,const BYTE *,LPWORD,UINT);
+WINUSERAPI INT WINAPI ToAsciiEx(UINT,UINT,const BYTE *,LPWORD,UINT,HKL);
+WINUSERAPI INT WINAPI ToUnicode(UINT,UINT,const BYTE *,LPWSTR,int,UINT);
+WINUSERAPI INT WINAPI ToUnicodeEx(UINT,UINT,const BYTE *,LPWSTR,int,UINT,HKL);
+WINUSERAPI BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT);
+WINUSERAPI BOOL WINAPI TrackPopupMenu(HMENU,UINT,INT,INT,INT,HWND,const RECT*);
+WINUSERAPI BOOL WINAPI TrackPopupMenuEx(HMENU,UINT,INT,INT,HWND,LPTPMPARAMS);
+WINUSERAPI INT WINAPI TranslateAcceleratorA(HWND,HACCEL,LPMSG);
+WINUSERAPI INT WINAPI TranslateAcceleratorW(HWND,HACCEL,LPMSG);
+#define TranslateAccelerator WINELIB_NAME_AW(TranslateAccelerator)
+WINUSERAPI BOOL WINAPI TranslateMDISysAccel(HWND,LPMSG);
+WINUSERAPI BOOL WINAPI TranslateMessage(const MSG*);
+WINUSERAPI BOOL WINAPI UnhookWinEvent(HWINEVENTHOOK);
+WINUSERAPI BOOL WINAPI UnhookWindowsHook(INT,HOOKPROC);
+WINUSERAPI BOOL WINAPI UnhookWindowsHookEx(HHOOK);
+WINUSERAPI BOOL WINAPI UnloadKeyboardLayout(HKL);
+WINUSERAPI BOOL WINAPI UnionRect(LPRECT,const RECT*,const RECT*);
+WINUSERAPI BOOL WINAPI UnregisterClassA(LPCSTR,HINSTANCE);
+WINUSERAPI BOOL WINAPI UnregisterClassW(LPCWSTR,HINSTANCE);
+#define UnregisterClass WINELIB_NAME_AW(UnregisterClass)
+WINUSERAPI BOOL WINAPI UnregisterDeviceNotification(HDEVNOTIFY);
+WINUSERAPI BOOL WINAPI UnregisterHotKey(HWND,INT);
+WINUSERAPI BOOL WINAPI UnregisterPowerSettingNotification(HPOWERNOTIFY);
+WINUSERAPI BOOL WINAPI UnregisterTouchWindow(HWND);
+WINUSERAPI BOOL WINAPI UpdateWindow(HWND);
+WINUSERAPI BOOL WINAPI UserHandleGrantAccess(HANDLE,HANDLE,BOOL);
+WINUSERAPI UINT WINAPI UserRealizePalette(HDC);
+WINUSERAPI BOOL WINAPI ValidateRect(HWND,const RECT*);
+WINUSERAPI BOOL WINAPI ValidateRgn(HWND,HRGN);
+WINUSERAPI SHORT WINAPI VkKeyScanA(CHAR);
+WINUSERAPI SHORT WINAPI VkKeyScanW(WCHAR);
+#define VkKeyScan WINELIB_NAME_AW(VkKeyScan)
+WINUSERAPI WORD WINAPI VkKeyScanExA(CHAR, HKL);
+WINUSERAPI WORD WINAPI VkKeyScanExW(WCHAR, HKL);
+#define VkKeyScanEx WINELIB_NAME_AW(VkKeyScanEx)
+WINUSERAPI DWORD WINAPI WaitForInputIdle(HANDLE,DWORD);
+WINUSERAPI BOOL WINAPI WaitMessage(void);
+WINUSERAPI HWND WINAPI WindowFromDC(HDC);
+WINUSERAPI HWND WINAPI WindowFromPoint(POINT);
+WINUSERAPI BOOL WINAPI WinHelpA(HWND,LPCSTR,UINT,ULONG_PTR);
+WINUSERAPI BOOL WINAPI WinHelpW(HWND,LPCWSTR,UINT,ULONG_PTR);
+#define WinHelp WINELIB_NAME_AW(WinHelp)
+WINUSERAPI VOID WINAPI keybd_event(BYTE,BYTE,DWORD,ULONG_PTR);
+WINUSERAPI VOID WINAPI mouse_event(DWORD,DWORD,DWORD,DWORD,ULONG_PTR);
+WINUSERAPI INT WINAPIV wsprintfA(LPSTR,LPCSTR,...);
+WINUSERAPI INT WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
+#define wsprintf WINELIB_NAME_AW(wsprintf)
+WINUSERAPI INT WINAPI wvsprintfA(LPSTR,LPCSTR,__ms_va_list);
+WINUSERAPI INT WINAPI wvsprintfW(LPWSTR,LPCWSTR,__ms_va_list);
+#define wvsprintf WINELIB_NAME_AW(wvsprintf)
+
+#if !defined(__WINESRC__) || defined(WINE_NO_INLINE_RECT)
+
+WINUSERAPI BOOL WINAPI EqualRect(const RECT*,const RECT*);
+WINUSERAPI BOOL WINAPI InflateRect(LPRECT,INT,INT);
+WINUSERAPI BOOL WINAPI IsRectEmpty(const RECT*);
+WINUSERAPI BOOL WINAPI OffsetRect(LPRECT,INT,INT);
+WINUSERAPI BOOL WINAPI SetRect(LPRECT,INT,INT,INT,INT);
+WINUSERAPI BOOL WINAPI SetRectEmpty(LPRECT);
+
+#else
+
+/* Inline versions of common RECT helpers */
+
+static inline BOOL WINAPI EqualRect(const RECT *rect1, const RECT *rect2)
+{
+ if (!rect1 || !rect2) return FALSE;
+ return ((rect1->left == rect2->left) && (rect1->right == rect2->right) &&
+ (rect1->top == rect2->top) && (rect1->bottom == rect2->bottom));
+}
+
+static inline BOOL WINAPI InflateRect(LPRECT rect, INT x, INT y)
+{
+ if (!rect) return FALSE;
+ rect->left -= x;
+ rect->top -= y;
+ rect->right += x;
+ rect->bottom += y;
+ return TRUE;
+}
+
+static inline BOOL WINAPI IsRectEmpty(const RECT *rect)
+{
+ if (!rect) return TRUE;
+ return ((rect->left >= rect->right) || (rect->top >= rect->bottom));
+}
+
+static inline BOOL WINAPI OffsetRect(LPRECT rect, INT x, INT y)
+{
+ if (!rect) return FALSE;
+ rect->left += x;
+ rect->right += x;
+ rect->top += y;
+ rect->bottom += y;
+ return TRUE;
+}
+
+static inline BOOL WINAPI SetRect(LPRECT rect, INT left, INT top, INT right, INT bottom)
+{
+ if (!rect) return FALSE;
+ rect->left = left;
+ rect->right = right;
+ rect->top = top;
+ rect->bottom = bottom;
+ return TRUE;
+}
+
+static inline BOOL WINAPI SetRectEmpty(LPRECT rect)
+{
+ if (!rect) return FALSE;
+ rect->left = rect->right = rect->top = rect->bottom = 0;
+ return TRUE;
+}
+
+#endif /* !defined(__WINESRC__) || defined(WINE_NO_INLINE_RECT) */
+
+/* Undocumented functions */
+
+/* NOTE: This is SYSTEM.3, not USER.182, which is also named KillSystemTimer */
+WORD WINAPI SYSTEM_KillSystemTimer( WORD );
+
+#ifdef __WINESRC__
+WINUSERAPI BOOL CDECL __wine_send_input( HWND hwnd, const INPUT *input );
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WINUSER_ */
diff --git a/docs/libwine/winuser.rh b/docs/libwine/winuser.rh
new file mode 100644
index 0000000..bcc7160
--- /dev/null
+++ b/docs/libwine/winuser.rh
@@ -0,0 +1,1368 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* Macro to deal with LP64 <=> LLP64 differences in numeric constants with 'l' modifier */
+#ifndef __MSABI_LONG
+# if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__)
+# define __MSABI_LONG(x) x ## l
+# else
+# define __MSABI_LONG(x) x
+# endif
+#endif
+
+#ifdef RC_INVOKED
+# define MAKEINTRESOURCE(i) i
+#endif
+
+
+#define RT_MANIFEST MAKEINTRESOURCE(24)
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16)
+
+
+/*** ShowWindow() codes ***/
+#define SW_HIDE 0
+#define SW_SHOWNORMAL 1
+#define SW_NORMAL SW_SHOWNORMAL
+#define SW_SHOWMINIMIZED 2
+#define SW_SHOWMAXIMIZED 3
+#define SW_MAXIMIZE SW_SHOWMAXIMIZED
+#define SW_SHOWNOACTIVATE 4
+#define SW_SHOW 5
+#define SW_MINIMIZE 6
+#define SW_SHOWMINNOACTIVE 7
+#define SW_SHOWNA 8
+#define SW_RESTORE 9
+#define SW_SHOWDEFAULT 10
+#define SW_FORCEMINIMIZE 11
+#define SW_MAX 11
+#define SW_NORMALNA 0xCC /* Undocumented. Flag in MinMaximize */
+
+/* Obsolete ShowWindow() codes for compatibility */
+#define HIDE_WINDOW SW_HIDE
+#define SHOW_OPENWINDOW SW_SHOWNORMAL
+#define SHOW_ICONWINDOW SW_SHOWMINIMIZED
+#define SHOW_FULLSCREEN SW_SHOWMAXIMIZED
+#define SHOW_OPENNOACTIVATE SW_SHOWNOACTIVATE
+
+/* WM_SHOWWINDOW lParam codes */
+#define SW_PARENTCLOSING 1
+#define SW_OTHERZOOM 2
+#define SW_PARENTOPENING 3
+#define SW_OTHERUNZOOM 4
+
+
+/*** Virtual key codes ***/
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04
+#define VK_XBUTTON1 0x05
+#define VK_XBUTTON2 0x06
+/* 0x07 Undefined */
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+/* 0x0A-0x0B Undefined */
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+/* 0x0E-0x0F Undefined */
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+
+#define VK_KANA 0x15
+#define VK_HANGEUL VK_KANA
+#define VK_HANGUL VK_KANA
+#define VK_JUNJA 0x17
+#define VK_FINAL 0x18
+#define VK_HANJA 0x19
+#define VK_KANJI VK_HANJA
+
+/* 0x1A Undefined */
+#define VK_ESCAPE 0x1B
+
+#define VK_CONVERT 0x1C
+#define VK_NONCONVERT 0x1D
+#define VK_ACCEPT 0x1E
+#define VK_MODECHANGE 0x1F
+
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A /* OEM specific in Windows 3.1 SDK */
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+/* VK_0 - VK-9 0x30-0x39 Use ASCII instead */
+/* 0x3A-0x40 Undefined */
+/* VK_A - VK_Z 0x41-0x5A Use ASCII instead */
+#define VK_LWIN 0x5B
+#define VK_RWIN 0x5C
+#define VK_APPS 0x5D
+/* 0x5E Unassigned */
+#define VK_SLEEP 0x5F
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+/* 0x88-0x8F Unassigned */
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+#define VK_OEM_NEC_EQUAL 0x92
+#define VK_OEM_FJ_JISHO 0x92
+#define VK_OEM_FJ_MASSHOU 0x93
+#define VK_OEM_FJ_TOUROKU 0x94
+#define VK_OEM_FJ_LOYA 0x95
+#define VK_OEM_FJ_ROYA 0x96
+/* 0x97-0x9F Unassigned */
+/*
+ * differencing between right and left shift/control/alt key.
+ * Used only by GetAsyncKeyState() and GetKeyState().
+ */
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+
+#define VK_BROWSER_BACK 0xA6
+#define VK_BROWSER_FORWARD 0xA7
+#define VK_BROWSER_REFRESH 0xA8
+#define VK_BROWSER_STOP 0xA9
+#define VK_BROWSER_SEARCH 0xAA
+#define VK_BROWSER_FAVORITES 0xAB
+#define VK_BROWSER_HOME 0xAC
+#define VK_VOLUME_MUTE 0xAD
+#define VK_VOLUME_DOWN 0xAE
+#define VK_VOLUME_UP 0xAF
+#define VK_MEDIA_NEXT_TRACK 0xB0
+#define VK_MEDIA_PREV_TRACK 0xB1
+#define VK_MEDIA_STOP 0xB2
+#define VK_MEDIA_PLAY_PAUSE 0xB3
+#define VK_LAUNCH_MAIL 0xB4
+#define VK_LAUNCH_MEDIA_SELECT 0xB5
+#define VK_LAUNCH_APP1 0xB6
+#define VK_LAUNCH_APP2 0xB7
+
+/* 0xB8-0xB9 Unassigned */
+#define VK_OEM_1 0xBA
+#define VK_OEM_PLUS 0xBB
+#define VK_OEM_COMMA 0xBC
+#define VK_OEM_MINUS 0xBD
+#define VK_OEM_PERIOD 0xBE
+#define VK_OEM_2 0xBF
+#define VK_OEM_3 0xC0
+/* 0xC1-0xDA Unassigned */
+#define VK_OEM_4 0xDB
+#define VK_OEM_5 0xDC
+#define VK_OEM_6 0xDD
+#define VK_OEM_7 0xDE
+#define VK_OEM_8 0xDF
+/* 0xE0 OEM specific */
+#define VK_OEM_AX 0xE1 /* "AX" key on Japanese AX keyboard */
+#define VK_OEM_102 0xE2 /* "<>" or "\|" on RT 102-key keyboard */
+#define VK_ICO_HELP 0xE3 /* Help key on ICO */
+#define VK_ICO_00 0xE4 /* 00 key on ICO */
+#define VK_PROCESSKEY 0xE5
+#define VK_ICO_CLEAR 0xE6
+
+#define VK_PACKET 0xE7
+/* 0xE8 Unassigned */
+
+#define VK_OEM_RESET 0xE9
+#define VK_OEM_JUMP 0xEA
+#define VK_OEM_PA1 0xEB
+#define VK_OEM_PA2 0xEC
+#define VK_OEM_PA3 0xED
+#define VK_OEM_WSCTRL 0xEE
+#define VK_OEM_CUSEL 0xEF
+#define VK_OEM_ATTN 0xF0
+#define VK_OEM_FINISH 0xF1
+#define VK_OEM_COPY 0xF2
+#define VK_OEM_AUTO 0xF3
+#define VK_OEM_ENLW 0xF4
+#define VK_OEM_BACKTAB 0xF5
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+/* 0xFF Unassigned */
+
+
+/*** Messages ***/
+#ifndef NOWINMESSAGES
+#define WM_NULL 0x0000
+#define WM_CREATE 0x0001
+#define WM_DESTROY 0x0002
+#define WM_MOVE 0x0003
+#define WM_SIZEWAIT 0x0004 /* DDK / Win16 */
+#define WM_SIZE 0x0005
+#define WM_ACTIVATE 0x0006
+
+/* WM_ACTIVATE wParam values */
+#define WA_INACTIVE 0
+#define WA_ACTIVE 1
+#define WA_CLICKACTIVE 2
+
+#define WM_SETFOCUS 0x0007
+#define WM_KILLFOCUS 0x0008
+#define WM_SETVISIBLE 0x0009 /* DDK / Win16 */
+#define WM_ENABLE 0x000a
+#define WM_SETREDRAW 0x000b
+#define WM_SETTEXT 0x000c
+#define WM_GETTEXT 0x000d
+#define WM_GETTEXTLENGTH 0x000e
+#define WM_PAINT 0x000f
+#define WM_CLOSE 0x0010
+#define WM_QUERYENDSESSION 0x0011
+#define WM_QUIT 0x0012
+#define WM_QUERYOPEN 0x0013
+#define WM_ERASEBKGND 0x0014
+#define WM_SYSCOLORCHANGE 0x0015
+#define WM_ENDSESSION 0x0016
+#define WM_SYSTEMERROR 0x0017 /* DDK / Win16 */
+#define WM_SHOWWINDOW 0x0018
+#define WM_CTLCOLOR 0x0019 /* Added from windowsx.h */
+#define WM_WININICHANGE 0x001a
+#define WM_SETTINGCHANGE WM_WININICHANGE
+#define WM_DEVMODECHANGE 0x001b
+#define WM_ACTIVATEAPP 0x001c
+#define WM_FONTCHANGE 0x001d
+#define WM_TIMECHANGE 0x001e
+#define WM_CANCELMODE 0x001f
+#define WM_SETCURSOR 0x0020
+#define WM_MOUSEACTIVATE 0x0021
+#define WM_CHILDACTIVATE 0x0022
+#define WM_QUEUESYNC 0x0023
+#define WM_GETMINMAXINFO 0x0024
+
+#define WM_PAINTICON 0x0026
+#define WM_ICONERASEBKGND 0x0027
+#define WM_NEXTDLGCTL 0x0028
+#define WM_ALTTABACTIVE 0x0029 /* DDK / Win16 */
+#define WM_SPOOLERSTATUS 0x002a
+#define WM_DRAWITEM 0x002b
+#define WM_MEASUREITEM 0x002c
+#define WM_DELETEITEM 0x002d
+#define WM_VKEYTOITEM 0x002e
+#define WM_CHARTOITEM 0x002f
+#define WM_SETFONT 0x0030
+#define WM_GETFONT 0x0031
+#define WM_SETHOTKEY 0x0032
+#define WM_GETHOTKEY 0x0033
+#define WM_FILESYSCHANGE 0x0034 /* DDK / Win16 */
+#define WM_ISACTIVEICON 0x0035 /* DDK / Win16 */
+#define WM_QUERYPARKICON 0x0036 /* Undocumented */
+#define WM_QUERYDRAGICON 0x0037
+#define WM_QUERYSAVESTATE 0x0038 /* Undocumented */
+#define WM_COMPAREITEM 0x0039
+#define WM_TESTING 0x003a /* DDK / Win16 */
+
+#define WM_GETOBJECT 0x003d
+
+#define WM_ACTIVATESHELLWINDOW 0x003e /* FIXME: Wine-only */
+
+#define WM_COMPACTING 0x0041
+
+#define WM_COMMNOTIFY 0x0044
+#define WM_WINDOWPOSCHANGING 0x0046
+#define WM_WINDOWPOSCHANGED 0x0047
+
+#define WM_POWER 0x0048
+
+/* For WM_POWER */
+#define PWR_OK 1
+#define PWR_FAIL (-1)
+#define PWR_SUSPENDREQUEST 1
+#define PWR_SUSPENDRESUME 2
+#define PWR_CRITICALRESUME 3
+
+/* Win32 4.0 messages */
+#define WM_COPYDATA 0x004a
+#define WM_CANCELJOURNAL 0x004b
+#define WM_KEYF1 0x004d /* DDK / Win16 */
+#define WM_NOTIFY 0x004e
+#define WM_INPUTLANGCHANGEREQUEST 0x0050
+#define WM_INPUTLANGCHANGE 0x0051
+#define WM_TCARD 0x0052
+#define WM_HELP 0x0053
+#define WM_USERCHANGED 0x0054
+#define WM_NOTIFYFORMAT 0x0055
+
+/* WM_NOTIFYFORMAT commands and return values */
+#define NFR_ANSI 1
+#define NFR_UNICODE 2
+#define NF_QUERY 3
+#define NF_REQUERY 4
+
+#define WM_CONTEXTMENU 0x007b
+#define WM_STYLECHANGING 0x007c
+#define WM_STYLECHANGED 0x007d
+#define WM_DISPLAYCHANGE 0x007e
+#define WM_GETICON 0x007f
+#define WM_SETICON 0x0080
+
+/* Non-client system messages */
+#define WM_NCCREATE 0x0081
+#define WM_NCDESTROY 0x0082
+#define WM_NCCALCSIZE 0x0083
+#define WM_NCHITTEST 0x0084
+#define WM_NCPAINT 0x0085
+#define WM_NCACTIVATE 0x0086
+
+#define WM_GETDLGCODE 0x0087
+#define WM_SYNCPAINT 0x0088
+#define WM_SYNCTASK 0x0089 /* DDK / Win16 */
+
+/* Non-client mouse messages */
+#define WM_NCMOUSEMOVE 0x00a0
+#define WM_NCLBUTTONDOWN 0x00a1
+#define WM_NCLBUTTONUP 0x00a2
+#define WM_NCLBUTTONDBLCLK 0x00a3
+#define WM_NCRBUTTONDOWN 0x00a4
+#define WM_NCRBUTTONUP 0x00a5
+#define WM_NCRBUTTONDBLCLK 0x00a6
+#define WM_NCMBUTTONDOWN 0x00a7
+#define WM_NCMBUTTONUP 0x00a8
+#define WM_NCMBUTTONDBLCLK 0x00a9
+
+#define WM_NCXBUTTONDOWN 0x00ab
+#define WM_NCXBUTTONUP 0x00ac
+#define WM_NCXBUTTONDBLCLK 0x00ad
+
+/* Raw input */
+#define WM_INPUT_DEVICE_CHANGE 0x00fe
+#define WM_INPUT 0x00ff
+
+/* Keyboard messages */
+#define WM_KEYFIRST 0x0100
+#define WM_KEYDOWN WM_KEYFIRST
+#define WM_KEYUP 0x0101
+#define WM_CHAR 0x0102
+#define WM_DEADCHAR 0x0103
+#define WM_SYSKEYDOWN 0x0104
+#define WM_SYSKEYUP 0x0105
+#define WM_SYSCHAR 0x0106
+#define WM_SYSDEADCHAR 0x0107
+#define WM_UNICHAR 0x0109
+#define WM_KEYLAST WM_UNICHAR
+
+#define UNICODE_NOCHAR 0xffff
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_STARTCOMPOSITION 0x010d
+#define WM_IME_ENDCOMPOSITION 0x010e
+#define WM_IME_COMPOSITION 0x010f
+#define WM_IME_KEYLAST 0x010f
+
+#define WM_INITDIALOG 0x0110
+#define WM_COMMAND 0x0111
+#define WM_SYSCOMMAND 0x0112
+#define WM_TIMER 0x0113
+
+/* Scroll messages */
+#define WM_HSCROLL 0x0114
+#define WM_VSCROLL 0x0115
+
+/* Menu messages */
+#define WM_INITMENU 0x0116
+#define WM_INITMENUPOPUP 0x0117
+#define WM_GESTURE 0x0119
+#define WM_GESTURENOTIFY 0x011A
+
+#define WM_MENUSELECT 0x011F
+#define WM_MENUCHAR 0x0120
+#define WM_ENTERIDLE 0x0121
+
+#define WM_MENURBUTTONUP 0x0122
+#define WM_MENUDRAG 0x0123
+#define WM_MENUGETOBJECT 0x0124
+#define WM_UNINITMENUPOPUP 0x0125
+#define WM_MENUCOMMAND 0x0126
+
+#define WM_CHANGEUISTATE 0x0127
+#define WM_UPDATEUISTATE 0x0128
+#define WM_QUERYUISTATE 0x0129
+
+/* UI flags for WM_*UISTATE */
+/* for low-order word of wparam */
+#define UIS_SET 1
+#define UIS_CLEAR 2
+#define UIS_INITIALIZE 3
+/* for hi-order word of wparam */
+#define UISF_HIDEFOCUS 0x1
+#define UISF_HIDEACCEL 0x2
+#define UISF_ACTIVE 0x4
+
+#define WM_LBTRACKPOINT 0x0131 /* DDK / Win16 */
+
+/* Win32 CTLCOLOR messages */
+#define WM_CTLCOLORMSGBOX 0x0132
+#define WM_CTLCOLOREDIT 0x0133
+#define WM_CTLCOLORLISTBOX 0x0134
+#define WM_CTLCOLORBTN 0x0135
+#define WM_CTLCOLORDLG 0x0136
+#define WM_CTLCOLORSCROLLBAR 0x0137
+#define WM_CTLCOLORSTATIC 0x0138
+
+#define MN_GETHMENU 0x01E1
+
+/* Mouse messages */
+#define WM_MOUSEFIRST 0x0200
+#define WM_MOUSEMOVE WM_MOUSEFIRST
+#define WM_LBUTTONDOWN 0x0201
+#define WM_LBUTTONUP 0x0202
+#define WM_LBUTTONDBLCLK 0x0203
+#define WM_RBUTTONDOWN 0x0204
+#define WM_RBUTTONUP 0x0205
+#define WM_RBUTTONDBLCLK 0x0206
+#define WM_MBUTTONDOWN 0x0207
+#define WM_MBUTTONUP 0x0208
+#define WM_MBUTTONDBLCLK 0x0209
+#define WM_MOUSEWHEEL 0x020A
+#define WM_XBUTTONDOWN 0x020B
+#define WM_XBUTTONUP 0x020C
+#define WM_XBUTTONDBLCLK 0x020D
+#define WM_MOUSEHWHEEL 0x020E
+#define WM_MOUSELAST WM_MOUSEHWHEEL
+
+/* Macros for the mouse messages */
+#define WHEEL_DELTA 120
+#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
+#define WHEEL_PAGESCROLL (UINT_MAX)
+
+#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
+#define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam))
+#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
+#define XBUTTON1 0x0001
+#define XBUTTON2 0x0002
+
+#define WM_PARENTNOTIFY 0x0210
+#define WM_ENTERMENULOOP 0x0211
+#define WM_EXITMENULOOP 0x0212
+#define WM_NEXTMENU 0x0213
+
+/* Win32 4.0 messages */
+#define WM_SIZING 0x0214
+#define WM_CAPTURECHANGED 0x0215
+#define WM_MOVING 0x0216
+#define WM_POWERBROADCAST 0x0218
+#define WM_DEVICECHANGE 0x0219
+/* MDI messages */
+#define WM_MDICREATE 0x0220
+#define WM_MDIDESTROY 0x0221
+#define WM_MDIACTIVATE 0x0222
+#define WM_MDIRESTORE 0x0223
+#define WM_MDINEXT 0x0224
+#define WM_MDIMAXIMIZE 0x0225
+#define WM_MDITILE 0x0226
+#define WM_MDICASCADE 0x0227
+#define WM_MDIICONARRANGE 0x0228
+#define WM_MDIGETACTIVE 0x0229
+
+/* D&D messages */
+#define WM_DROPOBJECT 0x022A /* DDK / Win16 */
+#define WM_QUERYDROPOBJECT 0x022B /* DDK / Win16 */
+#define WM_BEGINDRAG 0x022C /* DDK / Win16 */
+#define WM_DRAGLOOP 0x022D /* DDK / Win16 */
+#define WM_DRAGSELECT 0x022E /* DDK / Win16 */
+#define WM_DRAGMOVE 0x022F /* DDK / Win16 */
+
+#define WM_MDISETMENU 0x0230
+#define WM_ENTERSIZEMOVE 0x0231
+#define WM_EXITSIZEMOVE 0x0232
+#define WM_DROPFILES 0x0233
+#define WM_MDIREFRESHMENU 0x0234
+
+#define WM_POINTERDEVICECHANGE 0x0238
+#define WM_POINTERDEVICEINRANGE 0x0239
+#define WM_POINTERDEVICEOUTOFRANGE 0x023a
+
+#define WM_TOUCH 0x0240
+#define WM_NCPOINTERUPDATE 0x0241
+#define WM_NCPOINTERDOWN 0x0242
+#define WM_NCPOINTERUP 0x0243
+#define WM_POINTERUPDATE 0x0245
+#define WM_POINTERDOWN 0x0246
+#define WM_POINTERUP 0x0247
+#define WM_POINTERENTER 0x0249
+#define WM_POINTERLEAVE 0x024a
+#define WM_POINTERACTIVATE 0x024b
+#define WM_POINTERCAPTURECHANGED 0x024c
+#define WM_TOUCHHITTESTING 0x024d
+#define WM_POINTERWHEEL 0x024e
+#define WM_POINTERHWHEEL 0x024f
+
+#define WM_POINTERROUTEDTO 0x0251
+#define WM_POINTERROUTEDAWAY 0x0252
+#define WM_POINTERROUTEDRELEASED 0x0253
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_SETCONTEXT 0x0281
+#define WM_IME_NOTIFY 0x0282
+#define WM_IME_CONTROL 0x0283
+#define WM_IME_COMPOSITIONFULL 0x0284
+#define WM_IME_SELECT 0x0285
+#define WM_IME_CHAR 0x0286
+/* Win32 5.0 messages for IME */
+#define WM_IME_REQUEST 0x0288
+
+/* Win32 4.0 messages for IME */
+#define WM_IME_KEYDOWN 0x0290
+#define WM_IME_KEYUP 0x0291
+
+#define WM_NCMOUSEHOVER 0x02A0
+#define WM_MOUSEHOVER 0x02A1
+#define WM_MOUSELEAVE 0x02A3
+#define WM_NCMOUSELEAVE 0x02A2
+
+#define WM_WTSSESSION_CHANGE 0x02B1
+
+#define WM_TABLET_FIRST 0x02c0
+#define WM_TABLET_LAST 0x02df
+
+#define WM_DPICHANGED 0x02e0
+#define WM_DPICHANGED_BEFOREPARENT 0x02e2
+#define WM_DPICHANGED_AFTERPARENT 0x02e3
+#define WM_GETDPISCALEDSIZE 0x02e4
+
+/* Clipboard command messages */
+#define WM_CUT 0x0300
+#define WM_COPY 0x0301
+#define WM_PASTE 0x0302
+#define WM_CLEAR 0x0303
+#define WM_UNDO 0x0304
+
+/* Clipboard owner messages */
+#define WM_RENDERFORMAT 0x0305
+#define WM_RENDERALLFORMATS 0x0306
+#define WM_DESTROYCLIPBOARD 0x0307
+
+/* Clipboard viewer messages */
+#define WM_DRAWCLIPBOARD 0x0308
+#define WM_PAINTCLIPBOARD 0x0309
+#define WM_VSCROLLCLIPBOARD 0x030A
+#define WM_SIZECLIPBOARD 0x030B
+#define WM_ASKCBFORMATNAME 0x030C
+#define WM_CHANGECBCHAIN 0x030D
+#define WM_HSCROLLCLIPBOARD 0x030E
+
+#define WM_QUERYNEWPALETTE 0x030F
+#define WM_PALETTEISCHANGING 0x0310
+#define WM_PALETTECHANGED 0x0311
+#define WM_HOTKEY 0x0312
+
+#define WM_PRINT 0x0317
+#define WM_PRINTCLIENT 0x0318
+#define WM_APPCOMMAND 0x0319
+#define WM_THEMECHANGED 0x031A
+#define WM_CLIPBOARDUPDATE 0x031D
+
+#define WM_DWMCOMPOSITIONCHANGED 0x031E
+#define WM_DWMNCRENDERINGCHANGED 0x031F
+#define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
+#define WM_DWMWINDOWMAXIMIZEDCHANGE 0x0321
+#define WM_DWMSENDICONICTHUMBNAIL 0x0323
+#define WM_DWMSENDICONICLIVEPREVIEWBITMAP 0x0326
+
+#define WM_GETTITLEBARINFOEX 0x033F
+
+#define WM_HANDHELDFIRST 0x0358
+#define WM_HANDHELDLAST 0x035F
+
+#define WM_AFXFIRST 0x0360
+#define WM_AFXLAST 0x037F
+
+#define WM_PENWINFIRST 0x0380
+#define WM_PENWINLAST 0x038F
+
+#define WM_USER 0x0400
+
+#define WM_APP 0x8000
+
+
+/* wParam for WM_SIZING message */
+#define WMSZ_LEFT 1
+#define WMSZ_RIGHT 2
+#define WMSZ_TOP 3
+#define WMSZ_TOPLEFT 4
+#define WMSZ_TOPRIGHT 5
+#define WMSZ_BOTTOM 6
+#define WMSZ_BOTTOMLEFT 7
+#define WMSZ_BOTTOMRIGHT 8
+
+/* WM_NCHITTEST return codes */
+#define HTERROR (-2)
+#define HTTRANSPARENT (-1)
+#define HTNOWHERE 0
+#define HTCLIENT 1
+#define HTCAPTION 2
+#define HTSYSMENU 3
+#define HTSIZE 4
+#define HTGROWBOX HTSIZE
+#define HTMENU 5
+#define HTHSCROLL 6
+#define HTVSCROLL 7
+#define HTMINBUTTON 8
+#define HTREDUCE HTMINBUTTON
+#define HTMAXBUTTON 9
+#define HTZOOM HTMAXBUTTON
+#define HTLEFT 10
+#define HTSIZEFIRST HTLEFT
+#define HTRIGHT 11
+#define HTTOP 12
+#define HTTOPLEFT 13
+#define HTTOPRIGHT 14
+#define HTBOTTOM 15
+#define HTBOTTOMLEFT 16
+#define HTBOTTOMRIGHT 17
+#define HTSIZELAST HTBOTTOMRIGHT
+#define HTBORDER 18
+#define HTOBJECT 19
+#define HTCLOSE 20
+#define HTHELP 21
+
+/* SendMessageTimeout flags */
+#define SMTO_NORMAL 0x0000
+#define SMTO_BLOCK 0x0001
+#define SMTO_ABORTIFHUNG 0x0002
+#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
+#define SMTO_ERRORONEXIT 0x0020
+
+/* WM_MOUSEACTIVATE return values */
+#define MA_ACTIVATE 1
+#define MA_ACTIVATEANDEAT 2
+#define MA_NOACTIVATE 3
+#define MA_NOACTIVATEANDEAT 4
+
+/* WM_GETICON/WM_SETICON params values */
+#define ICON_SMALL 0
+#define ICON_BIG 1
+#define ICON_SMALL2 2
+
+/* WM_SIZE message wParam values */
+#define SIZE_RESTORED 0
+#define SIZE_MINIMIZED 1
+#define SIZE_MAXIMIZED 2
+#define SIZE_MAXSHOW 3
+#define SIZE_MAXHIDE 4
+#define SIZENORMAL SIZE_RESTORED
+#define SIZEICONIC SIZE_MINIMIZED
+#define SIZEFULLSCREEN SIZE_MAXIMIZED
+#define SIZEZOOMSHOW SIZE_MAXSHOW
+#define SIZEZOOMHIDE SIZE_MAXHIDE
+
+/* WM_NCCALCSIZE return flags */
+#define WVR_ALIGNTOP 0x0010
+#define WVR_ALIGNLEFT 0x0020
+#define WVR_ALIGNBOTTOM 0x0040
+#define WVR_ALIGNRIGHT 0x0080
+#define WVR_HREDRAW 0x0100
+#define WVR_VREDRAW 0x0200
+#define WVR_REDRAW (WVR_HREDRAW | WVR_VREDRAW)
+#define WVR_VALIDRECTS 0x0400
+
+/* Key status flags for mouse events */
+#ifndef NOKEYSTATES
+#define MK_LBUTTON 0x0001
+#define MK_RBUTTON 0x0002
+#define MK_SHIFT 0x0004
+#define MK_CONTROL 0x0008
+#define MK_MBUTTON 0x0010
+#define MK_XBUTTON1 0x0020
+#define MK_XBUTTON2 0x0040
+#endif /* NOKEYSTATES */
+
+#ifndef NOTRACKMOUSEEVENT
+#define TME_HOVER 0x00000001
+#define TME_LEAVE 0x00000002
+#define TME_NONCLIENT 0x00000010
+#define TME_QUERY 0x40000000
+#define TME_CANCEL 0x80000000
+#define HOVER_DEFAULT 0xFFFFFFFF
+#endif /* NOTRACKMOUSEEVENT */
+
+#endif /* NOWINMESSAGES */
+
+
+/*** Window Styles ***/
+#ifndef NOWINSTYLES
+#define WS_OVERLAPPED __MSABI_LONG(0x00000000)
+#define WS_POPUP __MSABI_LONG(0x80000000)
+#define WS_CHILD __MSABI_LONG(0x40000000)
+#define WS_MINIMIZE __MSABI_LONG(0x20000000)
+#define WS_VISIBLE __MSABI_LONG(0x10000000)
+#define WS_DISABLED __MSABI_LONG(0x08000000)
+#define WS_CLIPSIBLINGS __MSABI_LONG(0x04000000)
+#define WS_CLIPCHILDREN __MSABI_LONG(0x02000000)
+#define WS_MAXIMIZE __MSABI_LONG(0x01000000)
+#define WS_BORDER __MSABI_LONG(0x00800000)
+#define WS_DLGFRAME __MSABI_LONG(0x00400000)
+#define WS_VSCROLL __MSABI_LONG(0x00200000)
+#define WS_HSCROLL __MSABI_LONG(0x00100000)
+#define WS_SYSMENU __MSABI_LONG(0x00080000)
+#define WS_THICKFRAME __MSABI_LONG(0x00040000)
+#define WS_GROUP __MSABI_LONG(0x00020000)
+#define WS_TABSTOP __MSABI_LONG(0x00010000)
+#define WS_MINIMIZEBOX __MSABI_LONG(0x00020000)
+#define WS_MAXIMIZEBOX __MSABI_LONG(0x00010000)
+#define WS_CAPTION (WS_BORDER | WS_DLGFRAME)
+#define WS_TILED WS_OVERLAPPED
+#define WS_ICONIC WS_MINIMIZE
+#define WS_SIZEBOX WS_THICKFRAME
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME| WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW WS_CHILD
+#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
+#endif /* NOWINSTYLES */
+
+
+/*** Window extended styles ***/
+#ifndef NOWINSTYLES
+#define WS_EX_DLGMODALFRAME __MSABI_LONG(0x00000001)
+#define WS_EX_DRAGDETECT __MSABI_LONG(0x00000002) /* Undocumented */
+#define WS_EX_NOPARENTNOTIFY __MSABI_LONG(0x00000004)
+#define WS_EX_TOPMOST __MSABI_LONG(0x00000008)
+#define WS_EX_ACCEPTFILES __MSABI_LONG(0x00000010)
+#define WS_EX_TRANSPARENT __MSABI_LONG(0x00000020)
+#define WS_EX_MDICHILD __MSABI_LONG(0x00000040)
+#define WS_EX_TOOLWINDOW __MSABI_LONG(0x00000080)
+#define WS_EX_WINDOWEDGE __MSABI_LONG(0x00000100)
+#define WS_EX_CLIENTEDGE __MSABI_LONG(0x00000200)
+#define WS_EX_CONTEXTHELP __MSABI_LONG(0x00000400)
+#define WS_EX_RIGHT __MSABI_LONG(0x00001000)
+#define WS_EX_LEFT __MSABI_LONG(0x00000000)
+#define WS_EX_RTLREADING __MSABI_LONG(0x00002000)
+#define WS_EX_LTRREADING __MSABI_LONG(0x00000000)
+#define WS_EX_LEFTSCROLLBAR __MSABI_LONG(0x00004000)
+#define WS_EX_RIGHTSCROLLBAR __MSABI_LONG(0x00000000)
+#define WS_EX_CONTROLPARENT __MSABI_LONG(0x00010000)
+#define WS_EX_STATICEDGE __MSABI_LONG(0x00020000)
+#define WS_EX_APPWINDOW __MSABI_LONG(0x00040000)
+#define WS_EX_LAYERED __MSABI_LONG(0x00080000)
+#define WS_EX_NOINHERITLAYOUT __MSABI_LONG(0x00100000)
+#define WS_EX_LAYOUTRTL __MSABI_LONG(0x00400000)
+#define WS_EX_COMPOSITED __MSABI_LONG(0x02000000)
+#define WS_EX_NOACTIVATE __MSABI_LONG(0x08000000)
+
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
+#endif /* NOWINSTYLES */
+
+
+/*** Class styles ***/
+#ifndef NOWINSTYLES
+#define CS_VREDRAW 0x00000001
+#define CS_HREDRAW 0x00000002
+#define CS_KEYCVTWINDOW 0x00000004 /* DDK / Win16 */
+#define CS_DBLCLKS 0x00000008
+#define CS_OWNDC 0x00000020
+#define CS_CLASSDC 0x00000040
+#define CS_PARENTDC 0x00000080
+#define CS_NOKEYCVT 0x00000100 /* DDK / Win16 */
+#define CS_NOCLOSE 0x00000200
+#define CS_SAVEBITS 0x00000800
+#define CS_BYTEALIGNCLIENT 0x00001000
+#define CS_BYTEALIGNWINDOW 0x00002000
+#define CS_GLOBALCLASS 0x00004000
+#define CS_IME 0x00010000
+#define CS_DROPSHADOW 0x00020000
+#endif /* NOWINSTYLES */
+
+
+/*** Predefined Clipboard Formats ***/
+#ifndef NOCLIPBOARD
+#define CF_TEXT 1
+#define CF_BITMAP 2
+#define CF_METAFILEPICT 3
+#define CF_SYLK 4
+#define CF_DIF 5
+#define CF_TIFF 6
+#define CF_OEMTEXT 7
+#define CF_DIB 8
+#define CF_PALETTE 9
+#define CF_PENDATA 10
+#define CF_RIFF 11
+#define CF_WAVE 12
+#define CF_UNICODETEXT 13
+#define CF_ENHMETAFILE 14
+#define CF_HDROP 15
+#define CF_LOCALE 16
+#define CF_DIBV5 17
+#define CF_MAX 18
+
+#define CF_OWNERDISPLAY 0x0080
+#define CF_DSPTEXT 0x0081
+#define CF_DSPBITMAP 0x0082
+#define CF_DSPMETAFILEPICT 0x0083
+#define CF_DSPENHMETAFILE 0x008E
+
+/* "Private" formats don't get GlobalFree()'d */
+#define CF_PRIVATEFIRST 0x0200
+#define CF_PRIVATELAST 0x02FF
+
+/* "GDIOBJ" formats do get DeleteObject()'d */
+#define CF_GDIOBJFIRST 0x0300
+#define CF_GDIOBJLAST 0x03FF
+#endif /* NOCLIPBOARD */
+
+
+/*** Menu flags ***/
+#ifndef NOMENUS
+#define MF_INSERT __MSABI_LONG(0x00000000)
+#define MF_CHANGE __MSABI_LONG(0x00000080)
+#define MF_APPEND __MSABI_LONG(0x00000100)
+#define MF_DELETE __MSABI_LONG(0x00000200)
+#define MF_REMOVE __MSABI_LONG(0x00001000)
+#define MF_END __MSABI_LONG(0x00000080)
+
+#define MF_ENABLED __MSABI_LONG(0x00000000)
+#define MF_GRAYED __MSABI_LONG(0x00000001)
+#define MF_DISABLED __MSABI_LONG(0x00000002)
+#define MF_STRING __MSABI_LONG(0x00000000)
+#define MF_BITMAP __MSABI_LONG(0x00000004)
+#define MF_UNCHECKED __MSABI_LONG(0x00000000)
+#define MF_CHECKED __MSABI_LONG(0x00000008)
+#define MF_POPUP __MSABI_LONG(0x00000010)
+#define MF_MENUBARBREAK __MSABI_LONG(0x00000020)
+#define MF_MENUBREAK __MSABI_LONG(0x00000040)
+#define MF_UNHILITE __MSABI_LONG(0x00000000)
+#define MF_HILITE __MSABI_LONG(0x00000080)
+#define MF_OWNERDRAW __MSABI_LONG(0x00000100)
+#define MF_USECHECKBITMAPS __MSABI_LONG(0x00000200)
+#define MF_BYCOMMAND __MSABI_LONG(0x00000000)
+#define MF_BYPOSITION __MSABI_LONG(0x00000400)
+#define MF_SEPARATOR __MSABI_LONG(0x00000800)
+#define MF_DEFAULT __MSABI_LONG(0x00001000)
+#define MF_SYSMENU __MSABI_LONG(0x00002000)
+#define MF_HELP __MSABI_LONG(0x00004000)
+#define MF_RIGHTJUSTIFY __MSABI_LONG(0x00004000)
+#define MF_MOUSESELECT __MSABI_LONG(0x00008000)
+
+/* Flags for extended menu item types */
+#define MFT_STRING MF_STRING
+#define MFT_BITMAP MF_BITMAP
+#define MFT_MENUBARBREAK MF_MENUBARBREAK
+#define MFT_MENUBREAK MF_MENUBREAK
+#define MFT_OWNERDRAW MF_OWNERDRAW
+#define MFT_RADIOCHECK __MSABI_LONG(0x00000200)
+#define MFT_SEPARATOR MF_SEPARATOR
+#define MFT_RIGHTORDER __MSABI_LONG(0x00002000)
+#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY
+
+/* Flags for extended menu item states */
+#define MFS_GRAYED __MSABI_LONG(0x00000003)
+#define MFS_DISABLED MFS_GRAYED
+#define MFS_CHECKED MF_CHECKED
+#define MFS_HILITE MF_HILITE
+#define MFS_ENABLED MF_ENABLED
+#define MFS_UNCHECKED MF_UNCHECKED
+#define MFS_UNHILITE MF_UNHILITE
+#define MFS_DEFAULT MF_DEFAULT
+
+/* DDK / Win16 defines */
+#define MFS_MASK __MSABI_LONG(0x0000108B)
+#define MFS_HOTTRACKDRAWN __MSABI_LONG(0x10000000)
+#define MFS_CACHEDBMP __MSABI_LONG(0x20000000)
+#define MFS_BOTTOMGAPDROP __MSABI_LONG(0x40000000)
+#define MFS_TOPGAPDROP __MSABI_LONG(0x80000000)
+#define MFS_GAPDROP (MFS_BOTTOMGAPDROP | MFS_TOPGAPDROP)
+#endif /* NOMENUS */
+
+
+/*** WM_SYSCOMMAND parameters ***/
+#ifndef NOSYSCOMMANDS
+/* At least HP-UX defines it in /usr/include/sys/signal.h */
+# ifdef SC_SIZE
+# undef SC_SIZE
+# endif
+#define SC_SIZE 0xf000
+#define SC_MOVE 0xf010
+#define SC_MINIMIZE 0xf020
+#define SC_MAXIMIZE 0xf030
+#define SC_NEXTWINDOW 0xf040
+#define SC_PREVWINDOW 0xf050
+#define SC_CLOSE 0xf060
+#define SC_VSCROLL 0xf070
+#define SC_HSCROLL 0xf080
+#define SC_MOUSEMENU 0xf090
+#define SC_KEYMENU 0xf100
+#define SC_ARRANGE 0xf110
+#define SC_RESTORE 0xf120
+#define SC_TASKLIST 0xf130
+#define SC_SCREENSAVE 0xf140
+#define SC_HOTKEY 0xf150
+
+/* Win32 4.0 */
+#define SC_DEFAULT 0xf160
+#define SC_MONITORPOWER 0xf170
+#define SC_CONTEXTHELP 0xf180
+#define SC_SEPARATOR 0xf00f
+
+#define GET_SC_WPARAM(wParam) ((int)wParam & 0xfff0)
+#define SCF_ISSECURE 0x0001
+
+/* Obsolete names */
+#define SC_ICON SC_MINIMIZE
+#define SC_ZOOM SC_MAXIMIZE
+#endif /* NOSYSCOMMANDS */
+
+
+/*** OEM Resource Ordinal Numbers ***/
+#ifdef OEMRESOURCE
+#define OBM_RDRVERT 32559
+#define OBM_RDRHORZ 32660
+#define OBM_RDR2DIM 32661
+#define OBM_TRTYPE 32732 /* FIXME: Wine-only */
+#define OBM_LFARROWI 32734
+#define OBM_RGARROWI 32735
+#define OBM_DNARROWI 32736
+#define OBM_UPARROWI 32737
+#define OBM_COMBO 32738
+#define OBM_MNARROW 32739
+#define OBM_LFARROWD 32740
+#define OBM_RGARROWD 32741
+#define OBM_DNARROWD 32742
+#define OBM_UPARROWD 32743
+#define OBM_RESTORED 32744
+#define OBM_ZOOMD 32745
+#define OBM_REDUCED 32746
+#define OBM_RESTORE 32747
+#define OBM_ZOOM 32748
+#define OBM_REDUCE 32749
+#define OBM_LFARROW 32750
+#define OBM_RGARROW 32751
+#define OBM_DNARROW 32752
+#define OBM_UPARROW 32753
+#define OBM_CLOSE 32754
+#define OBM_OLD_RESTORE 32755
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_REDUCE 32757
+#define OBM_BTNCORNERS 32758
+#define OBM_CHECKBOXES 32759
+#define OBM_CHECK 32760
+#define OBM_BTSIZE 32761
+#define OBM_OLD_LFARROW 32762
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_UPARROW 32765
+#define OBM_SIZE 32766
+#define OBM_OLD_CLOSE 32767
+
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_PEN 32631
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647
+#define OCR_NO 32648
+#define OCR_HAND 32649
+#define OCR_APPSTARTING 32650
+#define OCR_HELP 32651 /* DDK / Win16 */
+#define OCR_RDRVERT 32652 /* DDK / Win16 */
+#define OCR_RDRHORZ 32653 /* DDK / Win16 */
+#define OCR_RDR2DIM 32654 /* DDK / Win16 */
+#define OCR_RDRNORTH 32655 /* DDK / Win16 */
+#define OCR_RDRSOUTH 32656 /* DDK / Win16 */
+#define OCR_RDRWEST 32657 /* DDK / Win16 */
+#define OCR_RDREAST 32658 /* DDK / Win16 */
+#define OCR_RDRNORTHWEST 32659 /* DDK / Win16 */
+#define OCR_RDRNORTHEAST 32660 /* DDK / Win16 */
+#define OCR_RDRSOUTHWEST 32661 /* DDK / Win16 */
+#define OCR_RDRSOUTHEAST 32662 /* DDK / Win16 */
+
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_ERROR OIC_HAND
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_WARNING OIC_BANG
+#define OIC_NOTE 32516
+#define OIC_INFORMATION OIC_NOTE
+#define OIC_WINLOGO 32517
+#define OIC_SHIELD 32518
+#endif /* OEMRESOURCE */
+
+
+/*** Predefined resources ***/
+#ifndef NOICONS
+#define IDI_APPLICATION MAKEINTRESOURCE(32512)
+#define IDI_HAND MAKEINTRESOURCE(32513)
+#define IDI_QUESTION MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK MAKEINTRESOURCE(32516)
+#define IDI_WINLOGO MAKEINTRESOURCE(32517)
+#define IDI_SHIELD MAKEINTRESOURCE(32518)
+
+#define IDI_WARNING IDI_EXCLAMATION
+#define IDI_ERROR IDI_HAND
+#define IDI_INFORMATION IDI_ASTERISK
+#endif /* NOICONS */
+
+
+/*** Standard dialog button IDs ***/
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+#define IDCLOSE 8
+#define IDHELP 9
+#define IDTRYAGAIN 10
+#define IDCONTINUE 11
+#ifndef IDTIMEOUT
+#define IDTIMEOUT 32000
+#endif
+
+
+/*** Edit control styles ***/
+#ifndef NOWINSTYLES
+#define ES_LEFT __MSABI_LONG(0x00000000)
+#define ES_CENTER __MSABI_LONG(0x00000001)
+#define ES_RIGHT __MSABI_LONG(0x00000002)
+#define ES_MULTILINE __MSABI_LONG(0x00000004)
+#define ES_UPPERCASE __MSABI_LONG(0x00000008)
+#define ES_LOWERCASE __MSABI_LONG(0x00000010)
+#define ES_PASSWORD __MSABI_LONG(0x00000020)
+#define ES_AUTOVSCROLL __MSABI_LONG(0x00000040)
+#define ES_AUTOHSCROLL __MSABI_LONG(0x00000080)
+#define ES_NOHIDESEL __MSABI_LONG(0x00000100)
+#define ES_COMBO __MSABI_LONG(0x00000200) /* Undocumented. Parent is a combobox */
+#define ES_OEMCONVERT __MSABI_LONG(0x00000400)
+#define ES_READONLY __MSABI_LONG(0x00000800)
+#define ES_WANTRETURN __MSABI_LONG(0x00001000)
+#define ES_NUMBER __MSABI_LONG(0x00002000)
+#endif /* NOWINSTYLES */
+
+
+/*** Edit control messages ***/
+#ifndef NOWINMESSAGES
+#define EM_GETSEL 0x00b0
+#define EM_SETSEL 0x00b1
+#define EM_GETRECT 0x00b2
+#define EM_SETRECT 0x00b3
+#define EM_SETRECTNP 0x00b4
+#define EM_SCROLL 0x00b5
+#define EM_LINESCROLL 0x00b6
+#define EM_SCROLLCARET 0x00b7
+#define EM_GETMODIFY 0x00b8
+#define EM_SETMODIFY 0x00b9
+#define EM_GETLINECOUNT 0x00ba
+#define EM_LINEINDEX 0x00bb
+#define EM_SETHANDLE 0x00bc
+#define EM_GETHANDLE 0x00bd
+#define EM_GETTHUMB 0x00be
+/* Unassigned 0x00bf and 0x00c0 */
+#define EM_LINELENGTH 0x00c1
+#define EM_REPLACESEL 0x00c2
+#define EM_SETFONT 0x00c3 /* DDK / Win16 */
+#define EM_GETLINE 0x00c4
+#define EM_LIMITTEXT 0x00c5
+#define EM_SETLIMITTEXT EM_LIMITTEXT
+#define EM_CANUNDO 0x00c6
+#define EM_UNDO 0x00c7
+#define EM_FMTLINES 0x00c8
+#define EM_LINEFROMCHAR 0x00c9
+#define EM_SETWORDBREAK 0x00ca /* DDK / Win16 */
+#define EM_SETTABSTOPS 0x00cb
+#define EM_SETPASSWORDCHAR 0x00cc
+#define EM_EMPTYUNDOBUFFER 0x00cd
+#define EM_GETFIRSTVISIBLELINE 0x00ce
+#define EM_SETREADONLY 0x00cf
+#define EM_SETWORDBREAKPROC 0x00d0
+#define EM_GETWORDBREAKPROC 0x00d1
+#define EM_GETPASSWORDCHAR 0x00d2
+#define EM_SETMARGINS 0x00d3
+#define EM_GETMARGINS 0x00d4
+#define EM_GETLIMITTEXT 0x00d5
+#define EM_POSFROMCHAR 0x00d6
+#define EM_CHARFROMPOS 0x00d7
+#define EM_SETIMESTATUS 0x00d8
+#define EM_GETIMESTATUS 0x00d9
+#endif /* NOWINMESSAGES */
+
+
+/*** Button control styles ***/
+#define BS_PUSHBUTTON __MSABI_LONG(0x00000000)
+#define BS_DEFPUSHBUTTON __MSABI_LONG(0x00000001)
+#define BS_CHECKBOX __MSABI_LONG(0x00000002)
+#define BS_AUTOCHECKBOX __MSABI_LONG(0x00000003)
+#define BS_RADIOBUTTON __MSABI_LONG(0x00000004)
+#define BS_3STATE __MSABI_LONG(0x00000005)
+#define BS_AUTO3STATE __MSABI_LONG(0x00000006)
+#define BS_GROUPBOX __MSABI_LONG(0x00000007)
+#define BS_USERBUTTON __MSABI_LONG(0x00000008)
+#define BS_AUTORADIOBUTTON __MSABI_LONG(0x00000009)
+#define BS_PUSHBOX __MSABI_LONG(0x0000000A)
+#define BS_OWNERDRAW __MSABI_LONG(0x0000000B)
+#define BS_TYPEMASK __MSABI_LONG(0x0000000F)
+#define BS_LEFTTEXT __MSABI_LONG(0x00000020)
+#define BS_RIGHTBUTTON BS_LEFTTEXT
+
+#define BS_TEXT __MSABI_LONG(0x00000000)
+#define BS_ICON __MSABI_LONG(0x00000040)
+#define BS_BITMAP __MSABI_LONG(0x00000080)
+#define BS_LEFT __MSABI_LONG(0x00000100)
+#define BS_RIGHT __MSABI_LONG(0x00000200)
+#define BS_CENTER __MSABI_LONG(0x00000300)
+#define BS_TOP __MSABI_LONG(0x00000400)
+#define BS_BOTTOM __MSABI_LONG(0x00000800)
+#define BS_VCENTER __MSABI_LONG(0x00000C00)
+#define BS_PUSHLIKE __MSABI_LONG(0x00001000)
+#define BS_MULTILINE __MSABI_LONG(0x00002000)
+#define BS_NOTIFY __MSABI_LONG(0x00004000)
+#define BS_FLAT __MSABI_LONG(0x00008000)
+
+
+/*** Button notification codes ***/
+#define BN_CLICKED 0
+#define BN_PAINT 1
+#define BN_HILITE 2
+#define BN_PUSHED BN_HILITE
+#define BN_UNHILITE 3
+#define BN_UNPUSHED BN_UNHILITE
+#define BN_DISABLE 4
+#define BN_DOUBLECLICKED 5
+#define BN_DBLCLK BN_DOUBLECLICKED
+#define BN_SETFOCUS 6
+#define BN_KILLFOCUS 7
+
+
+/*** Win32 button control messages ***/
+#define BM_GETCHECK 0x00f0
+#define BM_SETCHECK 0x00f1
+#define BM_GETSTATE 0x00f2
+#define BM_SETSTATE 0x00f3
+#define BM_SETSTYLE 0x00f4
+#define BM_CLICK 0x00f5
+#define BM_GETIMAGE 0x00f6
+#define BM_SETIMAGE 0x00f7
+#define BM_SETDONTCLICK 0x00f8
+
+/* Button states */
+#define BST_UNCHECKED 0x0000
+#define BST_CHECKED 0x0001
+#define BST_INDETERMINATE 0x0002
+#define BST_PUSHED 0x0004
+#define BST_FOCUS 0x0008
+
+/*** Static Control Styles ***/
+#define SS_LEFT __MSABI_LONG(0x00000000)
+#define SS_CENTER __MSABI_LONG(0x00000001)
+#define SS_RIGHT __MSABI_LONG(0x00000002)
+#define SS_ICON __MSABI_LONG(0x00000003)
+#define SS_BLACKRECT __MSABI_LONG(0x00000004)
+#define SS_GRAYRECT __MSABI_LONG(0x00000005)
+#define SS_WHITERECT __MSABI_LONG(0x00000006)
+#define SS_BLACKFRAME __MSABI_LONG(0x00000007)
+#define SS_GRAYFRAME __MSABI_LONG(0x00000008)
+#define SS_WHITEFRAME __MSABI_LONG(0x00000009)
+#define SS_USERITEM __MSABI_LONG(0x0000000A)
+#define SS_SIMPLE __MSABI_LONG(0x0000000B)
+#define SS_LEFTNOWORDWRAP __MSABI_LONG(0x0000000C)
+#define SS_OWNERDRAW __MSABI_LONG(0x0000000D)
+#define SS_BITMAP __MSABI_LONG(0x0000000E)
+#define SS_ENHMETAFILE __MSABI_LONG(0x0000000F)
+#define SS_ETCHEDHORZ __MSABI_LONG(0x00000010)
+#define SS_ETCHEDVERT __MSABI_LONG(0x00000011)
+#define SS_ETCHEDFRAME __MSABI_LONG(0x00000012)
+#define SS_TYPEMASK __MSABI_LONG(0x0000001F)
+
+#define SS_REALSIZECONTROL __MSABI_LONG(0x00000040)
+#define SS_NOPREFIX __MSABI_LONG(0x00000080)
+#define SS_NOTIFY __MSABI_LONG(0x00000100)
+#define SS_CENTERIMAGE __MSABI_LONG(0x00000200)
+#define SS_RIGHTJUST __MSABI_LONG(0x00000400)
+#define SS_REALSIZEIMAGE __MSABI_LONG(0x00000800)
+#define SS_SUNKEN __MSABI_LONG(0x00001000)
+#define SS_EDITCONTROL __MSABI_LONG(0x00002000)
+#define SS_ENDELLIPSIS __MSABI_LONG(0x00004000)
+#define SS_PATHELLIPSIS __MSABI_LONG(0x00008000)
+#define SS_WORDELLIPSIS __MSABI_LONG(0x0000C000)
+#define SS_ELLIPSISMASK SS_WORDELLIPSIS
+
+
+/*** Dialog styles ***/
+#define DS_ABSALIGN __MSABI_LONG(0x00000001)
+#define DS_SYSMODAL __MSABI_LONG(0x00000002)
+#define DS_3DLOOK __MSABI_LONG(0x00000004) /* win95 */
+#define DS_FIXEDSYS __MSABI_LONG(0x00000008) /* win95 */
+#define DS_NOFAILCREATE __MSABI_LONG(0x00000010) /* win95 */
+#define DS_LOCALEDIT __MSABI_LONG(0x00000020)
+#define DS_SETFONT __MSABI_LONG(0x00000040)
+#define DS_MODALFRAME __MSABI_LONG(0x00000080)
+#define DS_NOIDLEMSG __MSABI_LONG(0x00000100)
+#define DS_SETFOREGROUND __MSABI_LONG(0x00000200) /* win95 */
+#define DS_CONTROL __MSABI_LONG(0x00000400) /* win95 */
+#define DS_CENTER __MSABI_LONG(0x00000800) /* win95 */
+#define DS_CENTERMOUSE __MSABI_LONG(0x00001000) /* win95 */
+#define DS_CONTEXTHELP __MSABI_LONG(0x00002000) /* win95 */
+#define DS_USEPIXELS __MSABI_LONG(0x00008000)
+#define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS)
+
+
+/*** Listbox styles ***/
+#ifndef NOWINSTYLES
+#define LBS_NOTIFY __MSABI_LONG(0x00000001)
+#define LBS_SORT __MSABI_LONG(0x00000002)
+#define LBS_NOREDRAW __MSABI_LONG(0x00000004)
+#define LBS_MULTIPLESEL __MSABI_LONG(0x00000008)
+#define LBS_OWNERDRAWFIXED __MSABI_LONG(0x00000010)
+#define LBS_OWNERDRAWVARIABLE __MSABI_LONG(0x00000020)
+#define LBS_HASSTRINGS __MSABI_LONG(0x00000040)
+#define LBS_USETABSTOPS __MSABI_LONG(0x00000080)
+#define LBS_NOINTEGRALHEIGHT __MSABI_LONG(0x00000100)
+#define LBS_MULTICOLUMN __MSABI_LONG(0x00000200)
+#define LBS_WANTKEYBOARDINPUT __MSABI_LONG(0x00000400)
+#define LBS_EXTENDEDSEL __MSABI_LONG(0x00000800)
+#define LBS_DISABLENOSCROLL __MSABI_LONG(0x00001000)
+#define LBS_NODATA __MSABI_LONG(0x00002000)
+#define LBS_NOSEL __MSABI_LONG(0x00004000)
+#define LBS_COMBOBOX __MSABI_LONG(0x00008000)
+#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+#endif /* NOWINSTYLES */
+
+/*** Combo box styles ***/
+#ifndef NOWINSTYLES
+#define CBS_SIMPLE __MSABI_LONG(0x00000001)
+#define CBS_DROPDOWN __MSABI_LONG(0x00000002)
+#define CBS_DROPDOWNLIST __MSABI_LONG(0x00000003)
+#define CBS_OWNERDRAWFIXED __MSABI_LONG(0x00000010)
+#define CBS_OWNERDRAWVARIABLE __MSABI_LONG(0x00000020)
+#define CBS_AUTOHSCROLL __MSABI_LONG(0x00000040)
+#define CBS_OEMCONVERT __MSABI_LONG(0x00000080)
+#define CBS_SORT __MSABI_LONG(0x00000100)
+#define CBS_HASSTRINGS __MSABI_LONG(0x00000200)
+#define CBS_NOINTEGRALHEIGHT __MSABI_LONG(0x00000400)
+#define CBS_DISABLENOSCROLL __MSABI_LONG(0x00000800)
+
+#define CBS_UPPERCASE __MSABI_LONG(0x00002000)
+#define CBS_LOWERCASE __MSABI_LONG(0x00004000)
+#endif /* NOWINSTYLES */
+
+
+/*** Scrollbar styles ***/
+#ifndef NOWINSTYLES
+#define SBS_HORZ __MSABI_LONG(0x00000000)
+#define SBS_VERT __MSABI_LONG(0x00000001)
+#define SBS_TOPALIGN __MSABI_LONG(0x00000002)
+#define SBS_LEFTALIGN __MSABI_LONG(0x00000002)
+#define SBS_BOTTOMALIGN __MSABI_LONG(0x00000004)
+#define SBS_RIGHTALIGN __MSABI_LONG(0x00000004)
+#define SBS_SIZEBOXTOPLEFTALIGN __MSABI_LONG(0x00000002)
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN __MSABI_LONG(0x00000004)
+#define SBS_SIZEBOX __MSABI_LONG(0x00000008)
+#define SBS_SIZEGRIP __MSABI_LONG(0x00000010)
+#endif /* NOWINSTYLES */
+
+/*** WinHelp commands ***/
+#define HELP_CONTEXT __MSABI_LONG(0x00000001)
+#define HELP_QUIT __MSABI_LONG(0x00000002)
+#define HELP_INDEX __MSABI_LONG(0x00000003)
+#define HELP_CONTENTS HELP_INDEX
+#define HELP_HELPONHELP __MSABI_LONG(0x00000004)
+#define HELP_SETINDEX __MSABI_LONG(0x00000005)
+#define HELP_SETCONTENTS HELP_SETINDEX
+#define HELP_CONTEXTPOPUP __MSABI_LONG(0x00000008)
+#define HELP_FORCEFILE __MSABI_LONG(0x00000009)
+#define HELP_KEY __MSABI_LONG(0x00000101)
+#define HELP_COMMAND __MSABI_LONG(0x00000102)
+#define HELP_PARTIALKEY __MSABI_LONG(0x00000105)
+#define HELP_MULTIKEY __MSABI_LONG(0x00000201)
+#define HELP_SETWINPOS __MSABI_LONG(0x00000203)
+
+#define HELP_CONTEXTMENU 0x000a
+#define HELP_FINDER 0x000b
+#define HELP_WM_HELP 0x000c
+#define HELP_SETPOPUP_POS 0x000d
+#define HELP_TCARD_DATA 0x0010
+#define HELP_TCARD_OTHER_CALLER 0x0011
+#define HELP_TCARD 0x8000
+
+#define IDH_NO_HELP 28440
+#define IDH_MISSING_CONTEXT 28441
+#define IDH_GENERIC_HELP_BUTTON 28442
+#define IDH_OK 28443
+#define IDH_CANCEL 28444
+#define IDH_HELP 28445