我正在使用 native C++ 和 WinAPI 编写程序。
这个程序有一个主应用程序窗口,我希望它能保持一定的持久性。通过红色 X 按钮关闭窗口似乎很自然,当我实际上不想退出程序时,我经常不小心按下它(在使用 Teamspeak 时,这种情况就发生在我身上)。因此,我尝试将红色 X 按钮重新调整为最小化按钮,以避免意外退出。
但是,我的应用程序应该有某种方式通过标准系统控件退出程序。我想允许 ALT+F4 并右键单击任务栏图标来关闭。我尝试拦截 WM_CLOSE 和 SYSCOMMAND (SC_CLOSE),但这似乎禁用了退出程序的所有标准系统方法(没有在 Process Explorer 中杀死它 - 不是真正的标准方法)。
有没有办法只拦截窗口的红色X按钮?我注意到 Windows Live Messenger 可以执行此操作,但我不知道如何执行。
最佳答案
处理 WM_NCLBUTTONDOWN
消息并使用 WM_NCHITTEST
检查点击是否将传递到 HTCLOSE
控件(这就是您的红色 [ X] 决定)。或者,处理 WM_NCHITTEST
本身,并通过用其他值替换返回值来防止发现窗口 GUI 的 HTCLOSE
部分。
关于c++ - 如何在不影响 ALT+F4 或在任务栏中关闭窗口的情况下重新调整窗口的关闭按钮的用途?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9788662/