请看下面的两段代码:
代码一:
CBitmap bmp;
HBITMAP hBitmap = NULL; 
hBitmap = (HBITMAP)LoadImage(NULL, "c:\\temp\\test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE); 
bmp.Attach(hBitmap); 
......代码二:
CBitmap bmp;
bmp.LoadBitmap(IDB_TEST);
......接着用几乎完全一样的代码对bmp进行打印(用的是StretchBlt()),用代码一的方法得到的bmp打印完全没问题,但是用代码二的方法得到的bmp却打印不出,两者的区别只是一个从bitmap文件中读取位图,另一个是从资源中读取位图。不知为什么?谢谢!

解决方案 »

  1.   

    总共200分!
    http://expert.csdn.net/Expert/topic/1503/1503423.xml?temp=.7094232
      

  2.   

    在代码二中,你能确定你确实读入了位图吗?改写一下,看看每一步的返回值是否正解,
    如这样bool b = bmp.LoadBitmap(IDB_TEST);
    ................
      

  3.   


    看看资源中的bitmap能不能在窗口上显示了?xixi, 可能需要把你的代码简化一下贴出来,要不别人根本看不出来
    总之了还是楼上的大大说的对,得测一下
      

  4.   

    用CBitmap的LoadBitmap()是不行的,关键是要使用设备无关位图,所以还是要用LoadImage(),带上LR_CREATEDIBSECTION选项。可以把所述的方法二改成,应该就可以:HBITMAP hbmp = (HBITMAP)LoadImage(hInst, MAKEINTRESOURCE(nID), 
            IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE); 
    ASSERT(hbmp != NULL); 
    CBitmap bmp;
    bmp.Attach(hbmp);
      

  5.   

    成了!按pcman1990(pcman)的方法。谢谢!
    也谢谢大家!