From 8e55986fc6a07e04a10872664f1f0ac1adbaeda1 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Thu, 9 Aug 2018 23:08:26 +0800 Subject: add API docs from libwine --- docs/libwine/ddraw.h | 2737 ++++++++++++++++++++++++++++++ docs/libwine/winuser.h | 4328 +++++++++++++++++++++++++++++++++++++++++++++++ docs/libwine/winuser.rh | 1368 +++++++++++++++ 3 files changed, 8433 insertions(+) create mode 100644 docs/libwine/ddraw.h create mode 100644 docs/libwine/winuser.h create mode 100644 docs/libwine/winuser.rh (limited to 'docs') 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 + +#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 +#endif +#include + + +#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 + +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 + + /* 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 -- cgit v1.2.3