⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddraw.h

📁 wince (windows mobile)绘制的很好实例,可以作为视频开发的参考
💻 H
📖 第 1 页 / 共 3 页
字号:
    /*
     * This element can be used to check changes in driver/chipset. This GUID is a unique identifier for the
     * driver/chipset pair. Use this element if you wish to track changes to the driver/chipset in order to
     * reprofile the graphics subsystem.
     * This element can also be used to identify particular problematic drivers.
     */

    GUID    guidDeviceIdentifier;

} DDDEVICEIDENTIFIER, * LPDDDEVICEIDENTIFIER;

/*
 * DDCOLORCONTROL
 */

typedef struct _DDCOLORCONTROL
{
    DWORD 		dwSize;
    DWORD		dwFlags;
    LONG		lBrightness;
    LONG		lContrast;
    LONG		lHue;
    LONG 		lSaturation;
    LONG		lSharpness;
    LONG		lGamma;
    LONG		lColorEnable;

} DDCOLORCONTROL, * LPDDCOLORCONTROL;

/*
 * DDCOLORCONTROL dwFlags values.
 */

#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

#define DDCOLOR_VALID           (DDCOLOR_BRIGHTNESS     | \
                                 DDCOLOR_CONTRAST       | \
                                 DDCOLOR_HUE            | \
                                 DDCOLOR_SATURATION     | \
                                 DDCOLOR_SHARPNESS      | \
                                 DDCOLOR_GAMMA          | \
                                 DDCOLOR_COLORENABLE)

/*
 * API's
 */

typedef BOOL (PASCAL * LPDDENUMCALLBACKEX)(LPGUID, LPWSTR, LPWSTR, LPVOID, HMONITOR);
extern HRESULT WINAPI DirectDrawEnumerateEx(LPDDENUMCALLBACKEX lpCallback, LPVOID lpContext, DWORD dwFlags);

extern HRESULT WINAPI DirectDrawCreate(LPGUID lpGUID, LPDIRECTDRAW *lplpDD, IUnknown *pUnkOuter);
extern HRESULT WINAPI DirectDrawCreateClipper(DWORD dwFlags, LPDIRECTDRAWCLIPPER *lplpDDClipper, IUnknown *pUnkOuter);

/*
 * DirectDrawEnumerateEx Flags
 */

/*
 * This flag causes enumeration of any GDI display devices which are part of
 * the Windows Desktop
 */
#define DDENUM_ATTACHEDSECONDARYDEVICES     0x00000001

/*
 * This flag causes enumeration of any GDI display devices which are not
 * part of the Windows Desktop
 */
#define DDENUM_DETACHEDSECONDARYDEVICES     0x00000002

#define DDENUM_VALID                        (DDENUM_ATTACHEDSECONDARYDEVICES | \
                                             DDENUM_DETACHEDSECONDARYDEVICES)

/*
 * Enumeration function pointer types
 */

typedef HRESULT (FAR PASCAL * LPDDENUMMODESCALLBACK)(LPDDSURFACEDESC, LPVOID);
typedef HRESULT (FAR PASCAL * LPDDENUMSURFACESCALLBACK)(LPDIRECTDRAWSURFACE, LPDDSURFACEDESC, LPVOID);

/*
 * IDirectDraw
 */

