この記事では、ビジュアル編集コンテナー アプリケーションのメニューやその他のリソースに対して行う必要がある変更について説明します。
コンテナー アプリケーションでは、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 | オブジェクトを作成できませんでした。 オブジェクトがシステム レジストリに入力されていることを確認します。 |