次の方法で共有


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

更新 : 2007 年 11 月

ここでは、OLE ドキュメント アプリケーションでのビジュアル編集の処理手順について、および埋め込み先編集の有効化を処理するときの手順について詳しく説明します。埋め込み先編集の有効化を実現するには、サーバー (コンポーネント) アプリケーションとコンテナ アプリケーションの両方が対応する必要があります。ユーザーは、コンテナ ドキュメントのコンテキスト内のフレーム ウィンドウからサーバーの機能を利用できます。したがって、コンテナ アプリケーションとサーバー アプリケーションのリソースを調整する必要があります。

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

  • メニュー構成

  • ツール バーとステータス バー

メニュー構成

まず、メニュー構成を調整します。詳細については、Windows SDK の「Menu Programming Considerations」の「Menu Creation」を参照してください。

コンテナ アプリケーションは、埋め込みアイテムが埋め込み先でアクティブになっているときにだけ使用する新しいメニューを作成する必要があります。メニューには、少なくとも、以下の要素がこの順序で含まれています。

  1. ファイルを通常開くときと同じ内容の [ファイル] メニュー。通常、メニューと次の区切り線の間には何もメニュー項目を配置しません。

  2. 2 つの区切り線。

  3. ファイルを通常開くときと同じ内容の [ウィンドウ] メニュー (コンテナ アプリケーションが MDI の場合のみ)。アプリケーションによっては [オプション] メニューなどのほかのメニューがあります。埋め込みアイテムが埋め込み先でアクティブになっているときに、メニューに表示されます。

    syzb5sda.alert_note(ja-jp,VS.90).gifメモ :

    コンテナ ドキュメントの表示を操作するメニューは、他にもあります ([ズーム] など)。このようなコンテナ メニューは、このメニュー リソースの 2 つの区切り線の間に配置します。

サーバー (コンポーネント) アプリケーション側でも、埋め込み先編集用メニューを用意する必要があります。このメニューの構成は、通常のファイルを開く場合のメニューと同じです。ただし、[ファイル] メニューや [ウィンドウ] メニューなど、データ以外のサーバー ドキュメント操作用のメニュー項目がありません。通常、このメニューは以下の要素で構成されます。

  1. [編集] メニュー (ファイルを開くときと同じ内容)

  2. 区切り線

  3. オブジェクト編集メニュー (Scribble サンプル アプリケーションの [ペン] メニューなど)

  4. 区切り線

  5. [ヘルプ] メニュー

次に、コンテナ アプリケーションとサーバー アプリケーションの埋め込み先編集用メニュー例を示します。この例では、詳細は省略されています。まず、コンテナ アプリケーションの埋め込み先編集用メニューのエントリを示します。

IDR_CONTAINERTYPE_CNTR_IP MENU PRELOAD DISCARDABLE 
BEGIN
    POPUP "&File C1"
    MENUITEM SEPARATOR
    POPUP "&Zoom C2"
    MENUITEM SEPARATOR
    POPUP "&Options C3"
    POPUP "&Window C3"
END

2 個の連続する区切り線は、サーバーの左半分のメニューが表示される位置を示します。次に、サーバーの埋め込み先編集用メニューを示します。

IDR_SERVERTYPE_SRVR_IP MENU PRELOAD DISCARDABLE 
BEGIN
    POPUP "&Edit S1"
    MENUITEM SEPARATOR
    POPUP "&Format S2"
    MENUITEM SEPARATOR
    POPUP "&Help S3"
END

2 個の連続する区切り線は、コンテナの右半分のメニューが表示される位置を示します。コンテナ内のオブジェクトの埋め込み先編集用にサーバーが起動されると、結合されたメニューは次のようになります。

BEGIN
    POPUP "&File C1"
    POPUP "&Edit S1"
    POPUP "&Zoom C2"
    POPUP "&Format S2"
    POPUP "&Options C3
    POPUP "&Window C3"
    POPUP "&Help S3"
END

区切り線は、相手のメニューに置き換えられています。

サーバー アプリケーションには、埋め込み先編集用メニューに対応するアクセラレータ テーブルも用意しておきます。このテーブルは、コンテナ アプリケーションが自分のアクセラレータ テーブルに取り込みます。

埋め込みアイテムを埋め込み先編集用に起動すると、フレームワークは埋め込み先編集用メニューを読み込みます。次に、フレームワークはサーバー アプリケーションの埋め込み先編集の有効化用のメニューを取り出して、区切り線の位置に表示します。この結果、メニューが結合されます。ファイルとウィンドウ位置を操作するときは、コンテナのメニューを使います。埋め込みアイテムを操作するときは、サーバーのメニューを使います。

ツール バーとステータス バー

サーバー アプリケーションでは、新しいツール バーを作成し、そのビットマップを独立したファイルに保存する必要があります。アプリケーション ウィザードを使って作成したアプリケーションでは、ビットマップはファイル ITOOLBAR.BMP に保存されます。サーバーのオブジェクトが埋め込み先編集用に起動されると、コンテナ アプリケーションのツール バーがこの新しい埋め込み先編集用のツール バーに置き換えられます。したがって、埋め込み先編集用のツール バーには、通常のツール バーにある [ファイル] メニューと [ウィンドウ] メニューの項目に相当する機能を除いたものを用意します。

埋め込み先編集用のツール バーは、サーバーのデザイン時にアプリケーション ウィザードで生成した COleIPFrameWnd の派生クラスに読み込まれます。ステータス バーは、コンテナ アプリケーションが管理します。埋め込み先フレーム ウィンドウの詳細については、「サーバー : サーバーの実装」を参照してください。

参照

概念

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

アクティベーション (C++)

サーバー

コンテナ