使用directdraw显示一张位图的问题!

jieleiping 2007-06-06 08:36:13
写了一小段代码,如下,可是显示不出来,不知道错在哪里,小弟初学,还请各位大虾多指教.

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);
...全文
260 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jieleiping 2007-06-09
  • 打赏
  • 举报
回复
为什么没有高手来指导一下啊
systemthink 2007-06-06
  • 打赏
  • 举报
回复
關注...

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