下面说两种重载OnEraseBkgnd()函数的方法:
1)手工重载
在要重载的类(通常为CView的子类)声明部分(.h文件)添加虚函数的声明:
virtual BOOL OnEraseBkgnd(CDC* pDC);
注意添加在//{{AFX_VIRTUAL(CMyView)和//}}AFX_VIRTUAL之间。
在类的定义文件(.cpp)中的MESSAFE_MAP部分,//{{AFX_MSG_MAP(CMyView)和 //}}AFX_MSG_MAP之间添加ON_WM_ERASEBKGND()。
然后在函数体添加:
BOOL CMyView::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
这样就搞定了。
2)使用Classwizard
或者使用Classwizard来进行,省去了写代码。通过菜单View->ClassWizard(或者ctrl+W)->Class name中选你的view。然后在Class Info选项卡中,将Message Filter设为Child Window。重新切换到Message Map选项卡,在Messages中找到WM_ERASEBKGND,双击就添加成功了。点击右边的Edit Code,将函数体改为return TRUE,搞定。这种方法不需要记忆,简单省事,强烈推荐。