アークピットのホームページに戻る

WinAPIトピックのトップページに戻る

APIトピックの各章に移動する

ダウンロードのページに移動する
ダウンロードができ
ない場合の対処法
 

ページ移動

2-4-2. MDIの機能と名称

 マルチドキュメントインターフェース(MDI)は共通のGUIを提供します。ここではMDIの機能と各部の名称をまとめます。

MDIとSDI

 MDIはマルチ・ドキュメント・インターフェースのことで、対の用語がSDI(シングル・ドキュメント・インターフェース)です。アプリケーションのウィンドウは、普通はこれらの内のどちらかです。一部の例外がプロパティシートと、モードレスダイアログボックスですがこれらは別の章で説明します。 MDIは目的の異なるウィンドウを、自己のウィンドウ内で複数表示する機能です。MDIの子ウィンドウは、メニュー以外は、ほぼオーバーラップウィンドウと同じ機能を持ちます。そしてキーやメニューを含めて、ある一定した操作法を提供します。これは、ユーザの操作を限定しますが、逆に共通のインターフェースを提供することによる利点もあります。Windowsは操作性の統一を重視しています。

MDIのウィンドウと名称

MDIアプリケーションの図
図 2−4−2a

 まず名称ですが、メインウィンドウのことをMDIではフレームウィンドウと言います。上記の青枠の中に2つのウィンドウがありますが、これをMDI子ウィンドウと言います。このうち下のウィンドウは最小化されています。そして、その子ウィンドウを表示するグレイのエリア(青枠の内部)をクライアントウィンドウと呼びます。子ウィンドウを総称してドキュメントウィンドウとも呼びます。重要なのはクライアントウィンドウです。クライアントウィンドウは、MDI用に用意されたウィンドウクラスで登録します。このウィンドウにMDIの大部分の機能が盛り込まれています。  MDI子ウィンドウは、クライアントエリア内に表示します。もしこのエリアをはみ出したら、自動的にクライアントエリア上にスクロールバーが表示されます。

MDI子ウィンドウを最大化

 図2−4−2aでは、MDI子ウィンドウは、通常の状態と最小化の例を示しています。MDIではこの他に、最大化の状態もあります。

MDI子ウィンドウの最大化の図
図 2−4−2b

 MDI子ウィンドウを最大化すると、クライアントエリア一杯に子ウィンドウの内部を表示します。そして子ウィンドウのタイトル部は、フレームウィンドウのあちこちに分散して配置されます。図2−4−2bにそれを示します。タイトルは、[と]に囲まれた部分に追加して表示されます。またメニューの左端と右端に、コントロールメニューと最小化、復元、クローズの4つのボタンを表示します。最大化している場合は、他のMDI子ウィンドウに切り替えるには、「ウィンドウ」メニューを使用します。

メニュー関連の操作

 MDI機能は、メニュー関連の操作がいくつかあります。まず最大化時のMDI子ウィンドウのコントロールメニューは、メインフレームではメニューの扱いです。メニュー関連のAPI では、MF_BYPOSITION のパラメータで、位置を指定しますが、コントロールメニューが0になります。つまり「ファイル」コマンドは、MDI子ウィンドウが最大化されていれば、位置は1ですが、そうでなければ0になります。  MDIは「ウィンドウ」コマンドのポップアップメニューの最後に、オープン中のMDI子ウィンドウを自動的に追加します。またアクティブの移動に伴いチェックマークを切り替えます。これらは自動的に行ないます。またウィンドウのコマンドは大部分がクライアントウィンドウにメッセージを送るだけで対応できます。  MDI子ウィンドウの多くは、独自の機能を持ちます。そしてその機能は、メニューで実行することが多いため、MDI子ウィンドウのアクティブを切り替える度に、メニューを変更します。例えば、文章を入力する子ウィンドウと図面を作成する子ウィンドウがあったとします。すると、文章を入力する子ウィンドウにアクティブが移ると、「書式」メニューが現れ、図面を作成する子ウィンドウにアクティブが移ると、「描画」メニューが現れます。これらの機能は、MDIからのメッセージに対応して、ユーザがプログラミングします。

キーによるの操作

 MDI子ウィンドウのコントロールメニューのアクセラレータキーは、 MDI以外の子ウィンドウのアクセラレータキーとは異なります。MDI子ウィンドウでは、[Alt]+[-](マイナス)キーはコントロールメニューをオープンし、[Ctrl]+[F4]キーはアクティブな子ウィンドウをクローズします。また、[Ctrl]+[F6]キーは次の子ウィンドウをアクティブ化します。

ページ移動