return FALSE; 后,对话框就变白色了解决方案
return FALSE 后,对话框就变白色了BOOL CddDlg::OnEraseBkgnd(CDC* pDC){// TODO: 在此添加消息处理程序
return FALSE; 后,对话框就变白色了

BOOL CddDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//return CDialog::OnEraseBkgnd(pDC);
return FALSE;
}
对话框背景默认是灰色的, 无论return true, false, 都会造成对话框背景变白色。
什么原因导致的?
不要回答这个函数的返回值, 我知道返回值的意思, 无非就是防止onpain再次擦出背景,仅此而已。
但是也不会无故地是使 背景变白色吧。
原本是灰色的
[解决办法]
"花屏" 就是因为你没画背景,你贴了图片填充了整个对话框,自然就不会"花屏"
msdn不是说返回false, onpaint会去擦出窗口背景,只是说PAINTSTRUCT的fErase会标记为TRUE
BeginPaint会根据fErase是否为TRUE来决定是否发WM_ERASEBKGND消息,所以还是会调用OnEraseBkgnd的
OnEraseBkgnd直接返回TRUE或FALSE都没擦出背景,所以会"花屏" ;OnEraseBkgnd贴了图片填充了整个对话框就相当于擦出了背景,所以不会"花屏"
[解决办法]“不知道是不是自己人品问题还是机子问题, OnEraseBkgnd打了断点, 故意拖拉对话框,或者用其他窗口来遮挡改对话框, 无论 OnEraseBkgnd返回什么, OnEraseBkgnd都会被调用。”
“OnEraseBkgnd不能 打断点”的,因为 调试 窗口 会 引起 不断的重绘。
应该:
afxDump << "OnEraseBkgnd\n";