C语言 Win32:当按下Alt+F4时,如何用消息框确认退出?

q8l4jmvw  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(144)

首先,我不敢相信我是第一个在SO.com上问这个问题的人。同样的问题存在,但使用不同的术语。如果是,请关闭此问题,并链接到原始问题。
第二:我正在写C并使用Win32 API。我的目标是显示一个消息框来确认应用程序退出。
我知道三种不同的退出Win32应用程序的通用方法。(如果有更多,请告诉我。)
1.按下主窗口右上角的X按钮,触发Win32事件WM_CLOSE
1.从系统菜单(Alt+Space)中,选择菜单项Close,该菜单项将触发Win32事件WM_CLOSE
1.按快捷键Alt+F4
我能够正确地处理#1和#2。然而,我正在努力正确地处理#3。
首先,我尝试了CreateAcceleratorTableW()#define IDM_ACCEL_ALT_F4 203{.fVirt = (BYTE) (FALT | FVIRTKEY), .key = (WORD) VK_F4, .cmd = (WORD) IDM_ACCEL_ALT_F4}。然而,WM_COMMAND从来没有被触发这个加速器。为了清楚,使用这个相同的功能,我能够捕获其他快捷键,所以我相信我的设置是正确的。
其次,我监视传入的Win32事件,但我从未看到:WM_SYSKEYDOWN加上WPARAM wParam[115/0x73] (VK_F4)。奇怪的是,我看到:WM_SYSKEYUP + WPARAM wParam[115/0x73] (VK_F4)
请指示。

b91juud3

b91juud31#

根据Doc:Closing the Window

**用户可以通过单击“关闭”按钮或使用键盘快捷键(如ALT+F4)来关闭应用程序窗口。**这些操作中的任何一个都会导致窗口接收WM_CLOSE消息。WM_CLOSE消息使您有机会在关闭窗口之前提示用户。如果确实要关闭窗口,请调用DestroyWindow函数。否则,简单地从WM_CLOSE消息返回零,操作系统将忽略该消息,并且不销毁该窗口。

默认情况下,按ALT+F4会导致窗口接收WM_CLOSE消息。ALT+F4是关闭窗口的热键。无需创建快捷键表。

相关问题