用PreTranslateMessage试图拦截,但既不是WM_CLOSE 也不是 WM_COMMAND 跟WM_SYSCOMMAND.
因为本人想在CPropertySheet中的CPropertyPage的OnApply都执行完之后才判断是否关闭CPropertySheet,所以不可以OnCmdMsg来截获ID_OK请高手指教
因为本人想在CPropertySheet中的CPropertyPage的OnApply都执行完之后才判断是否关闭CPropertySheet,所以不可以OnCmdMsg来截获ID_OK请高手指教
添加Sheet类的OnSysCommand(UINT nID, LPARAM lParam)函数,然后在其中添加代码:
if(nID = SC_CLOSE)
//处理关闭按钮;这两种方法都能满足你的要求,呵呵
1。用OnDestory()直接return,SHEET仍然会关闭,但是在DefWindowProc中就无法再截获WM_DESTORY了
2。OnClose是无法有效截获的,因为
下面时关闭方式不同发送的消息如下:
1)点击OK按钮:OnOk-WM_DESTROY
2) 点击Cancel按钮:OnCancel-WM_DESTROY
3) 点击×按钮:WM_CLOSE-ONCANCEL-WM_DESTROY
4) 键盘ESC按键:OnCancel-WM_DESTROY
所以按下OK键不能产生WM_CLOSE
3。OnSysCommand之前也试过,无效只有DefWindowProc能截获,不过无论点返回窗口都会关闭。估计是已经接受此消息.
只要一直返回TRUE就可以了。