ウィンドウ クラスの派生

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

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

CFrameWnd
単一ドキュメントとそのビューを囲む SDI フレーム ウィンドウに使用されます。 フレーム ウィンドウは、アプリケーションのメイン フレーム ウィンドウであり、現在のドキュメントのフレーム ウィンドウでもあります。

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

CMDIChildWnd
MDI メイン フレーム ウィンドウで開かれる個々のドキュメントに使用されます。 各ドキュメントとそのビューは、MDI メイン フレーム ウィンドウに含まれている MDI 子フレーム ウィンドウの中に収まります。 MDI 子ウィンドウの外観は一般的なフレーム ウィンドウと非常に似ていますが、デスクトップ上に表示されるのではなく、MDI フレーム ウィンドウの内部に格納されます。 ただし、MDI 子ウィンドウには独自のメニュー バーがありません。 それを含む MDI フレーム ウィンドウのメニュー バーを共有する必要があります。

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

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

フレーム ウィンドウに加え、次に示すその他のいくつかの主なウィンドウ カテゴリが CWnd から派生しています。

  • ビュー:
    ビューは、CWnd の派生クラスである CView (またはそのいずれかの派生クラス) を使用して作成されます。 ビューはドキュメントにアタッチされ、ドキュメントとユーザーの仲介役として機能します。 ビューは、一般に SDI フレーム ウィンドウまたは MDI 子フレーム ウィンドウのクライアント領域 (または、ツール バーやステータス バーで占有されていないクライアント領域の部分) を占める子ウィンドウです (MDI 子ウィンドウではありません)。

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

  • フォーム:
    ダイアログ ボックスなどのダイアログ テンプレート リソースに基づくフォーム ビューは、クラス CFormViewCRecordViewまたは CDaoRecordView.

  • コントロール:
    ボタン、リスト ボックス、コンボ ボックスなどのコントロールは、CWnd から派生する他のクラスを使用して作成されます。 コントロールに関するトピックを参照してください。

  • コントロール バー:
    コントロールを含む子ウィンドウ。 たとえば、ツール バーやステータス バーが該当します。 「コントロール バー」を参照してください。

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

"MFC のリファレンス"MFC 階層図を参照してください。 ビューについては、「ドキュメントおよびビュー アーキテクチャ」を参照してください。 ダイアログ ボックスについては、「ダイアログ ボックス」を参照してください。

独自の特殊用途ウィンドウ クラスの作成

クラス ライブラリに用意されているウィンドウ クラスに加えて、特殊用途の子ウィンドウが必要な場合があります。 このようなウィンドウを作成するには、独自 CWndの派生クラスを作成し、フレームまたはビューの子ウィンドウにします。 フレームワークは、ドキュメントのフレーム ウィンドウのクライアント領域の範囲を管理することに注意してください。 クライアント領域のほとんどはビューによって管理されますが、コントロール バーや独自のカスタム ウィンドウなど、他のウィンドウは、ビューと領域を共有する場合があります。 場合によっては、クラス CView 内のメカニズムと対話し、 CControlBar フレーム ウィンドウのクライアント領域に子ウィンドウを配置する必要があります。

ウィンドウ オブジェクトの作成とそれによって管理されるウィンドウについては、「ウィンドウの作成」を参照してください。

関連項目

ウィンドウ オブジェクト