若要檢視英文版的文章,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

CWnd::DestroyWindow

 

終結視窗視窗附加至 CWnd 物件。


virtual BOOL DestroyWindow( );

如果不是零,終結視窗;則為 0。

DestroyWindow 成員函式將適當的資訊加入至視窗中停用此和移除輸入焦點。如果 CWnd 在檢視器鏈結的頂端,它會毀棄視窗功能表,清除應用程式佇列,終結未完成的計時器,也會移除剪貼簿擁有權,並中斷剪貼簿檢視器鏈結。傳送 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

顯示: