无边框窗口
此示例应用程序演示了处理可调整大小无边框窗口(类似于Steam、Windows版GitHub)所需的WinAPI调用和窗口消息。
无边框窗口可以调整大小、移动,并支持常规窗口具有的所有Aero功能:
- 吸附到桌面左右或四分之一
- 抖动最小化所有其他窗口
- 最小化、最大化、还原、吸附时的动画
- 窗口周围的原生柔和阴影
该示例应该可以在Windows 7、8/8.1和10上运行。
此示例不执行以下操作:
- 向客户区域绘制任何内容。您需要用不透明颜色填充整个窗口,否则在无边框模式下窗口框架可能会在客户区域内部可见。 在我的用例中,我只是填充D3D后台缓冲区以覆盖窗口的客户区域。
- 计算窗口模式下的正确客户区/窗口大小。您需要使用AdjustWindowRect等函数计算所需客户区大小的正确窗口大小。
键绑定:
- F8 启用/禁用在无边框窗口中拖动以移动它
- F9 启用/禁用调整无边框窗口的大小
- F10 在无边框和窗口模式之间切换
- F11 在无边框模式下切换Aero阴影