环境:基于MFC框架的SDI应用程序 问题:关闭模式对话框后,位图保持显示状态/下面的窗口不重新绘制。
对话框创建:
PortSettings Dlg;
Dlg.DoModal();
我尝试为对话框类
显式设置OnCancel()
void PortSettings::OnCancel()
{CDialog::OnCancel();}
尝试从父窗口和对话框RedrawWindow
调用OnCancel
。
我认为所有打开的对话框以及打开的其他模式窗口(例如文件浏览器)都会发生此问题,因为我使用的是MFC,所以以某种方式干扰了基础Window Proc,但是我不确定如何调查或尝试什么。
答案 0 :(得分:0)
解决方案是多方面的:
对话框窗口属性会影响图像的持久性-在我的情况下,有必要将对话框框架更改为“薄”样式。
在Dlg.DoModal()调用之后,调用ParentWnd-> RedrawWindow()。在父窗口的OnPaint中,我添加了fillSolidRect以将背景重新绘制为白色。该部分由布尔逻辑控制,仅在对话框关闭后立即重新绘制以避免闪烁。