Share via


ウィンドウ クラスの派生

ウィンドウの作成では、CWnd クラスから直接作成することも、CWnd から新しいウィンドウ クラスを派生することもできます。 通常は、この方法で独自のカスタム ウィンドウを作成します。 ただし、フレームワーク プログラムで使用されるほとんどのウィンドウは、この方法ではなく、MFC で用意される CWnd の派生フレーム ウィンドウ クラスを基にして作成されます。

フレーム ウィンドウ クラス

  • CFrameWnd
    単一のドキュメントおよびそのビューを囲む、シングル ドキュメント インターフェイス (SDI ) のフレーム ウィンドウ用に使用します。 フレーム ウィンドウとは、アプリケーション用のメイン フレーム ウィンドウ、および現在のドキュメント用のフレーム ウィンドウの両方を指します。

  • CMDIFrameWnd
    MDI アプリケーション用のメイン フレーム ウィンドウとして使用します。 メイン フレーム ウィンドウは、すべての MDI ドキュメント ウィンドウのコンテナーで、ドキュメント ウィンドウとメニュー バーを共有します。 MDI フレーム ウィンドウは、デスクトップ上に表示される、最上位のウィンドウです。

  • CMDIChildWnd
    MDI メイン フレーム ウィンドウ内で開かれるドキュメントごとに使用します。 各ドキュメントとそのビューは、MDI メイン フレーム ウィンドウに格納される MDI 子フレーム ウィンドウに囲まれます。 MDI 子ウィンドウは、標準のフレーム ウィンドウによく似ていますが、デスクトップに配置されるのではなく、MDI フレーム ウィンドウ内に格納されます。 また、MDI 子ウィンドウは自身のメニュー バーを持たないので、子ウィンドウを格納する MDI フレーム ウィンドウのメニュー バーを共有する必要があります。

    詳細については、「フレーム ウィンドウ」を参照してください。

CWnd から派生するその他のウィンドウ クラス

フレーム ウィンドウのほか、次の主要カテゴリのウィンドウも CWnd から派生します。

  • ビュー
    ビューは、CWnd 派生クラスの CView (またはその派生クラスの 1 つ) を使用して作成します。 ビューは、ドキュメントと結合されて、ドキュメントとユーザー間の媒介手段として機能します。 ビューは、MDI 子フォームではなく子ウィンドウです。子ウィンドウは、通常、SDI フレーム ウィンドウまたは MDI 子フレーム ウィンドウのクライアント領域 (あるいはツール バーまたはステータス バーが占有しないクライアント領域) を占有します。

  • ダイアログ ボックス
    ダイアログ ボックスは、CWnd 派生クラスの CDialog を使用して作成します。

  • フォーム
    ダイアログ ボックスなど、ダイアログ テンプレート リソースをベースにしたフォーム ビューは、CFormViewCRecordView、または CDaoRecordView のいすれかを使用して作成します。

  • コントロール
    ボタン、リスト ボックス、コンボ ボックスなどのコントロールは、CWnd. から派生したクラスを使用して作成します。 「コントロール」を参照してください。

  • コントロール バー
    コントロールを格納する子ウィンドウです。 例としては、ツール バーやステータス バーがあります。 「コントロール バー」を参照してください。

ウィンドウ クラスの階層構造

『MFC リファレンス』の「階層図」を参照してください。 ビューについては、「ドキュメント/ビュー アーキテクチャ」で説明しています。 ダイアログ ボックスについては、「ダイアログ ボックス」で説明しています。

特別な用途を持つ独自のウィンドウ クラスの作成

クラス ライブラリで用意されているウィンドウ クラスのほかに、特別な用途を持つ子ウィンドウの作成が必要な場合があります。 特別な用途を持つ子ウィンドウを作成するには、独自の CWnd 派生クラスを作成し、これをフレームまたはビューの子ウィンドウにします。 フレームワークが、ドキュメント フレーム ウィンドウのクライアント領域の範囲を管理することに注意してください。 ほとんどのクライアント領域はビューによって管理されますが、コントロール バーや独自のカスタム ウィンドウなど、その他のウィンドウはクライアント領域をビューと共有できます。 フレーム ウィンドウのクライアント領域内に子ウィンドウを配置するには、CView クラスおよび CControlBar クラスの機能を連係して利用する必要があります。

ウィンドウの作成」では、ウィンドウ オブジェクトと、それが管理する Windows のウィンドウの作成について説明しています。

参照

概念

ウィンドウ オブジェクト