图片路径是正确的!!!!在对话框初始化的时候我调用了它,还是没有办法现实!
当我单击鼠标时候调用它又显示了!为什么??????
void CPlayerIntroDlg::ShowPlayerPic(CString m_strplayerpic)
{
HBITMAP bitmap=(HBITMAP)LoadImage(AfxGetApp()->m_hInstance,m_strplayerpic,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
ASSERT(bitmap);
HBITMAP OldBitmap;
CDC MemDC;
CWnd *pWnd=this->GetDlgItem(IDC_PLAYERPIC);
CDC *pDC=pWnd->GetDC();
CRect rect;
MemDC.CreateCompatibleDC(pDC);
pWnd->GetClientRect(rect);
OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap);
CBitmap m_Bitmap,*pBitmap;
pBitmap=m_Bitmap.FromHandle(bitmap);
BITMAP bm;
pBitmap->GetObject(sizeof(BITMAP),&bm);
///显示它
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
// pDC->BitBlt(0, 0, rect.Width(),rect.Height(), &MemDC, 0, 0,SRCCOPY);
MemDC.SelectObject(OldBitmap);
}
OldBitmap=(HBITMAP)MemDC.SelectObject(bitmap);
bitmap为HBITMAP
在MemDC.SelectObject();括号中应该用CBitmap对象
所以,你应该
CBitmap *tt=new CBitmap();
tt->Attach(bitmap);
MemDC.SelectObject(tt);
然后再进行其他操作就可以了。
你说的对CStatic的DC得不到.
最好的方法是 IDC_PLAYERPIC 控件在对话框资源中只是一个占位作用。可以把
它设成隐藏的。
在 MyWnd::OnInitDialog()中得到它的Rectangle并将它映射到父窗口中
pChild->GetClientRect(m_PicRect);
pChild->MapWindowPoints(this, m_PicRect)。
pChild->ShowWindow(SW_HIDE);
在 MyWnd::ShowPlayerPic()中使用MyWnd::GetDC输出。
pDC->StretchBlt(m_PicRect...);