为什么ON_WM_ERASEBKGND不好用呢???大家请进。 我在子窗口中绘图,只要一改变子窗口的大小,我画出的图形就不见了,这是为何?即使我响应了ON_WM_ERASEBKGND消息,并在消息处理函数中添加了绘图函数(这个函数是一个单独的类成员函数),为何还是不行(但是此时的现象是我要画的图形闪一下就消失了)??ON_WM_ERASEBKGND对子窗口无效吗??请大家解释一下,谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在OnDraw中画,当使用子窗口右边的ScrollBar的时候,画的图就花了,不信你试试?还有没有其他的解决方法了? 创建一个内存DC,先画到内存DC,然后在OnDraw中画到客户区 好用BOOL CMy121View::OnEraseBkgnd(CDC* pDC) { CView::OnEraseBkgnd(pDC); try { CDC dcMem;//draw left CClientDC dc(this); HBITMAP hbit; dcMem.CreateCompatibleDC(&dc); hbit = (HBITMAP)dcMem.SelectObject(m_bitmap); GetDC()->BitBlt(0,0,210,600,&dcMem,0,0,SRCCOPY); CDC dcMem2;//draw top CClientDC dc2(this); HBITMAP hbit2; dcMem2.CreateCompatibleDC(&dc2); hbit2 = (HBITMAP)dcMem2.SelectObject(m_top); GetDC()->BitBlt(210,0,800,20,&dcMem2,0,0,SRCCOPY); } catch(CException err) { CString errmsg; err.GetErrorMessage(errmsg.GetBuffer(errmsg.GetLength()),255); MessageBox("初始化失败,错误信息为:\n"+errmsg+"\n,请记录下错误信息并与程序供应商联系!","失败",MB_ICONINFORMATION|MB_OK); exit(-1); } return 0;} 推荐在OnDraw()中画,通过Invalidae()来触发。 如果你在OnEraseBkgnd中绘制的话,最好在 OnDraw 里面直接返回,什么不要做 在其他的情况下我的图形都可以保持了,但是为何我一拖动子窗口的边框的时候,图形就不见了???并且非要等到我强行激活OnDraw或者OnPaint之后,图形才能恢复。请问有没有什么办法让我拖动子窗口的边框的时候,也能保持图形? 我试过了,在WM_SIZE事件中绘图是要出错的,各位大侠请救命啊,谢谢了。 各位大虾,正常情况下一个月写2万行代码是偏多还是偏少呢 如何实现按钮变成圆角 (急切求助)如何程序实现一键还原?(在线等) 兄弟们,有没有直接从DLL中查看类细节的工具 月历控件中为什么不用如下程序来更新静态控件 关于psu.exe 如何把WORD格式转化成传真格式 使用cj的朋友们请进 关于CDib 类的查找问题 有没有现在还在写程序的人 在VC6.0内,怎么运行需命令行参数的程序? 请问:CreateToolbarEx不能被连入
{
CView::OnEraseBkgnd(pDC);
try
{
CDC dcMem;//draw left
CClientDC dc(this);
HBITMAP hbit;
dcMem.CreateCompatibleDC(&dc);
hbit = (HBITMAP)dcMem.SelectObject(m_bitmap);
GetDC()->BitBlt(0,0,210,600,&dcMem,0,0,SRCCOPY);
CDC dcMem2;//draw top
CClientDC dc2(this);
HBITMAP hbit2;
dcMem2.CreateCompatibleDC(&dc2);
hbit2 = (HBITMAP)dcMem2.SelectObject(m_top);
GetDC()->BitBlt(210,0,800,20,&dcMem2,0,0,SRCCOPY);
}
catch(CException err)
{
CString errmsg;
err.GetErrorMessage(errmsg.GetBuffer(errmsg.GetLength()),255);
MessageBox("初始化失败,错误信息为:\n"+errmsg+"\n,请记录下错误信息并与程序供应商联系!","失败",MB_ICONINFORMATION|MB_OK);
exit(-1);
}
return 0;
}