次の方法で共有


メニューとリソース: コンテナーの追加

この記事では、ビジュアル編集コンテナー アプリケーションのメニューやその他のリソースに対して行う必要がある変更について説明します。

コンテナー アプリケーションでは、2 種類の変更を行う必要があります。OLE ビジュアル編集をサポートするための既存のリソースへの変更と、インプレース アクティブ化に使用される新しいリソースの追加です。 アプリケーション ウィザードを使用してコンテナー アプリケーションを作成する場合、これらの手順は行われますが、カスタマイズが必要な場合があります。

アプリケーション ウィザードを使用しない場合は、OCLIENT を確認できます。RC (OCLIENT サンプル アプリケーションのリソース スクリプト) を使用して、これらの変更がどのように実装されているかを確認します。 MFC OLE サンプル OCLIENT を参照してください。

この記事で取り上げるトピックは次のとおりです。

コンテナー メニューの追加

[編集] メニューに次の項目を追加する必要があります。

アイテム 目的
新しいオブジェクトの挿入 [OLE オブジェクトの挿入] ダイアログ ボックスを開き、リンクまたは埋め込みアイテムを文書に挿入します。
リンクの貼り付け クリップボードのアイテムへのリンクを文書に貼り付けます。
OLE 動詞 選択した項目の主動詞を呼び出します。 このメニュー項目のテキストは、選択した項目の主動詞を反映するように変更されます。
リンク [OLE リンクの編集] ダイアログ ボックスを開き、既存のリンク アイテムを変更します。

この記事に記載されている変更に加えて、ソース ファイルには AFXOLECL を含める必要があります。RC。これは、Microsoft Foundation Class Library の実装に必要です。 新しいオブジェクトの挿入のみが必要なメニューの追加です。 その他の項目は追加できますが、ここに記載されているものが最も一般的です。

含まれている項目のインプレース アクティブ化をサポートする場合は、コンテナー アプリケーションの新しいメニューを作成する必要があります。 このメニューは、ファイルを開くときに使用されるのと同じ [ファイル] メニューと [ウィンドウ] ポップアップ メニューで構成されますが、その間に 2 つの区切り記号が配置されています。 これらの区切り記号は、サーバー (コンポーネント) 項目 (アプリケーション) がオンになっているときにメニューを配置する場所を示すために使用されます。 このメニューマージ手法の詳細については、「 メニューとリソース: メニューのマージ」を参照してください。

コンテナー アプリケーション アクセラレータ テーブルの追加

インプレース アクティブ化をサポートしている場合は、コンテナー アプリケーションのアクセラレータ テーブル リソースに対する小さな変更が必要です。 最初の変更により、ユーザーはエスケープ キー (ESC) を押してインプレース編集モードを取り消すことができます。 次のエントリをメイン アクセラレータ テーブルに追加します。

身分証明書 タイプ
ID_CANCEL_EDIT_CNTR VK_ESCAPE VIRTKEY

2 つ目の変更は、インプレース アクティブ化用に作成された新しいメニュー リソースに対応する新しいアクセラレータ テーブルを作成することです。 このテーブルには、上記のVK_ESCAPEエントリに加えて、[ファイル] メニューと [ウィンドウ] メニューのエントリがあります。 次の例は、MFC サンプル CONTAINER でインプレース アクティブ化のために作成されたアクセラレータ テーブルです。

身分証明書 タイプ
ID_FILE_NEW Ctrl + N VIRTKEY
ID_FILE_OPEN Ctrl + O VIRTKEY
ID_FILE_SAVE Ctrl + S VIRTKEY
ID_FILE_PRINT Ctrl + P VIRTKEY
ID_NEXT_PANE VK_F6 VIRTKEY
ID_PREV_PANE Shift + VK_F6 VIRTKEY
ID_CANCEL_EDIT_CNTR VK_ESCAPE VIRTKEY

コンテナー アプリケーションの文字列テーブルの追加

コンテナー アプリケーションの文字列テーブルに対する変更のほとんどは、「コンテナー メニューの追加」で説明されている追加 のメニュー項目に対応しています。 各メニュー項目が表示されるときにステータス バーに表示されるテキストを指定します。 たとえば、アプリケーション ウィザードによって生成される文字列テーブル エントリを次に示します。

身分証明書
IDP_OLEの初期化に失敗しました OLE の初期化に失敗しました。 OLE ライブラリが正しいバージョンであることを確認します。
IDP_FAILED_TO_CREATE オブジェクトを作成できませんでした。 オブジェクトがシステム レジストリに入力されていることを確認します。

こちらも参照ください

メニューとリソース (OLE)
メニューとリソース: サーバーの追加