ウィンドウ クラスの派生
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
を使用して作成されます。フォーム:
ダイアログ ボックスなどのダイアログ テンプレート リソースに基づくフォーム ビューは、クラスCFormView
、CRecordView
またはCDaoRecordView
.コントロール:
ボタン、リスト ボックス、コンボ ボックスなどのコントロールは、CWnd
から派生する他のクラスを使用して作成されます。 コントロールに関するトピックを参照してください。コントロール バー:
コントロールを含む子ウィンドウ。 たとえば、ツール バーやステータス バーが該当します。 「コントロール バー」を参照してください。
ウィンドウ クラスの階層構造
"MFC のリファレンス" の MFC 階層図を参照してください。 ビューについては、「ドキュメントおよびビュー アーキテクチャ」を参照してください。 ダイアログ ボックスについては、「ダイアログ ボックス」を参照してください。
独自の特殊用途ウィンドウ クラスの作成
クラス ライブラリに用意されているウィンドウ クラスに加えて、特殊用途の子ウィンドウが必要な場合があります。 このようなウィンドウを作成するには、独自 CWnd
の派生クラスを作成し、フレームまたはビューの子ウィンドウにします。 フレームワークは、ドキュメントのフレーム ウィンドウのクライアント領域の範囲を管理することに注意してください。 クライアント領域のほとんどはビューによって管理されますが、コントロール バーや独自のカスタム ウィンドウなど、他のウィンドウは、ビューと領域を共有する場合があります。 場合によっては、クラス CView
内のメカニズムと対話し、 CControlBar
フレーム ウィンドウのクライアント領域に子ウィンドウを配置する必要があります。
ウィンドウ オブジェクトの作成とそれによって管理されるウィンドウについては、「ウィンドウの作成」を参照してください。