AskConfirmation是POPPAD2中的一个函式,它显示一个请求确认关闭程式的讯息方块:
如果选择了Yes按钮的话,讯息方块(以及AskConfirmation函式)将传回IDYES。只有这样,程式才会呼叫DestroyWindow,否则,程式不会结束。
如果要在程式结束之前确认使用者真的要结束程式,那么您还必须处理WM_QUERYENDSESSION讯息。当使用者要关闭Windows时,Windows开始向每个视窗讯息处理程式发送一个WM_QUERYENDSESSION讯息。如果有任何一个视窗讯息处理程式处理这个讯息後传回0,那么Windows将不会结束。我们如下处理了WM_QUERYENDSESSION:
如果要在程式结束之前要求使用者的确认,必须处理WM_CLOSE和WM_QUERYENDSESSION这两个讯息,这就是为什么我们使POPPAD2中的「Exit」功能表选项只向视窗讯息处理程式发送一个WM_CLOSE讯息的原因。这样做,我们避免了在别处进行请求确认的动作。
如果要处理WM_QUERYENDSESSION讯息,那么您也许还会对WM_ENDSESSION讯息感兴趣。Windows把这个讯息发送给先前收到WM_QUERYENDSESSION讯息的每个视窗讯息处理程式。如果由於另一个程式从WM_QUERYENDSESSION传回了0而不能结束Windows的执行,那么WM_ENDSESSION的wParam参数为0。WM_ENDSESSION讯息实际上回答了这个问题:我告诉过