1

我正在尝试在客户区构建一个带有玻璃效果的漂亮 GUI。

所以我按照这里的描述实现了它。

我成功了,并且有漂亮的玻璃框架,但只要窗户没有最大化。当我最大化窗口时,它只是黑色:-(

通过一些谷歌搜索和实验,我发现,当我使窗口无效以响应WM_WINDOWPOSCHANGING这样的情况时:

case WM_WINDOWPOSCHANGING: {
  WINDOWPOS* pWindowPos = (WINDOWPOS*)lParam;
  if (pWindowPos->flags & SWP_FRAMECHANGED) {
    InvalidateRect(hWnd, NULL, TRUE);
  }
}

当我最大化窗口时,我也会得到玻璃效果。

现在奇怪的是,这只有在我双击标题栏或窗口右上角的最大化按钮时才有效。但是,如果我将窗口移动到屏幕顶部,让它在那里捕捉以最大化窗口(Aero Snap),窗口就会变成黑色。

有谁知道这是如何正确完成的?

(我正在 Windows 7 64 位下开发。)

编辑:

我还应该提到我想删除标准标题栏,我通过返回0响应WM_NCCALCSIZE消息来做到这一点。没有这个,一切正常。

编辑:

在另一个基本相同的系统上进行的测试是成功的。唯一显着的区别是有另一个显卡,AMD Radeon HD 4300 而不是 AMD Radeon HD 5870。这可能是显卡驱动程序的问题吗?

4

0 回答 0