Original Post
I have the following function:
HRESULT Menu::InitDD(HWND hWnd, bool bWindowed)
{
CoInitialize(NULL);
CoCreateInstance(CLSID_DirectDraw, NULL, CLSCTX_ALL, IID_IDirectDraw7, (void**)&lpdd7);
if(FAILED(lpdd7->Initialize(NULL)))
return E_FAIL;
if(bWindowed){
if(FAILED(lpdd7->SetCooperativeLevel(hWnd, DDSCL_ALLOWREBOOT | DDSCL_NORMAL)))
return E_FAIL;
}
else{
if(FAILED(lpdd7->SetCooperativeLevel(hWnd, DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN)))
return E_FAIL;
}
DDSURFACEDESC2 ddsd;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.dwBackBufferCount=1;
ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE |
DDSCAPS_COMPLEX |
DDSCAPS_FLIP |
DDSCAPS_VIDEOMEMORY;
if(FAILED(lpdd7->CreateSurface(&ddsd, &lpddsPrimary, NULL)))
return E_FAIL;
ddsd.ddsCaps.dwCaps=DDSCAPS_BACKBUFFER;
if(FAILED(lpddsPrimary->GetAttachedSurface(&ddsd.ddsCaps, &lpddsBack)))
return E_FAIL;
if(FAILED(lpddsPrimary->AddAttachedSurface(lpddsOffscreen)))
return E_FAIL;
ZeroMemory(&ddsd, sizeof(ddsd));
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_CKSRCBLT;
ddsd.dwWidth=30;
ddsd.dwHeight=30;
ddsd.ddckCKSrcBlt.dwColorSpaceLowValue=0;
ddsd.ddckCKSrcBlt.dwColorSpaceHighValue=0;
ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
if(FAILED(lpdd7->CreateSurface(&ddsd, &lpddsMouse, NULL)))
return E_FAIL;
return S_OK;
}
when it executes (with bWindowed set to TRUE), lpdd7->CreateSurface returns DDERR_NOEXCLUSIVEMODE. how can i alter my code so it works in windowed mode? Also, AddAttachedSurface returns an error. Any ideas?
Edited by - wingman20 on April 16, 2001 7:11:35 PM