VC绘制控件如何防止闪烁
2017-09-06 17:38
232 查看
理论上不管什么控件都适用,方法如下:
新建一个MFC类,继承原来的控件类型,对于VC自动生成的类进行如下改动:
首先覆盖 OnEraseBkgnd() 防止擦除时填涂背景:
BOOL CXXXCtrl::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
然后覆盖 OnPaint(),原理是先在内存DC中绘图,之后再一股脑将画出的东东填涂到窗体上。
代码
void CXXXCtrl::OnPaint()
{
CPaintDC dc(this);
// TODO: 在此处添加消息处理程序代码
CRect rect;
CRect headerRect;
CDC dcMem; //内存DC
CBitmap bmpMem;
GetClientRect(&rect);
dcMem.CreateCompatibleDC(&dc);
bmpMem.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
dcMem.SelectObject(&bmpMem);
dcMem.FillSolidRect(&rect, RGB(255,255,255));
//这一句是调用默认的OnPaint(),把图形画在内存DC上
DefWindowProc(WM_PAINT, (WPARAM)dcMem.m_hDC, (LPARAM)0);
//输出
dc.BitBlt(0,
0,
rect.Width(),
rect.Height(),
&dcMem,
0,
0,
SRCCOPY);
dcMem.DeleteDC();
bmpMem.DeleteObject();
}
http://www.cnblogs.com/ddgg/archive/2010/07/16/1779131.html
新建一个MFC类,继承原来的控件类型,对于VC自动生成的类进行如下改动:
首先覆盖 OnEraseBkgnd() 防止擦除时填涂背景:
BOOL CXXXCtrl::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
然后覆盖 OnPaint(),原理是先在内存DC中绘图,之后再一股脑将画出的东东填涂到窗体上。
代码
void CXXXCtrl::OnPaint()
{
CPaintDC dc(this);
// TODO: 在此处添加消息处理程序代码
CRect rect;
CRect headerRect;
CDC dcMem; //内存DC
CBitmap bmpMem;
GetClientRect(&rect);
dcMem.CreateCompatibleDC(&dc);
bmpMem.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
dcMem.SelectObject(&bmpMem);
dcMem.FillSolidRect(&rect, RGB(255,255,255));
//这一句是调用默认的OnPaint(),把图形画在内存DC上
DefWindowProc(WM_PAINT, (WPARAM)dcMem.m_hDC, (LPARAM)0);
//输出
dc.BitBlt(0,
0,
rect.Width(),
rect.Height(),
&dcMem,
0,
0,
SRCCOPY);
dcMem.DeleteDC();
bmpMem.DeleteObject();
}
http://www.cnblogs.com/ddgg/archive/2010/07/16/1779131.html
相关文章推荐
- VC重绘如何防止控件闪烁
- VC重绘如何防止控件闪烁
- VC重绘如何防止控件闪烁
- 转载---VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- 如何防止拖动窗体大小时控件闪烁的问题
- VC防止窗口和控件闪烁的方法
- 解决列表框更新数据的时候的闪烁问题(VC防止窗口及其控件(如CListCtrl)闪烁的简单方法(一组有用的宏) )
- VC防止窗口和控件闪烁的方法
- vc编程---ACTIVEX浏览器控件如何防止弹出脚本错误(转载)
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法总结
- VC防止窗口和控件闪烁的方法