CWnd::DestroyWindow
CWnd のオブジェクトに結び付けられた Windows のウィンドウを破棄します。
virtual BOOL DestroyWindow( );
戻り値
ウィンドウが破棄された場合、; それ以外の場合は 0。
解説
DestroyWindow のメンバー関数はウィンドウにして非アクティブ化、入力フォーカスを削除するには、適切なメッセージを送信します。また、CWnd がビューアーのチェインの上部にあるペイン メニューを破棄し、アプリケーション キューをフラッシュし、未解決のタイマー、削除のクリップボードの所有権を破棄し、クリップボード ビューアーのチェインを中断します。これはウィンドウに WM_DESTROY と WM_NCDESTROY のメッセージを送信します。これは CWnd オブジェクトを破棄しません。
DestroyWindow はクリーンアップを実行するためのプレースホルダー IDC CTRL1 になります。DestroyWindow が仮想関数であるため、どの CWnd-ビュー クラスの派生クラスに示します。ただし、の CWndでこの関数をオーバーライドは、派生クラス DestroyWindow は必ずしも呼び出されません。DestroyWindow が MFC コードで呼び出すことが、呼び出されるように明示的に独自のコードで呼び出す必要があります。
たとえば、打ち消しました CViewの DestroyWindow 派生クラスとします。MFC ソース・コードが CFrameWndのいずれかの DestroyWindow を呼び出さないため、派生クラスでは、のオーバーライドされた 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();
}
必要条件
ヘッダー: afxwin.h