123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- //------------------------------------------------------------------------------
- // File: VideoCtl.h
- //
- // Desc: DirectShow base classes.
- //
- // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------------------------
- #ifndef __VIDEOCTL__
- #define __VIDEOCTL__
- // These help with property page implementations. The first can be used to
- // load any string from a resource file. The buffer to load into is passed
- // as an input parameter. The same buffer is the return value if the string
- // was found otherwise it returns TEXT(""). The GetDialogSize is passed the
- // resource ID of a dialog box and returns the size of it in screen pixels
- #define STR_MAX_LENGTH 256
- LPTSTR WINAPI StringFromResource(__out_ecount(STR_MAX_LENGTH) LPTSTR pBuffer, int iResourceID);
- #ifdef UNICODE
- #define WideStringFromResource StringFromResource
- LPSTR WINAPI StringFromResource(__out_ecount(STR_MAX_LENGTH) LPSTR pBuffer, int iResourceID);
- #else
- LPWSTR WINAPI WideStringFromResource(__out_ecount(STR_MAX_LENGTH) LPWSTR pBuffer, int iResourceID);
- #endif
- BOOL WINAPI GetDialogSize(int iResourceID, // Dialog box resource identifier
- DLGPROC pDlgProc, // Pointer to dialog procedure
- LPARAM lParam, // Any user data wanted in pDlgProc
- __out SIZE *pResult);// Returns the size of dialog box
- // Class that aggregates an IDirectDraw interface
- class CAggDirectDraw : public IDirectDraw, public CUnknown
- {
- protected:
- LPDIRECTDRAW m_pDirectDraw;
- public:
- DECLARE_IUNKNOWN
- STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,__deref_out void **ppv);
- // Constructor and destructor
- CAggDirectDraw(__in_opt LPCTSTR pName,__inout_opt LPUNKNOWN pUnk) :
- CUnknown(pName,pUnk),
- m_pDirectDraw(NULL) { };
- virtual CAggDirectDraw::~CAggDirectDraw() { };
- // Set the object we should be aggregating
- void SetDirectDraw(__inout LPDIRECTDRAW pDirectDraw) {
- m_pDirectDraw = pDirectDraw;
- }
- // IDirectDraw methods
- STDMETHODIMP Compact();
- STDMETHODIMP CreateClipper(DWORD dwFlags,__deref_out LPDIRECTDRAWCLIPPER *lplpDDClipper,__inout_opt IUnknown *pUnkOuter);
- STDMETHODIMP CreatePalette(DWORD dwFlags,__in LPPALETTEENTRY lpColorTable,__deref_out LPDIRECTDRAWPALETTE *lplpDDPalette,__inout_opt IUnknown *pUnkOuter);
- STDMETHODIMP CreateSurface(__in LPDDSURFACEDESC lpDDSurfaceDesc,__deref_out LPDIRECTDRAWSURFACE *lplpDDSurface,__inout_opt IUnknown *pUnkOuter);
- STDMETHODIMP DuplicateSurface(__in LPDIRECTDRAWSURFACE lpDDSurface,__deref_out LPDIRECTDRAWSURFACE *lplpDupDDSurface);
- STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount,__in LPDDSURFACEDESC lplpDDSurfaceDescList,__in LPVOID lpContext,__in LPDDENUMMODESCALLBACK lpEnumCallback);
- STDMETHODIMP EnumSurfaces(DWORD dwFlags,__in LPDDSURFACEDESC lpDDSD,__in LPVOID lpContext,__in LPDDENUMSURFACESCALLBACK lpEnumCallback);
- STDMETHODIMP FlipToGDISurface();
- STDMETHODIMP GetCaps(__out LPDDCAPS lpDDDriverCaps,__out LPDDCAPS lpDDHELCaps);
- STDMETHODIMP GetDisplayMode(__out LPDDSURFACEDESC lpDDSurfaceDesc);
- STDMETHODIMP GetFourCCCodes(__inout LPDWORD lpNumCodes,__out_ecount(*lpNumCodes) LPDWORD lpCodes);
- STDMETHODIMP GetGDISurface(__deref_out LPDIRECTDRAWSURFACE *lplpGDIDDSurface);
- STDMETHODIMP GetMonitorFrequency(__out LPDWORD lpdwFrequency);
- STDMETHODIMP GetScanLine(__out LPDWORD lpdwScanLine);
- STDMETHODIMP GetVerticalBlankStatus(__out LPBOOL lpblsInVB);
- STDMETHODIMP Initialize(__in GUID *lpGUID);
- STDMETHODIMP RestoreDisplayMode();
- STDMETHODIMP SetCooperativeLevel(HWND hWnd,DWORD dwFlags);
- STDMETHODIMP SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp);
- STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent);
- };
- // Class that aggregates an IDirectDrawSurface interface
- class CAggDrawSurface : public IDirectDrawSurface, public CUnknown
- {
- protected:
- LPDIRECTDRAWSURFACE m_pDirectDrawSurface;
- public:
- DECLARE_IUNKNOWN
- STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,__deref_out void **ppv);
- // Constructor and destructor
- CAggDrawSurface(__in_opt LPCTSTR pName,__inout_opt LPUNKNOWN pUnk) :
- CUnknown(pName,pUnk),
- m_pDirectDrawSurface(NULL) { };
- virtual ~CAggDrawSurface() { };
- // Set the object we should be aggregating
- void SetDirectDrawSurface(__inout LPDIRECTDRAWSURFACE pDirectDrawSurface) {
- m_pDirectDrawSurface = pDirectDrawSurface;
- }
- // IDirectDrawSurface methods
- STDMETHODIMP AddAttachedSurface(__in LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
- STDMETHODIMP AddOverlayDirtyRect(__in LPRECT lpRect);
- STDMETHODIMP Blt(__in LPRECT lpDestRect,__in LPDIRECTDRAWSURFACE lpDDSrcSurface,__in LPRECT lpSrcRect,DWORD dwFlags,__in LPDDBLTFX lpDDBltFx);
- STDMETHODIMP BltBatch(__in_ecount(dwCount) LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags);
- STDMETHODIMP BltFast(DWORD dwX,DWORD dwY,__in LPDIRECTDRAWSURFACE lpDDSrcSurface,__in LPRECT lpSrcRect,DWORD dwTrans);
- STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags,__in LPDIRECTDRAWSURFACE lpDDSAttachedSurface);
- STDMETHODIMP EnumAttachedSurfaces(__in LPVOID lpContext,__in LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback);
- STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags,__in LPVOID lpContext,__in LPDDENUMSURFACESCALLBACK lpfnCallback);
- STDMETHODIMP Flip(__in LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags);
- STDMETHODIMP GetAttachedSurface(__in LPDDSCAPS lpDDSCaps,__deref_out LPDIRECTDRAWSURFACE *lplpDDAttachedSurface);
- STDMETHODIMP GetBltStatus(DWORD dwFlags);
- STDMETHODIMP GetCaps(__out LPDDSCAPS lpDDSCaps);
- STDMETHODIMP GetClipper(__deref_out LPDIRECTDRAWCLIPPER *lplpDDClipper);
- STDMETHODIMP GetColorKey(DWORD dwFlags,__out LPDDCOLORKEY lpDDColorKey);
- STDMETHODIMP GetDC(__out HDC *lphDC);
- STDMETHODIMP GetFlipStatus(DWORD dwFlags);
- STDMETHODIMP GetOverlayPosition(__out LPLONG lpdwX,__out LPLONG lpdwY);
- STDMETHODIMP GetPalette(__deref_out LPDIRECTDRAWPALETTE *lplpDDPalette);
- STDMETHODIMP GetPixelFormat(__out LPDDPIXELFORMAT lpDDPixelFormat);
- STDMETHODIMP GetSurfaceDesc(__out LPDDSURFACEDESC lpDDSurfaceDesc);
- STDMETHODIMP Initialize(__in LPDIRECTDRAW lpDD,__in LPDDSURFACEDESC lpDDSurfaceDesc);
- STDMETHODIMP IsLost();
- STDMETHODIMP Lock(__in LPRECT lpDestRect,__inout LPDDSURFACEDESC lpDDSurfaceDesc,DWORD dwFlags,HANDLE hEvent);
- STDMETHODIMP ReleaseDC(HDC hDC);
- STDMETHODIMP Restore();
- STDMETHODIMP SetClipper(__in LPDIRECTDRAWCLIPPER lpDDClipper);
- STDMETHODIMP SetColorKey(DWORD dwFlags,__in LPDDCOLORKEY lpDDColorKey);
- STDMETHODIMP SetOverlayPosition(LONG dwX,LONG dwY);
- STDMETHODIMP SetPalette(__in LPDIRECTDRAWPALETTE lpDDPalette);
- STDMETHODIMP Unlock(__in LPVOID lpSurfaceData);
- STDMETHODIMP UpdateOverlay(__in LPRECT lpSrcRect,__in LPDIRECTDRAWSURFACE lpDDDestSurface,__in LPRECT lpDestRect,DWORD dwFlags,__in LPDDOVERLAYFX lpDDOverlayFX);
- STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags);
- STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags,__in LPDIRECTDRAWSURFACE lpDDSReference);
- };
- class CLoadDirectDraw
- {
- LPDIRECTDRAW m_pDirectDraw; // The DirectDraw driver instance
- HINSTANCE m_hDirectDraw; // Handle to the loaded library
- public:
- CLoadDirectDraw();
- ~CLoadDirectDraw();
- HRESULT LoadDirectDraw(__in LPSTR szDevice);
- void ReleaseDirectDraw();
- HRESULT IsDirectDrawLoaded();
- LPDIRECTDRAW GetDirectDraw();
- BOOL IsDirectDrawVersion1();
- };
- #endif // __VIDEOCTL__
|