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

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

参照

概念

MFC の OLE