#undef INTERFACE
#define INTERFACE IDirectDraw
DECLARE_INTERFACE_(IDirectDraw, IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS)  PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;

    /*** IDirectDraw methods ***/
    STDMETHOD(CreateClipper)(THIS_ DWORD, LPDIRECTDRAWCLIPPER *, IUnknown *) PURE;
    STDMETHOD(CreatePalette)(THIS_ DWORD, LPPALETTEENTRY, LPDIRECTDRAWPALETTE *, IUnknown *) PURE;
    STDMETHOD(CreateSurface)(THIS_ LPDDSURFACEDESC, LPDIRECTDRAWSURFACE *, IUnknown *) PURE;
    STDMETHOD(EnumDisplayModes)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMMODESCALLBACK) PURE;
    STDMETHOD(EnumSurfaces)(THIS_ DWORD, LPDDSURFACEDESC, LPVOID, LPDDENUMSURFACESCALLBACK) PURE;
    STDMETHOD(FlipToGDISurface)(THIS) PURE;
    STDMETHOD(GetCaps)(THIS_ LPDDCAPS, LPDDCAPS) PURE;
    STDMETHOD(GetDisplayMode)(THIS_ LPDDSURFACEDESC) PURE;
    STDMETHOD(GetFourCCCodes)(THIS_  LPDWORD, LPDWORD) PURE;
    STDMETHOD(GetGDISurface)(THIS_ LPDIRECTDRAWSURFACE *) PURE;
    STDMETHOD(GetMonitorFrequency)(THIS_ LPDWORD) PURE;
    STDMETHOD(GetScanLine)(THIS_ LPDWORD) PURE;
    STDMETHOD(GetVerticalBlankStatus)(THIS_ LPBOOL) PURE;
    STDMETHOD(RestoreDisplayMode)(THIS) PURE;
    STDMETHOD(SetCooperativeLevel)(THIS_ HWND, DWORD) PURE;
    STDMETHOD(SetDisplayMode)(THIS_ DWORD, DWORD,DWORD, DWORD, DWORD) PURE;
    STDMETHOD(WaitForVerticalBlank)(THIS_ DWORD, HANDLE) PURE;
    STDMETHOD(GetAvailableVidMem)(THIS_ LPDDSCAPS, LPDWORD, LPDWORD) PURE;
    STDMETHOD(GetSurfaceFromDC)(THIS_ HDC, LPDIRECTDRAWSURFACE *) PURE;
    STDMETHOD(RestoreAllSurfaces)(THIS) PURE;
    STDMETHOD(TestCooperativeLevel)(THIS) PURE;
    STDMETHOD(GetDeviceIdentifier)(THIS_ LPDDDEVICEIDENTIFIER, DWORD ) PURE;
};

/*
 * IDirectDrawPalette
 */

#undef INTERFACE
#define INTERFACE IDirectDrawPalette
DECLARE_INTERFACE_(IDirectDrawPalette, IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS)  PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;

    /*** IDirectDrawPalette methods ***/
    STDMETHOD(GetCaps)(THIS_ LPDWORD) PURE;
    STDMETHOD(GetEntries)(THIS_ DWORD, DWORD, DWORD, LPPALETTEENTRY) PURE;
    STDMETHOD(SetEntries)(THIS_ DWORD, DWORD, DWORD, LPPALETTEENTRY) PURE;
};

/*
 * IDirectDrawClipper
 */

#undef INTERFACE
#define INTERFACE IDirectDrawClipper
DECLARE_INTERFACE_(IDirectDrawClipper, IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS)  PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;

    /*** IDirectDrawClipper methods ***/
    STDMETHOD(GetClipList)(THIS_ LPRECT, LPRGNDATA, LPDWORD) PURE;
    STDMETHOD(GetHWnd)(THIS_ HWND *) PURE;
    STDMETHOD(IsClipListChanged)(THIS_ LPBOOL) PURE;
    STDMETHOD(SetClipList)(THIS_ LPRGNDATA, DWORD) PURE;
    STDMETHOD(SetHWnd)(THIS_ DWORD, HWND) PURE;
};

/*
 * IDirectDrawSurface
 */

