关闭窗口后,“幽灵窗口/位图”仍然存在-MFC SDI

时间:2018-06-26 14:10:00

标签: c++ windows mfc

环境:基于MFC框架的SDI应用程序 问题:关闭模式对话框后,位图保持显示状态/下面的窗口不重新绘制。

对话框创建:

PortSettings Dlg; 
Dlg.DoModal();

我尝试为对话框类

显式设置OnCancel()
void PortSettings::OnCancel()
{CDialog::OnCancel();}

尝试从父窗口和对话框RedrawWindow调用OnCancel

我认为所有打开的对话框以及打开的其他模式窗口(例如文件浏览器)都会发生此问题,因为我使用的是MFC,所以以某种方式干扰了基础Window Proc,但是我不确定如何调查或尝试什么。

1 个答案:

答案 0 :(得分:0)

解决方案是多方面的:

对话框窗口属性会影响图像的持久性-在我的情况下,有必要将对话框框架更改为“薄”样式。

在Dlg.DoModal()调用之后,调用ParentWnd-> RedrawWindow()。在父窗口的OnPaint中,我添加了fillSolidRect以将背景重新绘制为白色。该部分由布尔逻辑控制,仅在对话框关闭后立即重新绘制以避免闪烁。