メニューとリソース (OLE)
このトピックと以降のいくつかのトピックでは、MFC OLE ドキュメント アプリケーションでメニューとリソースを使う方法について説明します。
オブジェクトのリンクと埋め込み (OLE: Object Linking and Embedding) によるビジュアル編集機能を使うときは、コンテナー アプリケーションおよびサーバー (コンポーネント) アプリケーションの起動モードと操作モードが複数あるため、OLE ドキュメント アプリケーションには特別なメニューなどのリソースが必要です。 たとえば、フル サーバー アプリケーションは、次の 3 つのモードのいずれかで実行されます。
スタンドアロン
埋め込み先編集 (コンテナーのコンテキスト内でアイテムを編集する)
オープン (コンテナーのコンテキスト外でアイテムを編集する。別のウィンドウの場合もある)
したがって、各モードに対応する 3 種類のメニュー構成を用意する必要があります。 アクセラレータ テーブルも 3 つ必要です。 コンテナー アプリケーションには、埋め込み先編集の有効化をサポートするものとしないものがあります。サポートするときは、専用のメニュー構造とアクセラレータ テーブルを用意します。
埋め込み先編集を有効にするには、コンテナー アプリケーションとサーバー アプリケーションで、メニュー、ツール バー、ステータス バー用の空間をネゴシエートする必要があります。 あらゆるリソースは、この点を考慮してデザインする必要があります。 「メニューとリソース:メニューのマージこのトピックの詳細について説明します。
アプリケーション ウィザードを使って作成した OLE ドキュメント アプリケーションは、独立したメニューと最大で 4 つのアクセラレータ テーブル リソースを持つことができます。 これらのリソースは、次のように使い分けられます。
リソース名 |
使用方法 |
---|---|
IDR_MAINFRAME |
ファイルを開いていない MDI アプリケーション、またはファイルを開いているかどうかに関係なく SDI アプリケーションで使用します。 非 OLE アプリケーションの標準メニューです。 |
IDR_<project>TYPE |
ファイルを開いた MDI アプリケーションで使用します。 アプリケーションがスタンドアロンとして実行されているときに使います。 非 OLE アプリケーションの標準メニューです。 |
IDR_<project>TYPE_SRVR_IP |
オブジェクトを埋め込み先で開くときに、サーバーまたはコンテナーで使用します。 |
IDR_<project>TYPE_SRVR_EMB |
埋め込み先編集の有効化を使わずにオブジェクトを開くときに、サーバー アプリケーションで使用します。 |
これらのリソース名は、メニューとアクセラレータ テーブルを表します。 アプリケーション ウィザードを使わずに作成された MFC アプリケーションでも、同様の形式を使用する必要があります。
コンテナーやサーバーについて、また埋め込み先編集の有効化でメニューを結合する方法については、以下のトピックを参照してください。