我正在使用原生C ++和WinAPI创建一个程序。
这个程序有一个主要的应用程序窗口,我希望它有点持久。通过红色X按钮关闭窗口似乎很自然,当我实际上不想退出程序时,我常常不小心按下它(Teamspeak会发生这种情况)。因此,我正在尝试将红色X按钮重新用于最小化按钮,以避免意外退出。
但是,我的应用程序应该有一些方法可以使用标准系统控件退出程序。我想允许ALT + F4并右键单击任务栏图标以关闭。我试图拦截WM_CLOSE和SYSCOMMAND(SC_CLOSE),但这似乎禁用了退出程序的所有标准系统方法(在Process Explorer中没有杀死它 - 不是真正的标准方法)。
有没有办法只拦截窗口的红色X按钮?我注意到Windows Live Messenger会这样做,但我不知道如何。
答案 0 :(得分:3)
处理WM_NCLBUTTONDOWN
消息并使用WM_NCHITTEST
检查点击即将发送到HTCLOSE
控件(这是您的红色[X]解析为的内容)。或者,处理WM_NCHITTEST
本身并阻止通过用其他内容替换返回值来发现窗口GUI的HTCLOSE
部分。