59 if (dwStringLength++) {
60 MultiByteToWideChar(CP_ACP,0,szBuffer,dwStringLength,pBuffer,
STR_MAX_LENGTH);
81 hwnd = CreateDialogParam(
g_hInst,
82 MAKEINTRESOURCE(iResourceID),
90 GetWindowRect(hwnd, &rc);
91 pResult->cx = rc.right - rc.left;
92 pResult->cy = rc.bottom - rc.top;
113 if (
riid == IID_IDirectDraw) {
131 return m_pDirectDraw->CreateClipper(dwFlags,lplpDDClipper,pUnkOuter);
136 __in LPPALETTEENTRY lpColorTable,
137 __deref_out LPDIRECTDRAWPALETTE *lplpDDPalette,
138 __inout_opt IUnknown *pUnkOuter)
141 return m_pDirectDraw->CreatePalette(dwFlags,lpColorTable,lplpDDPalette,pUnkOuter);
146 __deref_out LPDIRECTDRAWSURFACE *lplpDDSurface,
147 __inout_opt IUnknown *pUnkOuter)
150 return m_pDirectDraw->CreateSurface(lpDDSurfaceDesc,lplpDDSurface,pUnkOuter);
155 __deref_out LPDIRECTDRAWSURFACE *lplpDupDDSurface)
158 return m_pDirectDraw->DuplicateSurface(lpDDSurface,lplpDupDDSurface);
163 __in LPDDSURFACEDESC lplpDDSurfaceDescList,
164 __in LPVOID lpContext,
165 __in LPDDENUMMODESCALLBACK lpEnumCallback)
168 return m_pDirectDraw->EnumDisplayModes(dwSurfaceDescCount,lplpDDSurfaceDescList,lpContext,lpEnumCallback);
173 __in LPDDSURFACEDESC lpDDSD,
174 __in LPVOID lpContext,
175 __in LPDDENUMSURFACESCALLBACK lpEnumCallback)
178 return m_pDirectDraw->EnumSurfaces(dwFlags,lpDDSD,lpContext,lpEnumCallback);
262 return m_pDirectDraw->SetDisplayMode(dwWidth,dwHeight,dwBpp);
287 if (
riid == IID_IDirectDrawSurface) {
310 __in LPDIRECTDRAWSURFACE lpDDSrcSurface,
311 __in LPRECT lpSrcRect,
313 __in LPDDBLTFX lpDDBltFx)
328 __in LPDIRECTDRAWSURFACE lpDDSrcSurface,
329 __in LPRECT lpSrcRect,
338 __in LPDIRECTDRAWSURFACE lpDDSAttachedSurface)
346 __in LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
354 __in LPVOID lpContext,
355 __in LPDDENUMSURFACESCALLBACK lpfnCallback)
370 __deref_out LPDIRECTDRAWSURFACE *lplpDDAttachedSurface)
482 __inout LPDDSURFACEDESC lpDDSurfaceDesc,
541 __in LPDIRECTDRAWSURFACE lpDDDestSurface,
542 __in LPRECT lpDestRect,
544 __in LPDDOVERLAYFX lpDDOverlayFX)
547 return m_pDirectDrawSurface->UpdateOverlay(lpSrcRect,lpDDDestSurface,lpDestRect,dwFlags,lpDDOverlayFX);
585 NOTE(
"Unloading library");
586 FreeLibrary(m_hDirectDraw);
605 LPDIRECTDRAWENUMERATEEXA pDrawEnumEx;
606 HRESULT
hr = NOERROR;
608 NOTE(
"Entering DoLoadDirectDraw");
613 NOTE(
"Already loaded");
622 UINT ErrorMode = SetErrorMode(SEM_NOOPENFILEERRORBOX);
623 m_hDirectDraw = LoadLibrary(TEXT(
"DDRAW.DLL"));
624 SetErrorMode(ErrorMode);
626 if (m_hDirectDraw ==
NULL) {
629 return E_NOINTERFACE;
635 pDrawCreate = (
PDRAWCREATE)GetProcAddress(m_hDirectDraw,
"DirectDrawCreate");
637 pDrawEnum = (
PDRAWENUM)GetProcAddress(m_hDirectDraw,
"DirectDrawEnumerateA");
638 pDrawEnumEx = (LPDIRECTDRAWENUMERATEEXA)GetProcAddress(m_hDirectDraw,
639 "DirectDrawEnumerateExA");
642 if (pDrawCreate ==
NULL || pDrawEnum ==
NULL) {
644 pDrawCreate, pDrawEnum));
645 NOTE(
"No entry point");
647 return E_NOINTERFACE;
651 szDevice ? szDevice :
"<NULL>"));
662 if (m_pDirectDraw ==
NULL) {
666 return E_NOINTERFACE;
680 NOTE(
"Releasing DirectDraw driver");
685 NOTE(
"Releasing instance");
686 m_pDirectDraw->Release();
687 m_pDirectDraw =
NULL;
697 NOTE(
"Entering IsDirectDrawLoaded");
699 if (m_pDirectDraw ==
NULL) {
700 NOTE(
"DirectDraw not loaded");
711 NOTE(
"Entering GetDirectDraw");
713 if (m_pDirectDraw ==
NULL) {
714 NOTE(
"No DirectDraw");
718 NOTE(
"Returning DirectDraw");
719 m_pDirectDraw->AddRef();
720 return m_pDirectDraw;
732 if (m_pDirectDraw ==
NULL)
735 IDirectDraw2 *p =
NULL;
736 HRESULT
hr = m_pDirectDraw->QueryInterface(IID_IDirectDraw2, (
void **)&p);
STDMETHODIMP GetColorKey(DWORD dwFlags, __out LPDDCOLORKEY lpDDColorKey)
STDMETHODIMP GetCaps(__out LPDDSCAPS lpDDSCaps)
STDMETHODIMP UpdateOverlayZOrder(DWORD dwFlags, __in LPDIRECTDRAWSURFACE lpDDSReference)
STDMETHODIMP EnumSurfaces(DWORD dwFlags, __in LPDDSURFACEDESC lpDDSD, __in LPVOID lpContext, __in LPDDENUMSURFACESCALLBACK lpEnumCallback)
STDMETHODIMP Initialize(__in GUID *lpGUID)
DECLARE_IUNKNOWN STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv)
STDMETHODIMP GetClipper(__deref_out LPDIRECTDRAWCLIPPER *lplpDDClipper)
STDMETHODIMP EnumOverlayZOrders(DWORD dwFlags, __in LPVOID lpContext, __in LPDDENUMSURFACESCALLBACK lpfnCallback)
STDMETHODIMP Blt(__in LPRECT lpDestRect, __in LPDIRECTDRAWSURFACE lpDDSrcSurface, __in LPRECT lpSrcRect, DWORD dwFlags, __in LPDDBLTFX lpDDBltFx)
STDMETHODIMP EnumAttachedSurfaces(__in LPVOID lpContext, __in LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
STDMETHODIMP SetOverlayPosition(LONG dwX, LONG dwY)
BOOL IsDirectDrawVersion1()
STDMETHODIMP AddOverlayDirtyRect(__in LPRECT lpRect)
STDMETHODIMP GetScanLine(__out LPDWORD lpdwScanLine)
STDMETHODIMP RestoreDisplayMode()
STDMETHODIMP AddAttachedSurface(__in LPDIRECTDRAWSURFACE lpDDSAttachedSurface)
STDMETHODIMP GetDC(__out HDC *lphDC)
STDMETHODIMP SetPalette(__in LPDIRECTDRAWPALETTE lpDDPalette)
STDMETHODIMP WaitForVerticalBlank(DWORD dwFlags, HANDLE hEvent)
STDAPI GetInterface(LPUNKNOWN pUnk, __out void **ppv)
STDMETHODIMP CreatePalette(DWORD dwFlags, __in LPPALETTEENTRY lpColorTable, __deref_out LPDIRECTDRAWPALETTE *lplpDDPalette, __inout_opt IUnknown *pUnkOuter)
STDMETHODIMP GetFourCCCodes(__inout LPDWORD lpNumCodes, __out_ecount(*lpNumCodes) LPDWORD lpCodes)
STDMETHODIMP SetClipper(__in LPDIRECTDRAWCLIPPER lpDDClipper)
STDMETHODIMP GetAttachedSurface(__in LPDDSCAPS lpDDSCaps, __deref_out LPDIRECTDRAWSURFACE *lplpDDAttachedSurface)
STDMETHODIMP GetVerticalBlankStatus(__out LPBOOL lpblsInVB)
STDMETHODIMP GetPixelFormat(__out LPDDPIXELFORMAT lpDDPixelFormat)
STDMETHODIMP BltBatch(__in_ecount(dwCount) LPDDBLTBATCH lpDDBltBatch, DWORD dwCount, DWORD dwFlags)
STDMETHODIMP DeleteAttachedSurface(DWORD dwFlags, __in LPDIRECTDRAWSURFACE lpDDSAttachedSurface)
DECLARE_IUNKNOWN STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv)
STDMETHODIMP SetCooperativeLevel(HWND hWnd, DWORD dwFlags)
STDMETHODIMP CreateSurface(__in LPDDSURFACEDESC lpDDSurfaceDesc, __deref_out LPDIRECTDRAWSURFACE *lplpDDSurface, __inout_opt IUnknown *pUnkOuter)
IDirectDraw * DirectDrawCreateFromDevice(__in_opt LPSTR szDevice, PDRAWCREATE DirectDrawCreateP, PDRAWENUM DirectDrawEnumerateP)
HRESULT(* PDRAWCREATE)(IID *, LPDIRECTDRAW *, LPUNKNOWN)
STDMETHODIMP GetFlipStatus(DWORD dwFlags)
STDMETHODIMP GetBltStatus(DWORD dwFlags)
STDMETHODIMP GetOverlayPosition(__out LPLONG lpdwX, __out LPLONG lpdwY)
HRESULT(* PDRAWENUM)(LPDDENUMCALLBACKA, LPVOID)
STDMETHODIMP GetSurfaceDesc(__out LPDDSURFACEDESC lpDDSurfaceDesc)
STDMETHODIMP UpdateOverlayDisplay(DWORD dwFlags)
STDMETHODIMP DuplicateSurface(__in LPDIRECTDRAWSURFACE lpDDSurface, __deref_out LPDIRECTDRAWSURFACE *lplpDupDDSurface)
STDMETHODIMP GetPalette(__deref_out LPDIRECTDRAWPALETTE *lplpDDPalette)
STDMETHODIMP CreateClipper(DWORD dwFlags, __deref_out LPDIRECTDRAWCLIPPER *lplpDDClipper, __inout_opt IUnknown *pUnkOuter)
STDMETHODIMP UpdateOverlay(__in LPRECT lpSrcRect, __in LPDIRECTDRAWSURFACE lpDDDestSurface, __in LPRECT lpDestRect, DWORD dwFlags, __in LPDDOVERLAYFX lpDDOverlayFX)
HRESULT LoadDirectDraw(__in LPSTR szDevice)
STDMETHODIMP ReleaseDC(HDC hDC)
LPDIRECTDRAWSURFACE m_pDirectDrawSurface
LPTSTR WINAPI StringFromResource(__out_ecount(256) LPTSTR pBuffer, int iResourceID)
HRESULT IsDirectDrawLoaded()
LPDIRECTDRAW m_pDirectDraw
STDMETHODIMP GetMonitorFrequency(__out LPDWORD lpdwFrequency)
STDMETHODIMP BltFast(DWORD dwX, DWORD dwY, __in LPDIRECTDRAWSURFACE lpDDSrcSurface, __in LPRECT lpSrcRect, DWORD dwTrans)
IDirectDraw * DirectDrawCreateFromDeviceEx(__in_opt LPSTR szDevice, PDRAWCREATE DirectDrawCreateP, LPDIRECTDRAWENUMERATEEXA DirectDrawEnumerateExP)
STDMETHODIMP SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBpp)
STDMETHODIMP NonDelegatingQueryInterface(REFIID, __deref_out void **)
STDMETHODIMP SetColorKey(DWORD dwFlags, __in LPDDCOLORKEY lpDDColorKey)
STDMETHODIMP Flip(__in LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride, DWORD dwFlags)
STDMETHODIMP Initialize(__in LPDIRECTDRAW lpDD, __in LPDDSURFACEDESC lpDDSurfaceDesc)
STDMETHODIMP FlipToGDISurface()
LPDIRECTDRAW GetDirectDraw()
BOOL WINAPI GetDialogSize(int iResourceID, DLGPROC pDlgProc, LPARAM lParam, __out SIZE *pResult)
STDMETHODIMP EnumDisplayModes(DWORD dwSurfaceDescCount, __in LPDDSURFACEDESC lplpDDSurfaceDescList, __in LPVOID lpContext, __in LPDDENUMMODESCALLBACK lpEnumCallback)
STDMETHODIMP GetGDISurface(__deref_out LPDIRECTDRAWSURFACE *lplpGDIDDSurface)
STDMETHODIMP GetCaps(__out LPDDCAPS lpDDDriverCaps, __out LPDDCAPS lpDDHELCaps)
STDMETHODIMP Unlock(__in LPVOID lpSurfaceData)
STDMETHODIMP Lock(__in LPRECT lpDestRect, __inout LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent)
LPWSTR WINAPI WideStringFromResource(__out_ecount(256) LPWSTR pBuffer, int iResourceID)
STDMETHODIMP GetDisplayMode(__out LPDDSURFACEDESC lpDDSurfaceDesc)