首先,我不敢相信我是第一个在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)
请指示。
1条答案
按热度按时间b91juud31#
根据Doc:Closing the Window
**用户可以通过单击“关闭”按钮或使用键盘快捷键(如ALT+F4)来关闭应用程序窗口。**这些操作中的任何一个都会导致窗口接收WM_CLOSE消息。WM_CLOSE消息使您有机会在关闭窗口之前提示用户。如果确实要关闭窗口,请调用DestroyWindow函数。否则,简单地从WM_CLOSE消息返回零,操作系统将忽略该消息,并且不销毁该窗口。
默认情况下,按
ALT+F4
会导致窗口接收WM_CLOSE消息。ALT+F4是关闭窗口的热键。无需创建快捷键表。