我在主对话框里按钮事件让用户选择了一个BMP文件 文件名存在m_strPath里头
确认文件名没有问题 以下的代码要把位图显示在CPDlg对话框里 可是显示不出来void CPDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CtestDlg * pwnd = (CtestDlg*)this->GetParent();
if(pwnd->m_strPath.GetLength()>0)
{
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),pwnd->m_strPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hbmp)
{
if(this->m_bmpBm.DeleteObject())
this->m_bmpBm.Detach();
this->m_bmpBm.Attach(hbmp);
dc.SelectObject(m_bmpBm);

}
}
}可是如果改成如下代码就可以正常显示了 
void CPDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CtestDlg * pwnd = (CtestDlg*)this->GetParent();
if(pwnd->m_strPath.GetLength()>0)
{
HBITMAP hbmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),pwnd->m_strPath,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
if(hbmp)
{
CDC mdc;
mdc.CreateCompatibleDC(&dc);
if(this->m_bmpBm.DeleteObject())
this->m_bmpBm.Detach();
this->m_bmpBm.Attach(hbmp);
BITMAP bm;
m_bmpBm.GetBitmap(&bm);
mdc.SelectObject(m_bmpBm);
CRect rc;
GetClientRect(&rc);
rc.NormalizeRect();
dc.StretchBlt(10,10,rc.Width()-10,rc.Height()-20,&mdc,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

}
}
}为什么直接用对话框DC显示不出来 非要用campatibleDC呢?