我正在ESC
我的应用程序中处理密钥,当收到此密钥时,我希望关闭当前窗口。
我应该简单地打电话DestroyWindow(hWnd)
还是应该我SendMessage(WM_CLOSE, hWnd, 0, 0)
,还是应该以某种不同的方式关闭当前窗口?
我正在ESC
我的应用程序中处理密钥,当收到此密钥时,我希望关闭当前窗口。
我应该简单地打电话DestroyWindow(hWnd)
还是应该我SendMessage(WM_CLOSE, hWnd, 0, 0)
,还是应该以某种不同的方式关闭当前窗口?
你应该PostMessage(hWnd, WM_CLOSE, 0, 0)
。它将WM_CLOSE
消息放入窗口的消息队列中进行处理,当消息队列被清除时窗口可以正常关闭。
您应该使用PostMessage
而不是SendMessage
. 不同的是,PostMessage
简单地将消息放入消息队列并返回;SendMessage
等待来自窗口的响应,在WM_CLOSE
.
使用哪个取决于您。键应该Esc像单击关闭按钮一样起作用,还是肯定会破坏窗口?
WM_CLOSE
(见DefWindowProc
)调用的默认实现DestroyWindow
,因此,如果您没有WM_CLOSE
专门处理,那么一个与另一个一样好。但是WM_CLOSE
不一定要调用DestroyWindow
,所以如果有问题的窗口处理它,那么它可以做其他事情。例如,它可能会弹出一个“你确定吗?”类型的消息框,或者干脆什么都不做。DestroyWindow
将绕过所有这些。
要么PostMessage
或SendMessage
WM_CLOSE