我在VC6.0中创建了一个单文档 想把一个位图导入 就在OnDraw下写了如下代码 但是编译运行后没有显示位图void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CClientDC dc(this);
HBITMAP Bitmap=(HBITMAP)LoadImage(NULL,"D:\BITMAP10",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
CDC cdc;
cdc.CreateCompatibleDC(0);
BITMAP bmp;
GetObject(Bitmap,sizeof(bmp),&bmp);
SelectObject(cdc,Bitmap);
DeleteObject(Bitmap);
BitBlt(dc,0,0,bmp.bmWidth,bmp.bmHeight,cdc,0,0,SRCCOPY);

我是初学者,请问各位大侠这是怎么回事啊,和位图本身的属性有关系吗

解决方案 »

  1.   

    首先文件名是否正确,先在资源管理器中核实一下,看能否打开预览;其次字符串中的反斜杠是转义符,要这样输入:"D:\\BITMAP10"(这个文件名不是位图类型的,看看是否漏掉了扩展名);另外,因为你的位图是用来选入兼容DC显示用的,不需要加LR_CREATEDIBSECTION标志,否则后面的GetObject就应该用DIBSECTION结构作为参数来获取DIB信息。
      

  2.   

    还有类似位图句柄这样的GDI资源都需要用完从DC选出销毁,最好不要放在OnDraw这样的刷新函数中加载,而应该放在其他初始化函数(OnCreate等)中加载;OnDraw中选入DC用完后要选出。