CGridCtrl控件闪烁的问题

BOGELIAOGE 2008-12-12 09:31:36
工程使用了CGridCtrl控件,如果把控件直接放在view类里面,则一切正常,没有闪烁情况发生,


现我自己建立了一个CWnd继承类,把CGridCtrl控件放在里面,并对CWnd类进行了OnEraseBkgnd消息响应


但CGridCtrl控件发生了闪烁现象,请问原因?
附代码:


class CxxxWnd : public CWnd
{
.....
CGridCtrl m_ctrlGrid;
};

void CxxxWnd::OnPaint()
{
CPaintDC dc(this);

if (m_bDoubleBuffer)
{
CMemDC MemDC(&dc);
OnDraw(&MemDC);
}
else
OnDraw(&dc);
}

void CxxxWnd::OnDraw(CDC *pDC)
{

}

BOOL CxxxWnd::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}

int CxxxWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
.....
if(!m_ctrlGrid.Create(CRect(0,0,0,0),this,100))
return -1;
.....
return 0;
}

void CxxxWnd::OnSize(UINT nType, int cx, int cy)
{

CRect rect;
GetClientRect(&rect);
m_ctrlGrid.MoveWindow(&rect);

}
...全文
236 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BOGELIAOGE 2008-12-14
  • 打赏
  • 举报
回复
虽然不是2位说的原因 也给分了
BOGELIAOGE 2008-12-14
  • 打赏
  • 举报
回复
原因找到了 是onpaint函数导致了二次重绘
BOGELIAOGE 2008-12-14
  • 打赏
  • 举报
回复
BOOL CxxxWnd::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
我没做什么啊 ,返回FALSE也是一样
jixingzhong 2008-12-13
  • 打赏
  • 举报
回复
不刷新背景,只刷前景
dirdirdir3 2008-12-13
  • 打赏
  • 举报
回复
OnEraseBkgnd消息响应的时候不要画cgridctrl的背景...............否则相当于画了两次,有闪烁是正常的........

15,979

社区成员

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

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