CWnd::DestroyWindow

销毁Windows窗口附加到 CWnd 对象。

virtual BOOL DestroyWindow( );

返回值

非零,则销毁窗口;否则为0。

备注

DestroyWindow 成员函数将相应信息到窗口停用并移除输入焦点。 如果 CWnd 是在浏览器链的顶部,它销毁windows的菜单中,对于应用程序队列,销毁处理计时器,还移除剪贴板所有权,以及中断剪贴板浏览器链。 其发送 WM_DESTROYWM_NCDESTROY 信息到窗口。 但不销毁 CWnd 对象。

DestroyWindow 是进行清理一个位置容纳器。 由于 DestroyWindow 是虚函数,在所有 CWnd-在选件类视图的派生类公开。 但,即使您重写在您的 CWnd的此功能的派生类,DestroyWindow 不一定调用。 如果 DestroyWindow 在MFC代码未调用,则必须显式调用它在代码中,如果您希望此调用。

假定,例如,重写了 CViewDestroyWindow 派生类。 因为MFC源代码不对 DestroyWindow 其任何 CFrameWnd派生类,重写的 DestroyWindow 不会调用,除非您显式调用它。

如果窗口是任何窗口的父级,自动销毁。这些子窗口,当销毁时父窗口。 DestroyWindow 成员函数首先然后销毁子窗口。

DestroyWindow 成员函数来销毁 CDialog::Create创建的无模式对话框。

如果销毁的 CWnd 是子窗口,并没有 WS_EX_NOPARENTNOTIFY 样式设置,则 WM_PARENTNOTIFY 发送到父级。

示例

// CModeless is a CDialog class representing a modeless dialog
// Destruction of the modeless dialog involves calling DestroyWindow in 
// OnOK() & OnCancel() handlers
void CModeless::OnOK() 
{ 
   if (!UpdateData(TRUE)) 
   {
      TRACE(_T("UpdateData failed during dialog termination\n"));
      // The UpdateData routine will set focus to correct item
      return;
   }
   DestroyWindow();
}

void CModeless::OnCancel()
{
   DestroyWindow();
}

要求

Header: afxwin.h

请参见

参考

CWnd 类

层次结构图

CWnd::OnDestroy

CWnd::Detach

DestroyWindow