サーバー : 埋め込み先フレーム ウィンドウの実装
この技術情報はサーバー アプリケーションの作成にアプリケーション ウィザードを使用するビジュアル編集サーバー アプリケーションの埋め込み先フレーム ウィンドウを実行する必要があるものについて説明しますする。この技術情報で説明した手順に従って、の代わりにアプリケーション ウィザードで生成されたアプリケーションを、 Visual C++ に用意されているサンプルの既存の埋め込み先フレームウィンドウ クラスを使用できます。
埋め込み先フレームウィンドウ クラスを宣言するには
COleIPFrameWndから埋め込み先フレームウィンドウ クラスを派生します。
クラスのヘッダー ファイルに DECLARE_DYNCREATE のマクロを使用します。
クラス実装 (.cpp)ファイルに IMPLEMENT_DYNCREATE のマクロを使用します。これは、このクラスのオブジェクトは、フレームワークによって作成されるようにします。
フレームウィンドウ クラスの COleResizeBar のメンバーを宣言します。これは、サーバー アプリケーションでのサイズ変更をサポートする場合に必要です。
これを定義する場合は、 OnCreate のメッセージ ハンドラー ( プロパティ ペインを使用して)として宣言し、 COleResizeBar のメンバーの 生成(&&C),create,作成,生成 をダイヤルします。
ツールバーがある場合は、フレームウィンドウ クラスの CToolBar のメンバーを宣言します。
サーバーがアクティブな設定されている場合、ツールバーを作成するに OnCreateControlBars のメンバー関数をオーバーライドします。次に例を示します。
BOOL CInPlaceFrame::OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc) { UNREFERENCED_PARAMETER(pWndDoc); // Set owner to this window, so messages are delivered to correct app m_wndToolBar.SetOwner(this); // Create toolbar on client's frame window if (!m_wndToolBar.CreateEx(pWndFrame, TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_SRVR_INPLACE)) { TRACE0("Failed to create toolbar\n"); return FALSE; } // TODO: Delete these three lines if you don't want the toolbar to be dockable m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); pWndFrame->EnableDocking(CBRS_ALIGN_ANY); pWndFrame->DockControlBar(&m_wndToolBar); return TRUE; }
手順 5. に従ってこのコードの説明を参照してください。
メイン .cpp ファイルにこの埋め込み先フレームウィンドウ クラスのヘッダー ファイルを追加します。
アプリケーションのクラスの InitInstance では、を開き、埋め込み先編集に使用するリソースと埋め込み先フレーム ウィンドウを指定するドキュメント テンプレート オブジェクトの SetServerInfo 関数を呼び出しますします。
一連の if ステートメントの関数呼び出しでは、サーバーが指定したリソースからツールバーを作成します。この時点で、ツールバーはコンテナーの階層ペインの一部です。このツールバーは CToolBarから派生するため、所有者を変更しない場合、所有者、コンテナー アプリケーションのフレーム ウィンドウにメッセージを渡します。そのため、 SetOwner への呼び出しが必要です。この呼び出しは、コマンドがサーバーの埋め込み先フレーム ウィンドウである送信されるサーバーに渡されますメッセージをウィンドウを変更します。これは、サーバーが提供するツールバーの操作に応答するようにします。
ツールバー ビットマップの ID は、サーバー アプリケーションで定義される他の埋め込みリソースと同じである必要があります。詳細については メニューとリソース: サーバー加算 を参照してください。
詳細については、 クラス ライブラリ リファレンスの COleIPFrameWnd、 COleResizeBarと CDocTemplate::SetServerInfo を参照してください。