メニューとリソース (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 アプリケーションでも、同様の形式を使用する必要があります。

コンテナーやサーバーについて、また埋め込み先編集の有効化でメニューを結合する方法については、以下のトピックを参照してください。

参照

概念

MFC の OLE