#undef INTERFACE
#define INTERFACE IDirectDrawSurface
DECLARE_INTERFACE_(IDirectDrawSurface, IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS)  PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;

    /*** IDirectDrawSurface methods ***/
    STDMETHOD(AddOverlayDirtyRect)(THIS_ LPRECT) PURE;
    STDMETHOD(Blt)(THIS_ LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPDDBLTFX) PURE;
    STDMETHOD(EnumAttachedSurfaces)(THIS_ LPVOID, LPDDENUMSURFACESCALLBACK) PURE;
    STDMETHOD(EnumOverlayZOrders)(THIS_ DWORD, LPVOID, LPDDENUMSURFACESCALLBACK) PURE;
    STDMETHOD(Flip)(THIS_ LPDIRECTDRAWSURFACE, DWORD) PURE;
    STDMETHOD(GetBltStatus)(THIS_ DWORD) PURE;
    STDMETHOD(GetCaps)(THIS_ LPDDSCAPS) PURE;
    STDMETHOD(GetClipper)(THIS_ LPDIRECTDRAWCLIPPER *) PURE;
    STDMETHOD(GetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
    STDMETHOD(GetDC)(THIS_ HDC *) PURE;
    STDMETHOD(GetFlipStatus)(THIS_ DWORD) PURE;
    STDMETHOD(GetOverlayPosition)(THIS_ LPLONG, LPLONG) PURE;
    STDMETHOD(GetPalette)(THIS_ LPDIRECTDRAWPALETTE *) PURE;
    STDMETHOD(GetPixelFormat)(THIS_ LPDDPIXELFORMAT) PURE;
    STDMETHOD(GetSurfaceDesc)(THIS_ LPDDSURFACEDESC) PURE;
    STDMETHOD(IsLost)(THIS) PURE;
    STDMETHOD(Lock)(THIS_ LPRECT, LPDDSURFACEDESC, DWORD, HANDLE) PURE;
    STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
    STDMETHOD(Restore)(THIS) PURE;
    STDMETHOD(SetClipper)(THIS_ LPDIRECTDRAWCLIPPER) PURE;
    STDMETHOD(SetColorKey)(THIS_ DWORD, LPDDCOLORKEY) PURE;
    STDMETHOD(SetOverlayPosition)(THIS_ LONG, LONG ) PURE;
    STDMETHOD(SetPalette)(THIS_ LPDIRECTDRAWPALETTE) PURE;
    STDMETHOD(Unlock)(THIS_ LPRECT) PURE;
    STDMETHOD(UpdateOverlay)(THIS_ LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPDDOVERLAYFX) PURE;
    STDMETHOD(UpdateOverlayZOrder)(THIS_ DWORD, LPDIRECTDRAWSURFACE) PURE;
    STDMETHOD(GetDDInterface)(THIS_ LPDIRECTDRAW *) PURE;
    STDMETHOD(AlphaBlt)(THIS_ LPRECT, LPDIRECTDRAWSURFACE, LPRECT, DWORD, LPDDALPHABLTFX) PURE;
};

/*
 * IDirectDrawColorControl
 */

#undef INTERFACE
#define INTERFACE IDirectDrawColorControl
DECLARE_INTERFACE_(IDirectDrawColorControl, IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS)  PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;

    /*** IDirectDrawColorControl methods ***/
    STDMETHOD(GetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
    STDMETHOD(SetColorControls)(THIS_ LPDDCOLORCONTROL) PURE;
};

/*
 * IDirectDrawGammaControl
 */

