如何在不影响ALT + F4或在任务栏中关闭ALT + F4的情况下重新调整窗口的关闭按钮?

时间:2012-03-20 14:23:31

标签: c++ winapi user-interface window message-queue

我正在使用原生C ++和WinAPI创建一个程序。

这个程序有一个主要的应用程序窗口,我希望它有点持久。通过红色X按钮关闭窗口似乎很自然,当我实际上不想退出程序时,我常常不小心按下它(Teamspeak会发生这种情况)。因此,我正在尝试将红色X按钮重新用于最小化按钮,以避免意外退出。

但是,我的应用程序应该有一些方法可以使用标准系统控件退出程序。我想允许ALT + F4并右键单击任务栏图标以关闭。我试图拦截WM_CLOSE和SYSCOMMAND(SC_CLOSE),但这似乎禁用了退出程序的所有标准系统方法(在Process Explorer中没有杀死它 - 不是真正的标准方法)。

有没有办法只拦截窗口的红色X按钮?我注意到Windows Live Messenger会这样做,但我不知道如何。

1 个答案:

答案 0 :(得分:3)

处理WM_NCLBUTTONDOWN消息并使用WM_NCHITTEST检查点击即将发送到HTCLOSE控件(这是您的红色[X]解析为的内容)。或者,处理WM_NCHITTEST本身并阻止通过用其他内容替换返回值来发现窗口GUI的HTCLOSE部分。