想打开BMP文件,以下是代码,可是总是不能显示,设置断点,发现LoadBitmap的返回值居然为0,不知道是不是这个原因,为什么返回的是0呢?应该如何更改?谢谢各位了!void CMyView::OnOpenBmp() 
{
// TODO: Add your control notification handler code here CString strFilePath,strFileTitle;
CString strBitmapFile;
CDC memdc;
CPaintDC dc(this);
CBitmap   bitmap,*bitmapback;    CFileDialog fdReplaceModel(TRUE,NULL,NULL,NULL,"位图文件(*.bmp)|*.bmp||",NULL);
if(fdReplaceModel.DoModal()==IDOK)
{
   strFilePath=fdReplaceModel.GetPathName();
   strFileTitle=fdReplaceModel.GetFileTitle();    bitmap.LoadBitmap(strFilePath);
   memdc.CreateCompatibleDC(&dc);    bitmapback=memdc.SelectObject(&bitmap);
           dc.StretchBlt (0,0,356,559,&memdc,0,0,356,559,SRCCOPY);
}}

解决方案 »

  1.   

    CBitmap::LoadBitmap 的参数是资源名,不是文件名。
      

  2.   

    strFilePath=fdReplaceModel.GetPathName();   
    //楼主这句错了,应该是fdReplaceModel.GetFileName()
      

  3.   

    BOOL LoadBitmap( LPCTSTR lpszResourceName );这是MSDN里查的,可以是文件名。如果还不能画出图来,楼主把画图的放到OnDraw()里试试看!
      

  4.   

    标识资源有两种方法:一是字符串,二是ID。
    BOOL LoadBitmap( LPCTSTR lpszResourceName ); 中参数是标识资源的字符串,不是文件名!!!
    加载图象文件,请使用 LoadImage 函数。
      

  5.   

    楼上的,是我弄错了!不过用CImage类更好用吧,支持更多的图片格式。
      

  6.   

    bitmap.LoadBitmap(strFilePath); 
    改成:
    bitmap.Attach((HBITMAO)LoadImage(NULL, fdReplaceModel.GetPathName(), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);另外最好把bitmap改成类的成员变量,加载后刷新了在OnDraw里面绘制位图。