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