メニューとリソース (OLE)
更新 : 2007 年 11 月
このトピックと以降のいくつかのトピックでは、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 アプリケーションでも、同様の形式を使用する必要があります。
コンテナやサーバーについて、また埋め込み先編集の有効化でメニューを結合する方法については、以下のトピックを参照してください。