多文档背景问题

lj3562732 2006-08-11 09:23:27
我在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的背景中加入图片!

请高手们指教!
...全文
240 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
杰仕人生_2001 2006-11-29
  • 打赏
  • 举报
回复
建议你用picture控件,然后在这控件之上加图片就可以了!
KeSummer 2006-08-19
  • 打赏
  • 举报
回复
LZ的意思上把一张图贴到主框架的某个位置上?
如果是的话,BitBlt本身就可以指定要贴到框架上的位置啊!
lj3562732 2006-08-19
  • 打赏
  • 举报
回复
这个例子我看了,其实问题的关键是,我的图形不是整个都当成主框架的背景色的,只是一部分为主框架的背景色,另一部分我还有别的控件,所以现在就是怎么取得这一部分的句柄

to:nFox18(无知者无畏)
用了你的方法了,还是不可以!
KeSummer 2006-08-12
  • 打赏
  • 举报
回复
参考MDI背景画图的例子,是子类化实现的.
http://www.codeproject.com/dialog/mdibackgroundimage.asp
lj3562732 2006-08-12
  • 打赏
  • 举报
回复
现在我已经把图载入到背景中
我是在MDI下加入的图 在程序开始的时候没有运行view ,界面左边是我添加的一个OUTBAR,右边是一个空白区域,我就是在这个空白区域加的图片
现在有一个问题,我怎么得到这个空白区域的句柄??
nFox18 2006-08-12
  • 打赏
  • 举报
回复
在 MainFrame重写PreTranslateMessage函数
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();
}
lj3562732 2006-08-11
  • 打赏
  • 举报
回复
我的上面的代码是在MAINFRAM的ONPAIN中写的!

我现在就是想得到重画的区域 因为这个方面我刚接触 请各位讲的详细一点好么??
谢谢了!
上面的方法试了试 还是不可以
不过谢了!
思危 2006-08-11
  • 打赏
  • 举报
回复
重画时用
CRect rc;
pDC->GetClipBox(&rc);

rc 为无效需重绘区域,只重绘该部分就可以了。
ignoramuspp 2006-08-11
  • 打赏
  • 举报
回复
用InvalidateRect(CRect)试试
CRect是你要重绘的范围

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