使用directdraw显示一张位图的问题!
写了一小段代码,如下,可是显示不出来,不知道错在哪里,小弟初学,还请各位大虾多指教.
HRESULT hRet;
LPDIRECTDRAW pDD;
hRet=DirectDrawCreate(NULL,&pDD,NULL); //创建一个directdraw对象
if(hRet!=DD_OK)
return;
//设置窗口模式
hRet=pDD->SetCooperativeLevel(m_hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
if(hRet!=DD_OK)
return;
//创建页面
DDSURFACEDESC ddsd;
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;
ddsd.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
ddsd.dwWidth = 400;
ddsd.dwHeight = 400;
LPDIRECTDRAWSURFACE lpDDSPrimary;
hRet=pDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
if(hRet!=DD_OK)
return;
HDC hdcImage;
HDC hdc=::GetDC(m_hWnd);
if(hdc=NULL)
return;
BITMAP bm;
HBITMAP hBm;
hBm = (HBITMAP) LoadImage (AfxGetInstanceHandle(),"res\\Cards.bmp", IMAGE_BITMAP, 100, 100, LR_LOADFROMFILE);
if(hBm==NULL||lpDDSPrimary==NULL)
return;
lpDDSPrimary->Restore();
//把位图载入到MemoryDC
hdcImage =::CreateCompatibleDC(hdc);
SelectObject(hdcImage,hBm);
GetObject(hBm,sizeof(BITMAP), &bm);
if(!hdcImage)
return;
lpDDSPrimary->GetSurfaceDesc(&ddsd);
lpDDSPrimary->GetDC(&hdc);
StretchBlt(hdc,0,0,ddsd.dwWidth,ddsd.dwHeight,hdcImage,100,100,bm.bmWidth,bm.bmHeight,SRCCOPY);
lpDDSPrimary->ReleaseDC(hdc);
DeleteDC(hdcImage);