次の方法で共有


メニューとリソース : サーバーの変更点

更新 : 2007 年 11 月

ここでは、ビジュアル編集サーバー (コンポーネント) アプリケーションのメニューなどのリソースに必要な変更内容について説明します。サーバーの起動モードにはスタンドアロン、埋め込み、および埋め込み先編集の 3 種類があるため、メニューなどのリソースに大幅な追加が必要です。「メニューとリソース (OLE)」で説明したように、最大 4 組のメニューを作成できます。MDI のフル サーバー アプリケーションでは 4 個のメニューをすべて使用しますが、ミニサーバーでは 3 個しか使用しません。アプリケーション ウィザードは、サーバーのタイプに応じて必要な構成のメニューを生成します。また、生成されたメニューのカスタマイズが必要になる場合もあります。

アプリケーション ウィザードを使わない場合は、MFC のサンプル アプリケーション HIERSVR のリソース スクリプト HIERSVR.RC を参考にして、変更の実装方法を確認してください。

ここでは、次のトピックについて説明します。

サーバー メニューの変更点

サーバー (コンポネーント) アプリケーションには、OLE のビジュアル編集をサポートするためのメニュー リソースを追加する必要があります。アプリケーションをスタンドアロン モードで起動するときのメニューを変更する必要はありませんが、埋め込み先編集の有効化をサポートするため、および独立したウィンドウを開いて (サーバーとして) 起動するときのために、2 個のメニュー リソースを追加する必要があります。この 2 個のメニュー リソースは、フル サーバーとミニサーバーの両方のアプリケーションで必要です。

  • 埋め込み先編集の有効化をサポートするアプリケーションを作成するには、スタンドアロン モードで使うメニュー リソースとよく似たメニュー リソースを作成する必要があります。このメニューには、[ファイル] メニューと [ウィンドウ] メニュー (およびデータ以外のアプリケーション操作に関するその他のメニュー) がありません。これらのメニューはコンテナ アプリケーションが用意します。メニュー結合手法の詳細と例については、「メニューとリソース : メニューの結合」を参照してください。

  • 独立したウィンドウを開くサーバーを作成するときは、スタンドアロン モードで使うメニュー リソースとほとんど同じメニュー リソースを作成する必要があります。このメニュー リソースに対する唯一の変更点は、複合ドキュメントに埋め込まれているオブジェクトをサーバーが操作するときに、メニュー項目の名前を書き換える点です。

これらの変更のほか、リソース ファイルに AFXOLESV.RC をインクルードする必要があります。AFXOLESV.RC は、MFC ライブラリを利用するために必要です。このファイルは、MFC\Include サブディレクトリにあります。

サーバー アプリケーションのアクセラレータ テーブルの変更点

サーバー アプリケーションには、前述のメニュー リソースに対応する 2 個の新しいアクセラレータ キー テーブルを追加する必要があります。第 1 のアクセラレータ テーブルは、サーバー アプリケーションが埋め込み先編集用に起動されたときに使用されます。このテーブルには、ビューのアクセラレータ テーブルのエントリのうち、[ファイル] メニューと [ウィンドウ] メニュー用のエントリ以外がすべて含まれます。

第 2 のテーブルは、ビューのアクセラレータ テーブルとほとんど同じです。ただし、「サーバー メニューの変更点」で説明したメニューの変更に合わせて内容を書き換えておきます。

アクセラレータ テーブルの変更例については、MFC OLE サンプル アプリケーション HIERSVR のファイル HIERSVR.RC 内の IDR_MAINFRAME に対するアクセラレータ テーブル IDR_HIERSVRTYPE_SRVR_IPIDR_HIERSVRTYPE_SRVR_EMB を比較してください。埋め込み先編集用のテーブルには、[ファイル] メニューと [ウィンドウ] メニュー用のアクセラレータがありません。独立したウィンドウを開くときのアクセラレータ キー テーブルは、元のテーブルと同じです。

サーバー アプリケーションのストリング テーブルの変更点

サーバー アプリケーションを作成するときは、ストリング テーブルを 1 つだけ追加します。この文字列は、OLE の初期化が失敗したことを示すメッセージとして使用されます。例として、アプリケーション ウィザードが生成するストリング テーブルのエントリを次に示します。

ID

文字列

IDP_OLE_INIT_FAILED

OLE の初期化に失敗しました。OLE ライブラリが正しいバージョンのものであることを確認してください。

ミニサーバーの変更点

ミニサーバーを作成する場合も、フル サーバーと同じ変更を加えます。ただし、ミニサーバーはスタンドアロン モードでは実行されないので、メイン メニューがかなり小さくなります。アプリケーション ウィザードが生成するメイン メニューには、[アプリケーションの終了] と [バージョン情報] だけで構成される [ファイル] メニューだけがあります。埋め込み先編集用と独立したウィンドウ用のメニューおよびアクセラレータは、フル サーバーのメニューと同じです。

参照

概念

メニューとリソース (OLE)

メニューとリソース : メニューの結合