OnOk OnCancel OnClose OnDestroy DestroyWindow?这些消息和函数的关系?
如题,到底如何调用才能真正的释放一个对话框的资源
[解决办法]
如果是对话框类(CDialog)在堆栈上创建的模态对话框, 需要在该对话框销毁的时候 调用DestroyWindow清除窗口对象,然后 delete 掉c++ 中 的对象。
http://blog.csdn.net/icefairy/archive/2009/11/12/4803116.aspx
[解决办法]
OnClose → OnOk|OnCancel → DestroyWindow → OnDestroy
[解决办法]
OnOK和OnCancel对模式对话框而言就能完全的关闭对话框,但是对非模式对话框只是将对话框隐藏,如果要关闭非模式对话框的话一定要调用DestroyWindow
[解决办法]
[解决办法]
1.如果用户按下窗体的“X”按钮,系统会发送WM_SYSCOMMAND的消息,其中窗体接受到的消息顺序为:
[SEND]WM_SYSCOMMAND (SC_CLOSE, 0x011503B3)
[SEND]WM_CLOSE (0x00000000, 0x00000000)
*[POST]WM_COMMAND (IDCANCEL, 0x000B0816)
这里是OnClose函数调用了OnCancel函数
2.当用户按下对话框的OK按钮时,如果程序没有重载父对话框类的OnOK方法,那么先接受到WM_COMMAND消息,因为默认窗体过程会调用EndDialog函数,所以WM_CLOSE消息不会发送,也就是OnClose不会被调用
3.当用户按下对话框的OK按钮时,如果程序重载了父对话框类的OnOK方法,并且在子类的OnOK中没有调用父类的OnOK方法。那么对话框使用发送WM_CLOSE消息来关闭,此时EndDialog函数不会被调用。
首先接受WM_COMMAND消息,然后接受WM_CLOSE消息。这里是OnOK函数调用了OnClose函数