DwmExtendFrameIntoClientArea和最大化窗口

时间:2011-11-13 21:30:28

标签: winapi dwm

我正在尝试在客户端区域中构建一个具有一些玻璃效果的漂亮GUI。

所以我按照here所述实现了它。

我很成功并拥有完整的玻璃框架,但只有窗口没有最大化。当我最大化窗口时它只是黑色: - (

通过一些谷歌搜索和实验我发现,当我使窗口无效以响应这样的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.这可能是显卡驱动程序的一个问题吗?

0 个答案:

没有答案