我在MID的背景上加了一个图片,用的是一个网上朋友写的类
class CPicture p;
p.Load("123.jpg");
CDC dc;
cd.m_hDc->::FetDC(this->m_hWndMDiClient);
CRect rec;
CetClientRect(&rec);
p.Render(&dc,rec);但是当要重画时它会全部重画, 我怎么才能部分重画那??
或者还有什么别的好的方法在MDI的背景中加入图片!请高手们指教!
class CPicture p;
p.Load("123.jpg");
CDC dc;
cd.m_hDc->::FetDC(this->m_hWndMDiClient);
CRect rec;
CetClientRect(&rec);
p.Render(&dc,rec);但是当要重画时它会全部重画, 我怎么才能部分重画那??
或者还有什么别的好的方法在MDI的背景中加入图片!请高手们指教!
CRect是你要重绘的范围
CRect rc;
pDC->GetClipBox(&rc);rc 为无效需重绘区域,只重绘该部分就可以了。
谢谢了!
上面的方法试了试 还是不可以
不过谢了!
我是在MDI下加入的图 在程序开始的时候没有运行view ,界面左边是我添加的一个OUTBAR,右边是一个空白区域,我就是在这个空白区域加的图片
现在有一个问题,我怎么得到这个空白区域的句柄??
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类 if(pMsg->hwnd==m_hWndMDIClient && pMsg->message==WM_PAINT)
{
PostMessage(WM_PAINT);
}
return CMDIFrameWnd::PreTranslateMessage(pMsg);
}
然后加入相应WM_PAINT的函数void CMainFrame::OnPaint()
{ // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CMDIFrameWnd::OnPaint()
CDC dc;
dc.m_hDC=::GetDC(m_hWndMDIClient);
//在这里重画
::ReleaseDC(m_hWndMDIClient,dc.m_hDC);
CMDIFrameWnd::OnPaint();
}
http://www.codeproject.com/dialog/mdibackgroundimage.asp
用了你的方法了,还是不可以!
如果是的话,BitBlt本身就可以指定要贴到框架上的位置啊!