#undef INTERFACE
#define INTERFACE IDirectDrawGammaControl
DECLARE_INTERFACE_(IDirectDrawGammaControl, IUnknown)
{
    /*** IUnknown methods ***/
    STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
    STDMETHOD_(ULONG,AddRef)(THIS)  PURE;
    STDMETHOD_(ULONG,Release)(THIS) PURE;

    /*** IDirectDrawColorControl methods ***/
    STDMETHOD(GetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
    STDMETHOD(SetGammaRamp)(THIS_ DWORD, LPDDGAMMARAMP) PURE;
};

/*
 * DirectDraw Macros
 */

#ifndef MAKEFOURCC
    #define MAKEFOURCC(ch0, ch1, ch2, ch3)                                \
                ((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) |         \
                ((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
#endif //defined(MAKEFOURCC)

/*
 * Direct Draw Capability Flags
 */

/*
 * Surface Capability Flags
 */

#define DDSCAPS_ALPHA				    0x00000001
#define DDSCAPS_BACKBUFFER			    0x00000002
#define DDSCAPS_FLIP				    0x00000004
#define DDSCAPS_FRONTBUFFER			    0x00000008
#define DDSCAPS_OVERLAY				    0x00000010
#define DDSCAPS_PALETTE				    0x00000020
#define DDSCAPS_PRIMARYSURFACE		    0x00000040
#define DDSCAPS_SYSTEMMEMORY		    0x00000080
#define DDSCAPS_VIDEOMEMORY			    0x00000100
#define DDSCAPS_WRITEONLY			    0x00000200
#define DDSCAPS_READONLY                0x00000800
#define DDSCAPS_NOTUSERLOCKABLE         0x00002000
#define DDSCAPS_DYNAMIC                 0x00004000

#define DDSCAPS_VALID                   (DDSCAPS_ALPHA				 | \
                                         DDSCAPS_BACKBUFFER			 | \
                                         DDSCAPS_FLIP				 | \
                                         DDSCAPS_FRONTBUFFER		 | \
                                         DDSCAPS_OVERLAY			 | \
                                         DDSCAPS_PALETTE			 | \
                                         DDSCAPS_PRIMARYSURFACE		 | \
                                         DDSCAPS_SYSTEMMEMORY		 | \
                                         DDSCAPS_VIDEOMEMORY		 | \
                                         DDSCAPS_WRITEONLY			 | \
                                         DDSCAPS_READONLY            | \
                                         DDSCAPS_NOTUSERLOCKABLE     | \
                                         DDSCAPS_DYNAMIC)

/*
 * Palette Capability Flags
 */

#define DDPCAPS_PRIMARYSURFACE	0x00000010
#define DDPCAPS_ALPHA			0x00000400

#define DDPCAPS_VALID           (DDPCAPS_PRIMARYSURFACE | \
                                 DDPCAPS_ALPHA)

/*
 * DirectDraw Capability Flags
 */

/*
 * General hardware blitting capabilities (For DDCAPS dwBltCaps field)
 */

#define DDBLTCAPS_READSYSMEM            0x00000001
#define DDBLTCAPS_WRITESYSMEM           0x00000002
#define DDBLTCAPS_FOURCCTORGB           0x00000004
#define DDBLTCAPS_COPYFOURCC            0x00000008
#define DDBLTCAPS_FILLFOURCC            0x00000010

#define DDBLTCAPS_VALID                 (DDBLTCAPS_READSYSMEM  | \
                                         DDBLTCAPS_WRITESYSMEM | \
                                         DDBLTCAPS_FOURCCTORGB | \
                                         DDBLTCAPS_COPYFOURCC  | \
                                         DDBLTCAPS_FILLFOURCC)

/*
 * Hardware color key blitting capabilities (For DDCAPS dwCKeyCaps field)
 */

#define DDCKEYCAPS_DESTBLT              0x00000001
#define DDCKEYCAPS_DESTBLTCLRSPACE      0x00000002
#define DDCKEYCAPS_DESTBLTCLRSPACEYUV   0x00000004
#define DDCKEYCAPS_SRCBLT               0x00000200
#define DDCKEYCAPS_SRCBLTCLRSPACE       0x00000400
#define DDCKEYCAPS_SRCBLTCLRSPACEYUV    0x00000800
#define DDCKEYCAPS_BOTHBLT              0x00001000

#define DDCKEYCAPS_VALID                (DDCKEYCAPS_DESTBLT            | \
                                         DDCKEYCAPS_DESTBLTCLRSPACE    | \
                                         DDCKEYCAPS_DESTBLTCLRSPACEYUV | \
                                         DDCKEYCAPS_SRCBLT             | \
                                         DDCKEYCAPS_SRCBLTCLRSPACE     | \
                                         DDCKEYCAPS_SRCBLTCLRSPACEYUV  | \
                                         DDCKEYCAPS_BOTHBLT)

/*
 * Hardware alpha blitting capabilities (For DDCAPS dwAlphaCaps field)
 */

#define DDALPHACAPS_ALPHAPIXELS         0x00000001
#define DDALPHACAPS_ALPHASURFACE        0x00000002
#define DDALPHACAPS_ALPHAPALETTE        0x00000004
#define DDALPHACAPS_ALPHACONSTANT       0x00000008
#define DDALPHACAPS_ARGBSCALE           0x00000010
#define DDALPHACAPS_SATURATE            0x00000020
#define DDALPHACAPS_PREMULT             0x00000040
#define DDALPHACAPS_NONPREMULT          0x00000080
#define DDALPHACAPS_ALPHAFILL           0x00000800
#define DDALPHACAPS_ALPHANEG            0x00000100

#define DDALPHACAPS_VALID               (DDALPHACAPS_ALPHAPIXELS   | \
                                         DDALPHACAPS_ALPHASURFACE  | \
                                         DDALPHACAPS_ALPHAPALETTE  | \
                                         DDALPHACAPS_ALPHACONSTANT | \
                                         DDALPHACAPS_ARGBSCALE     | \
                                         DDALPHACAPS_SATURATE      | \
                                         DDALPHACAPS_PREMULT       | \
                                         DDALPHACAPS_NONPREMULT    | \
                                         DDALPHACAPS_ALPHAFILL     | \
                                         DDALPHACAPS_ALPHANEG)

/*
 * Overlay capabilities ( For DDCAPS dwOverlayCaps field)
 */

#define DDOVERLAYCAPS_FLIP                  0x00000001

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -