Q:
今天在学习模式和无模式对话框时发现无模式对话框需要在退出时销毁,否则会发生内存泄露,
我便在此无模式对话框的OnOK()中调用DestroyWindow(),然后重载OnDestory(),其中delete this;但是奇怪的是我调用的明明是虚拟函数DestroyWindow()但系统却调用消息OnDestroy(),是我的理解有误,还是有别的原因?希望高手不吝赐教!
A:
这两个函数可以理解成一个是主动的, 另一个是被动的.
用户主动调用DestroyWindows来关闭窗口, 而当窗口被关闭时OnDestroy函数 被 调用!
你调用DestroyWindow(),那么系统就会发一个WM_DESTROY的消息,这个消息会调用OnDestroy()函数.
DestroyWindow() ------> WM_DESTROY+ WM_NCDESTROY ------>OnDestroy()
发消息 响应消息映射
本文探讨了在编程中无模式对话框的销毁机制。通过主动调用DestroyWindow()函数关闭窗口,系统将发送WM_DESTROY消息并触发OnDestroy()函数执行,完成资源释放过程。
1836

被折叠的 条评论
为什么被折叠?



