【发布时间】:2011-03-25 03:02:34
【问题描述】:
我有一个基于对话框的 MFC C++ 应用程序。我的对话框显示了许多“页面”(类似于标签页或属性对话框)。
我通过在父客户区的顶部显示一个子窗口来显示每个“页面”。这在 Vista 上运行良好,直到我在孩子的顶部打开另一个窗口。
Vista 然后似乎在我的父对话框中绘制了一个厚厚的白色矩形框,该框绘制在我的“页面”子窗口的顶部。如果我在这个白色矩形的顶部移动另一个窗口,它会重新绘制被遮挡的区域。
谁能告诉我这是怎么回事? Vista 是否试图使用不正确的坐标清除我的非客户端(框架)区域?
我的父对话框是一个从 CDialog 派生的蒙皮类,它处理我自己的窗口标题栏和框架的绘制。我发现如果我不在自己的 OnNcActivate() 方法中调用 CDialog::OnNcActivate(),则不会出现白色矩形。当然,如果我这样做,那么我将无法使用我的子窗口。但 OnNcActivate 似乎与问题有关。
【问题讨论】:
-
我已经找到了问题所在。我不应该调用 CDialog::OnNcActivate() - 我应该只是返回 TRUE。现在一切正常。
标签: c++ mfc windows-vista