メニューとリソース : メニューの結合
ここでは、OLE ドキュメント アプリケーションでのビジュアル編集の処理手順について、および埋め込み先編集の有効化を処理するときの手順について詳しく説明します。 埋め込み先編集の有効化を実現するには、サーバー (コンポーネント) アプリケーションとコンテナー アプリケーションの両方が対応する必要があります。 ユーザーは、コンテナー ドキュメントのコンテキスト内のフレーム ウィンドウからサーバーの機能を利用できます。 したがって、コンテナー アプリケーションとサーバー アプリケーションのリソースを調整する必要があります。
ここでは、次のトピックについて説明します。
メニュー構成
ツール バーとステータス バー
メニュー構成
まず、メニュー構成を調整します。 詳細については、Windows SDK の「Menu Programming Considerations」の「Menu Creation」を参照してください。
コンテナー アプリケーションは、埋め込みアイテムが埋め込み先でアクティブになっているときにだけ使用する新しいメニューを作成する必要があります。 メニューには、少なくとも、以下の要素がこの順序で含まれています。
ファイルを通常開くときと同じ内容の [ファイル] メニュー。 通常、メニューと次の区切り線の間には何もメニュー項目を配置しません。
2 つの区切り線。
ファイルを通常開くときと同じ内容の [ウィンドウ] メニュー (コンテナー アプリケーションが MDI の場合のみ)。 アプリケーションによっては [オプション] メニューなどのほかのメニューがあります。埋め込みアイテムが埋め込み先でアクティブになっているときに、メニューに表示されます。
注意
コンテナー ドキュメントの表示を操作するメニューは、他にもあります ([ズーム] など)。 このようなコンテナー メニューは、このメニュー リソースの 2 つの区切り線の間に配置します。
サーバー (コンポーネント) アプリケーション側でも、埋め込み先編集用メニューを用意する必要があります。 このメニューの構成は、通常のファイルを開く場合のメニューと同じです。ただし、[ファイル] メニューや [ウィンドウ] メニューなど、データ以外のサーバー ドキュメント操作用のメニュー項目がありません。 通常、このメニューは以下の要素で構成されます。
[編集] メニュー (ファイルを開くときと同じ内容)
区切り線
オブジェクト編集メニュー (Scribble サンプル アプリケーションの [ペン] メニューなど)
区切り線
[ヘルプ] メニュー
次に、コンテナー アプリケーションとサーバー アプリケーションの埋め込み先編集用メニュー例を示します。 この例では、詳細は省略されています。 まず、コンテナー アプリケーションの埋め込み先編集用メニューのエントリを示します。
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 の派生クラスに読み込まれます。 ステータス バーは、コンテナー アプリケーションが管理します。 場所のフレーム ウィンドウの実装の詳細についてを参照してくださいサーバー:サーバーの実装。