我在对话框的Picture控件中显示图像,在OnPaint函数中实现,不过图像是显示了,但是对话框中其它的控件都看不见了,如果在OnPaint中调用CDialog::OnPaint(),则图像显示不了,代码如下: 
void CXuanQuMoBanDlg::OnPaint() 
{
    //CPaintDC dc(this); // device context for painting
    
    // TODO: Add your message handler code here
    
    // Do not call CDialog::OnPaint() for painting messages    CClientDC dc(GetDlgItem(IDC_PIC));     if(filename!="")
    {
        CBitmap m_bitmap;
        HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(filename),IMAGE_BITMAP,
            0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
        m_bitmap.Attach(hBitmap);
        CDC dcImage;
        if(!dcImage.CreateCompatibleDC(&dc))
            return;
        BITMAP bm;
        m_bitmap.GetBitmap(&bm);
        dcImage.SelectObject(&m_bitmap);
        dc.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
        DeleteObject(hBitmap);
    }
}

解决方案 »

  1.   

    首先指正一下写错了,OnPaint中是能使用CPaintDC,其次如果你继承出来一个(CPicture)类,再在里面画不就没问题了。
      

  2.   

    既然用了BitBlt自己画就不需要CPicture控件了,直接设置BitBlt画图的位置就可以了,只要用CPaintDC dc(this); 这个就可以了,
      

  3.   

    CPicture控件的用法    CBitmap bitmap;
        HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(filename),IMAGE_BITMAP, 
                0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE); 
        bitmap.Attach(hBitmap); //加载位图2
        GetDlgItem(IDC_PIC)->SetBitmap(bitmap);          //显示位图
        bitmap.DeleteObject();