この記事では、ビジュアル編集サーバー (コンポーネント) アプリケーションのメニューやその他のリソースに対して行う必要がある変更について説明します。 サーバー アプリケーションは、スタンドアロン、埋め込み、またはインプレースの 3 つのモードのいずれかで起動できるため、メニュー構造やその他のリソースに多くの追加が必要です。 「メニューとリソース (OLE)」の記事で説明されているように、最大 4 セットのメニューがあります。 4 つすべてが MDI フル サーバー アプリケーションに使用されますが、ミニサーバーには 3 つしか使用しません。 アプリケーション ウィザードによって、必要なサーバーの種類に必要なメニュー レイアウトが作成されます。 一部のカスタマイズが必要な場合があります。
アプリケーション ウィザードを使用しない場合は、HIERSVR を確認できます。RC は、MFC サンプル アプリケーション HIERSVR のリソース スクリプトであり、これらの変更がどのように実装されているかを確認します。
この記事で取り上げるトピックは次のとおりです。
サーバー メニューの追加
サーバー (コンポーネント) アプリケーションには、OLE ビジュアル編集をサポートするためにメニュー リソースが追加されている必要があります。 アプリケーションをスタンドアロン モードで実行するときに使用されるメニューは変更する必要はありませんが、アプリケーションをビルドする前に、2 つの新しいメニュー リソースを追加する必要があります。1 つはインプレース アクティブ化をサポートし、1 つはサーバーが完全に開かれていることをサポートするためです。 両方のメニュー リソースは、フル サーバー アプリケーションとミニサーバー アプリケーションで使用されます。
インプレース アクティブ化をサポートするには、スタンドアロン モードで実行するときに使用されるメニュー リソースとよく似たメニュー リソースを作成する必要があります。 このメニューの違いは、ファイルとウィンドウの項目 (およびデータではなく、アプリケーションを処理するその他のメニュー項目) がないことです。 コンテナー アプリケーションは、これらのメニュー項目を提供します。 このメニューマージ手法の詳細と例については、「 メニューとリソース: メニューのマージ」を参照してください。
完全に開かれたアクティブ化をサポートするには、スタンドアロン モードで実行するときに使用されるメニュー リソースとほぼ同じメニュー リソースを作成する必要があります。 このメニュー リソースに対する唯一の変更は、サーバーが複合ドキュメントに埋め込まれた項目で動作しているという事実を反映するように一部の項目が書き換えられます。
この記事に記載されている変更に加えて、リソース ファイルに AFXOLESV を含める必要があります。RC。これは、Microsoft Foundation Class Library の実装に必要です。 このファイルは MFC\Include サブディレクトリにあります。
サーバー アプリケーション アクセラレータ テーブルの追加
2 つの新しいアクセラレータ テーブル リソースをサーバー アプリケーションに追加する必要があります。これらは、前に説明した新しいメニュー リソースに直接対応します。 最初のアクセラレータ テーブルは、サーバー アプリケーションが所定の位置でアクティブ化されるときに使用されます。 これは、[ファイル] メニューと [ウィンドウ] メニューに関連付けられているエントリを除き、ビューのアクセラレータ テーブル内のすべてのエントリで構成されます。
2 番目のテーブルは、ビューのアクセラレータ テーブルのほぼ正確なコピーです。 サーバー メニューの追加で説明されている完全に開いているメニューで行われた並列変更の違い。
これらのアクセラレータ テーブルの変更の例については、IDR_HIERSVRTYPE_SRVR_IPおよびIDR_HIERSVRTYPE_SRVR_EMB アクセラレータ テーブルを HIERSVR のIDR_MAINFRAMEと比較します。MFC OLE サンプル HIERSVR に含まれる RC ファイル。 ファイル アクセラレータとウィンドウ アクセラレータはインプレース テーブルに欠けており、それらの正確なコピーが埋め込みテーブルにあります。
サーバー アプリケーションの文字列テーブルの追加
サーバー アプリケーションで必要な文字列テーブルの追加は 1 つだけです。OLE の初期化が失敗したことを示す文字列です。 たとえば、アプリケーション ウィザードによって生成される文字列テーブル エントリを次に示します。
| 身分証明書 | 糸 |
|---|---|
| IDP_OLEの初期化に失敗しました | OLE の初期化に失敗しました。 OLE ライブラリが正しいバージョンであることを確認します。 |
ミニサーバーの追加
ミニサーバーには、上記のフルサーバーの場合と同じ追加が適用されます。 ミニサーバーはスタンドアロン モードでは実行できないため、メイン メニューははるかに小さくなります。 アプリケーション ウィザードによって作成されたメイン メニューには、[ファイル] メニューがあり、[終了] と [アバウト] の項目のみが含まれています。 ミニサーバーの埋め込みメニューとインプレース メニューとアクセラレータは、フル サーバーのメニューと同じです。