【问题标题】:Child Window painting problem on Vista only仅在 Vista 上的子窗口绘制问题
【发布时间】:2011-03-25 03:02:34
【问题描述】:

我有一个基于对话框的 MFC C++ 应用程序。我的对话框显示了许多“页面”(类似于标签页或属性对话框)。

我通过在父客户区的顶部显示一个子窗口来显示每个“页面”。这在 Vista 上运行良好,直到我在孩子的顶部打开另一个窗口。

Vista 然后似乎在我的父对话框中绘制了一个厚厚的白色矩形框,该框绘制在我的“页面”子窗口的顶部。如果我在这个白色矩形的顶部移动另一个窗口,它会重新绘制被遮挡的区域。

谁能告诉我这是怎么回事? Vista 是否试图使用不正确的坐标清除我的非客户端(框架)区域?

我的父对话框是一个从 CDialog 派生的蒙皮类,它处理我自己的窗口标题栏和框架的绘制。我发现如果我不在自己的 OnNcActivate() 方法中调用 CDialog::OnNcActivate(),则不会出现白色矩形。当然,如果我这样做,那么我将无法使用我的子窗口。但 OnNcActivate 似乎与问题有关。

【问题讨论】:

  • 我已经找到了问题所在。我不应该调用 CDialog::OnNcActivate() - 我应该只是返回 TRUE。现在一切正常。

标签: c++ mfc windows-vista


【解决方案1】:

我已经解决了问题.. 我不应该调用 CDialog::OnNcActivate() - 我应该只是返回 TRUE。现在一切正常。

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 2011-04-13
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多