CWnd::DestroyWindow
更新 : 2007 年 11 月
CWnd オブジェクトに関連付けられた Windows のウィンドウを破棄します。
virtual BOOL DestroyWindow( );
戻り値
ウィンドウが破棄された場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
DestroyWindow メンバ関数はウィンドウを非アクティブにし入力フォーカスを削除するために適切なメッセージを送ります。このほかに、ウィンドウのメニューの破棄、アプリケーション キューのフラッシュ、未経過のタイマの破棄、クリップボード所有権の除去、CWnd が先頭ならばクリップボード ビューア チェインの破棄を行います。この関数はウィンドウへ WM_DESTROY メッセージと WM_NCDESTROY メッセージを送ります。この関数で CWnd オブジェクトを破棄することはありません。
DestroyWindow は、クリーンアップを実行するプレイス ホルダーです。DestroyWindow は仮想関数であるため、Class View の任意の 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