Vista上的儿童窗口绘画问题

时间:2011-03-25 03:02:35

标签: c++ mfc windows-vista

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

我通过在父客户区顶部显示子窗口来显示每个“页面”。这在Vista上工作正常,直到我再打开孩子的另一个窗口。

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

有人可以告诉我发生了什么事吗? Vista是否试图使用不正确的坐标来清除我的非客户端(框架)区域?

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

1 个答案:

答案 0 :(得分:1)

我已经找到了问题..我不应该调用CDialog :: OnNcActivate() - 我应该刚刚返回TRUE。一切正常。