我一直在研究自定义 GUI 框架,因为我无法处理需要通过标记 (XAML) 开发 UI 的托管废话或本机代码。我正在尝试创建一个使用该 GUI 框架的应用程序原型,但我遇到了一个特定于平台的问题,即 WinAPI 中的窗口性质。
DWM 并不真正允许定制打破沉浸感的非客户区,它唯一允许的就是扩展到客户区,以产生定制的错觉。
所以,最好的做法是在客户区(相对于 WINAPI)内重建“非客户区”,这需要我去掉标题、最大化、最小化按钮等。所以,我基本上列举了我所有的东西想要将它们组合在一起并翻转所有位以停用它们。
~(WS_CAPTION | WS_SYSMENU | WS_HSCROLL | WS_VSCROLL | WS_MINIMIZE | WS_MAXIMIZE | WS_THICKFRAME)
一旦这些风格消失,我就无法使用正常的关机程序(Alt+F4,或右键单击任务栏并“关闭”),因为它们不起作用。我不得不手动拦截 VK_ESCAPE 和 PostQuitMessage(0) ,这样我就可以退出而不会被迫终止进程。
为什么会这样?我该如何解决这个问题?