使用MFC从文件加载BMP

时间:2014-12-06 16:32:05

标签: c++ mfc

我尝试将bmp加载到我的MFC优化校准。

void CMFCAppDlg::OnBnClickedButtonload()
{
    CFileDialog dlg(TRUE);
    int result=dlg.DoModal();
    if(result==IDOK)
    {
        MyBmpFile::Instance() -> setPath (dlg.GetPathName());
        UpdateData(FALSE);
    }
    HANDLE hBitmap = LoadImage(0, MyBmpFile::Instance() -> getPath(), IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    CBitmap m_bitmap;
    m_bitmap.Attach((HBITMAP)hBitmap);

    CDC dc, *pDC;
    BITMAP bmp;

    m_bitmap.LoadBitmapW(IDB_BITMAP);
    m_bitmap.GetBitmap(&bmp);

    pDC = this->GetDC();
    dc.CreateCompatibleDC(pDC);
    dc.SelectObject(m_bitmap);
    pDC->BitBlt(200, 200, bmp.bmWidth, bmp.bmHeight, &dc,0 , 0, SRCCOPY);

    m_bitmap.DeleteObject();
    m_bitmap.Detach();
}

在对话框中选择项目后,此代码返回错误。问题在于LoadImage()它返回NULL。但实际上我不知道我做错了什么。

好的,我使用CImage来绘制这个bmp,无论如何我没有用LoadImage()解决问题。我尝试以静态方式制作它:L"D:\\e.bmp"_T("D:\\e.bmp"),但即便出现问题也与之前相同。

void CMFCAppDlg::OnBnClickedButtonload()
{
    CFileDialog dlg(TRUE);
    int result=dlg.DoModal();
    if(result==IDOK)
    {
        MyBmpFile::Instance() -> setPath (dlg.GetPathName());
        UpdateData(FALSE);
    }

    CImage image;
    image.Load( MyBmpFile::Instance() ->getPath() );

    CDC dc, *pDC;

    pDC = this->GetDC();
    dc.CreateCompatibleDC(pDC);
    image.Draw(pDC -> GetSafeHdc(),0,0);
}

0 个答案:

没有答案