BOOL CXFileRowDlg::DestroyWindow() 
{
// TODO: Add your specialized code here and/or call the base class

return CDialog::DestroyWindow();
}void CXFileRowDlg::OnDestroy() 
{
CDialog::OnDestroy();

// TODO: Add your message handler code here

}上面这两个有什么区别
我应该在哪一个里回收内存

解决方案 »

  1.   

    DestroyWindow( );
    这个函数销毁一个与CWnd对象相连接的Windows窗口。DestroyWindow成员函数向窗口发送一个适当的消息,以使该窗口变为非激活的并移去输入焦点。它还销毁窗口的菜单,清除应用程序的队列,销毁定时器,清除剪贴板拥有权,并且如果CWnd对象位于剪贴板观察器链的顶部,还打断剪贴板观察器链。它向窗口发送WM_DESTROY消息和WM_NCDESTROY消息。它不销毁CWnd对象 OnDestroy();
    架调用这个成员函数以通知CWnd对象它将被销毁。OnDestroy是在CWnd对象已经从屏幕上清除以后被调用的。 
    首先为被销毁的CWnd调用OnDestroy,然后当CWnd的子窗口被销毁时为它们调用OnDestroy。可以假定当OnDestroy运行的时候,所有的子窗口依然存在。 
    如果被销毁的CWnd对象是剪贴板观察器链(通过调用SetClipboardViewer成员函数设置)的一部分,CWnd必须在从OnDestroy函数返回之前调用ChangeClipboardChain成员函数,将自己从剪贴板观察器链中清除。
      

  2.   

    DestroyWindow()在什么时候被触发
      

  3.   

    DefWindowProc()接受到WM_CLOSE消息的时候就会用DestroyWindow()把窗口清除