小弟我是刚学MFC编程,自己看资料编了个读取并显示BMP文件的程序,能通过编译,但是显示不出图像。是不是要先把图像保存在什么指定的位置的啊?CfileDialog 中的GetPathName()返回的路径是什么?请各位大侠指教!!

解决方案 »

  1.   

    1:那99%是你写的代码有问题,所以图象显示不出来.
    2:GetPathName()返回的是绝对路径,可以用来操作该文件,例如
    CFileDialog dlg( TRUE );
    CFile file;
    if( dlg.DoModal() == IDOK ){
        if( !file.Open( dlg.GetPathName(), CFile::modeRead ) )
            return;
    }
      

  2.   

    void CFillDrugTouch::ShowDrugImage(CString ImageUrl)
    {
    //加载图片
    CStatic *pWnd = (CStatic *)GetDlgItem(IDC_PIC);   
    pWnd->ModifyStyle(0,SS_BITMAP);   
    pWnd->SetBitmap((HBITMAP)::LoadImage(AfxGetInstanceHandle(),   
    ImageUrl,             //换成用户指定文件名,不过只能显示.bmp文件   
    IMAGE_BITMAP,   
    450,320,LR_CREATEDIBSECTION   |LR_DEFAULTSIZE   |LR_LOADFROMFILE));
    }
      

  3.   

    我显示图像的函数是:
    前面在文档类中定义了:
    BITMAPFILEHEADER bf;
    BITMAPINFOHEADER bi;
    RGBQUAD* quad;
    BYTE* lpBuf;
    BITMAPINFO* pbi;
    int flag;
    int numQuad;
      在视图类中的图像显示函数如下:  
    void CMy1View::OnPaint()
    {
    CPaintDC dc(this);
    CMy1Doc*pDoc=GetDocument();
    ASSERT_VALID(pDoc);
    if(pDoc->flag==1)
    {

    SetDIBitsToDevice(dc.m_hDC,0,0,pDoc->bi.biWidth,pDoc->bi.biHeight,0,0,0,pDoc->bi.biHeight,pDoc->lpBuf,pDoc->pbi,DIB_RGB_COLORS);
    }
    Invalidate(FALSE);
    }
    不知道哪个地方出问题了??
      

  4.   

    SetDIBitsToDevice(dc.m_hDC,0,0,pDoc->bi.biWidth,pDoc->bi.biHeight,0,0,0,pDoc->bi.biHeight,pDoc->lpBuf,pDoc->pbi,DIB_RGB_COLORS); 确认你这个函数里面用到数据的都是正确的..并且,Invalidate(FALSE);//这句不应出现在onpaint()里的..
      

  5.   

    显示图像的过程并不复杂,去www.vckbase.com上下点初学者需要用到的代码吧,还是很容易理解的