00001
00002
00003
00004
00005
00006 #ifndef __VIDEOCTL__
00007 #define __VIDEOCTL__
00008
00009 #define STR_MAX_LENGTH 256
00010 TCHAR * WINAPI StringFromResource(TCHAR *pBuffer, int iResourceID);
00011
00012 #ifdef UNICODE
00013 #define WideStringFromResource StringFromResource
00014 char* WINAPI StringFromResource(char*pBuffer, int iResourceID);
00015 #else
00016 WCHAR * WINAPI WideStringFromResource(WCHAR *pBuffer, int iResourceID);
00017 #endif
00018
00019 BOOL WINAPI GetDialogSize(int iResourceID,
00020 DLGPROC pDlgProc,
00021 LPARAM lParam,
00022 SIZE *pResult);
00023
00024 class CAggDirectDraw : public IDirectDraw, public CUnknown
00025 {
00026 protected:
00027
00028 LPDIRECTDRAW m_pDirectDraw;
00029
00030 public:
00031
00032 DECLARE_IUNKNOWN
00033 STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv);
00034
00035
00036
00037 CAggDirectDraw(TCHAR *pName,LPUNKNOWN pUnk) :
00038 CUnknown(pName,pUnk),
00039 m_pDirectDraw(NULL) { };
00040
00041 virtual CAggDirectDraw::~CAggDirectDraw() { };
00042
00043
00044 void SetDirectDraw(LPDIRECTDRAW pDirectDraw) {
00045 m_pDirectDraw = pDirectDraw;
00046 }
00047
00048 STDMETHODIMP Compact();
00049 STDMETHODIMP CreateClipper(DWORD dwFlags,LPDIRECTDRAWCLIPPER *lplpDDClipper,IUnknown *pUnkOuter);
00050 STDMETHODIMP CreatePalette(DWORD dwFlags,LPPALETTEENTRY lpColorTable,LPDIRECTDRAWPALETTE *lplpDDPalette,IUnknown *pUnkOuter);
00051 STDMETHODIMP CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc,LPDIRECTDRAWSURFACE *lplpDDSurface,IUnknown *pUnkOuter);
00052 STDMETHODIMP DuplicateSurface(LPDIRECTDRAWSURFACE lpDDSurface,LPDIRECTDRAWSURFACE *lplpDupDDSurface);
00053 STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount,LPDDSURFACEDESC lplpDDSurfaceDescList,LPVOID lpContext,LPDDENUMMODESCALLBACK lpEnumCallback);
00054 STDMETHODIMP EnumSurfaces(DWORD dwFlags,LPDDSURFACEDESC lpDDSD,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumCallback);
00055 STDMETHODIMP FlipToGDISurface();
00056 STDMETHODIMP GetCaps(LPDDCAPS lpDDDriverCaps,LPDDCAPS lpDDHELCaps);
00057 STDMETHODIMP GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc);
00058 STDMETHODIMP GetFourCCCodes(LPDWORD lpNumCodes,LPDWORD lpCodes);
00059 STDMETHODIMP GetGDISurface(LPDIRECTDRAWSURFACE *lplpGDIDDSurface);
00060 STDMETHODIMP GetMonitorFrequency(LPDWORD lpdwFrequency);
00061 STDMETHODIMP GetScanLine(LPDWORD lpdwScanLine);
00062 STDMETHODIMP GetVerticalBlankStatus(LPBOOL lpblsInVB);
00063 STDMETHODIMP Initialize(GUID *lpGUID);
00064 STDMETHODIMP RestoreDisplayMode();
00065 STDMETHODIMP SetCooperativeLevel(HWND hWnd,DWORD dwFlags);
00066 STDMETHODIMP SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp);
00067 STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent);
00068 };
00069
00070 class CAggDrawSurface : public IDirectDrawSurface, public CUnknown
00071 {
00072 protected:
00073
00074 LPDIRECTDRAWSURFACE m_pDirectDrawSurface;
00075
00076 public:
00077
00078 DECLARE_IUNKNOWN
00079 STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,void **ppv);
00080
00081 CAggDrawSurface(TCHAR *pName,LPUNKNOWN pUnk) :
00082 CUnknown(pName,pUnk),
00083 m_pDirectDrawSurface(NULL) { };
00084
00085 virtual ~CAggDrawSurface() { };
00086
00087
00088 void SetDirectDrawSurface(LPDIRECTDRAWSURFACE pDirectDrawSurface) {
00089 m_pDirectDrawSurface = pDirectDrawSurface;
00090 }
00091
00092 STDMETHODIMP AddAttachedSurface(LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
00093 STDMETHODIMP AddOverlayDirtyRect(LPRECT lpRect);
00094 STDMETHODIMP Blt(LPRECT lpDestRect,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwFlags,LPDDBLTFX lpDDBltFx);
00095 STDMETHODIMP BltBatch(LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags);
00096 STDMETHODIMP BltFast(DWORD dwX,DWORD dwY,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwTrans);
00097 STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
00098 STDMETHODIMP EnumAttachedSurfaces(LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback);
00099 STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback);
00100 STDMETHODIMP Flip(LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags);
00101 STDMETHODIMP GetAttachedSurface(LPDDSCAPS lpDDSCaps,LPDIRECTDRAWSURFACE *lplpDDAttachedSurface);
00102 STDMETHODIMP GetBltStatus(DWORD dwFlags);
00103 STDMETHODIMP GetCaps(LPDDSCAPS lpDDSCaps);
00104 STDMETHODIMP GetClipper(LPDIRECTDRAWCLIPPER *lplpDDClipper);
00105 STDMETHODIMP GetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);
00106 STDMETHODIMP GetDC(HDC *lphDC);
00107 STDMETHODIMP GetFlipStatus(DWORD dwFlags);
00108 STDMETHODIMP GetOverlayPosition(LPLONG lpdwX,LPLONG lpdwY);
00109 STDMETHODIMP GetPalette(LPDIRECTDRAWPALETTE *lplpDDPalette);
00110 STDMETHODIMP GetPixelFormat(LPDDPIXELFORMAT lpDDPixelFormat);
00111 STDMETHODIMP GetSurfaceDesc(LPDDSURFACEDESC lpDDSurfaceDesc);
00112 STDMETHODIMP Initialize(LPDIRECTDRAW lpDD,LPDDSURFACEDESC lpDDSurfaceDesc);
00113 STDMETHODIMP IsLost();
00114 STDMETHODIMP Lock(LPRECT lpDestRect,LPDDSURFACEDESC lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent);
00115 STDMETHODIMP ReleaseDC(HDC hDC);
00116 STDMETHODIMP Restore();
00117 STDMETHODIMP SetClipper(LPDIRECTDRAWCLIPPER lpDDClipper);
00118 STDMETHODIMP SetColorKey(DWORD dwFlags,LPDDCOLORKEY lpDDColorKey);
00119 STDMETHODIMP SetOverlayPosition(LONG dwX,LONG dwY);
00120 STDMETHODIMP SetPalette(LPDIRECTDRAWPALETTE lpDDPalette);
00121 STDMETHODIMP Unlock(LPVOID lpSurfaceData);
00122 STDMETHODIMP UpdateOverlay(LPRECT lpSrcRect,LPDIRECTDRAWSURFACE lpDDDestSurface,LPRECT lpDestRect,DWORD dwFlags,LPDDOVERLAYFX lpDDOverlayFX);
00123 STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags);
00124 STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSReference);
00125 };
00126
00127 typedef DWORD (WINAPI *PGETFILEVERSIONINFOSIZE)(LPTSTR,LPDWORD);
00128 typedef BOOL (WINAPI *PGETFILEVERSIONINFO)(LPTSTR,DWORD,DWORD,LPVOID);
00129 typedef BOOL (WINAPI *PVERQUERYVALUE)(LPVOID,LPTSTR,LPVOID,PUINT);
00130
00131 class CLoadDirectDraw
00132 {
00133 LPDIRECTDRAW m_pDirectDraw;
00134 HINSTANCE m_hDirectDraw;
00135
00136 public:
00137
00138 CLoadDirectDraw();
00139 ~CLoadDirectDraw();
00140
00141 HRESULT LoadDirectDraw(LPSTR szDevice);
00142 void ReleaseDirectDraw();
00143 HRESULT IsDirectDrawLoaded();
00144 LPDIRECTDRAW GetDirectDraw();
00145 BOOL IsDirectDrawVersion1();
00146 };
00147
00148 #endif
00149