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);