MFC基于对话框的应用程序标题栏突出显示Windows 10上的可视化工件(即CDialogEx中的错误)

c00*_*0fd 3 c++ user-interface mfc windows-10 visual-studio-2017

我不确定为什么我会得到这个视觉神器?

以下是如何重现:

我正在使用Visual Studio 2017社区.创建一个新的C++ - > MFC项目:

在此输入图像描述

然后指定"基于对话框":

在此输入图像描述

然后构建为"Debug"x86应用程序并运行它.

所以我在Windows 10上运行它.

当这个基于对话框的过程具有焦点时,它看起来像我期望的那样:

在此输入图像描述

但如果我将键盘焦点切换到其他应用程序(通过点击它),这个基于对话框的过程仍然保留其标题栏颜色:

在此输入图像描述

我不确定这是否只是一个视觉故障的问题,或者是否有更深层次的窗口消息处理问题.我该如何纠正?(对于较旧的MFC项目,这不是问题.)

VuV*_*irt 5

我设法复制你的问题并找到了一个快速解决方案.您需要将WM_ACTIVATE消息处理程序添加到主对话框中,注释掉基类OnActivate并将其修改为:

void CMFCApplication1Dlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
    //CDialogEx::OnActivate(nState, pWndOther, bMinimized);

    // TODO: Add your message handler code here
    this->Default();
}
Run Code Online (Sandbox Code Playgroud)

需要CWnd :: Default调用以保持默认按钮的活动/非活动可视化.