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

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

我正在使用 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/

相关文章:

c++ - 不使用 for 循环设置整数中的每第 n 位

c++ - 设置视频捕获属性不再适用于 OpenCV 2.2?

c++ - Qt并发: Inform another function that result is ready

c# - 使用网络登录从 Windows 服务创建 GUI

winapi - 在 pre-vista 系统上的 GetThreadId?

jquery - 如何使选择菜单在不单击的情况下自动显示?

c++ - 扫描线多边形填充算法

c# - WinAPI CreateThread 杀进程

user-interface - VR 中的 OnGUI 不显示

java - 如何使缩小图像中的拖拽消失?