我正在尝试在客户端区域中构建一个具有一些玻璃效果的漂亮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.这可能是显卡驱动程序的一个问题吗?