次の方法で共有


サーバー : 埋め込み先フレーム ウィンドウの実装

更新 : 2007 年 11 月

ここでは、アプリケーション ウィザードを使わずにビジュアル編集サーバー アプリケーションを作成する場合の、埋め込み先フレーム ウィンドウの実装方法について説明します。ここで説明する方法以外にも、アプリケーション ウィザードで作成したアプリケーションまたは Visual C++ 付属のサンプル アプリケーションの既存の埋め込み先フレーム ウィンドウ クラスを利用することもできます。

埋め込み先フレーム ウィンドウ クラスを宣言するには

  1. COleIPFrameWnd から派生した埋め込み先フレーム ウィンドウ クラスを作成します。

    • クラス ヘッダー ファイルで DECLARE_DYNCREATE マクロを使います。

    • クラスの実装 (.cpp) ファイルで IMPLEMENT_DYNCREATE マクロを使います。これにより、埋め込み先フレーム ウィンドウ クラスのオブジェクトが、フレームワークによって自動的に生成されます。

  2. フレーム ウィンドウ クラスのメンバ関数 COleResizeBar を宣言します。これは、サーバー アプリケーションで埋め込みアイテムのサイズ変更をサポートする場合に必要です。

    [プロパティ] ウィンドウで、OnCreate メッセージ ハンドラを宣言します。COleResizeBar メンバを定義している場合は、この Create を呼び出します。

  3. ツール バーを使用するときは、フレーム ウィンドウ クラスで 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 で説明します。

  4. 埋め込み先フレーム ウィンドウ クラスのヘッダー ファイルをメインの .cpp ファイルにインクルードします。

  5. アプリケーション クラスの InitInstance で、ドキュメント テンプレート オブジェクトの SetServerInfo 関数を呼び出し、リソース、およびオープン編集と埋め込み先編集で使う埋め込み先フレーム ウィンドウを指定します。

if ステートメント中の一連の関数呼び出しによって、サーバーのリソースからツール バーが作成されます。この時点では、ツール バーはコンテナ ウィンドウの階層に所属しています。このツール バーは CToolBar の派生クラスなので、メッセージはオーナーであるコンテナ アプリケーションのフレーム ウィンドウに送られます。したがって、SetOwner を呼び出してオーナーを変更する必要があります。SetOwner を呼び出すと、コマンドの送り先がサーバーの埋め込み先フレーム ウィンドウに変更されるので、メッセージがサーバーに渡されます。この結果、サーバーがツール バーの操作に反応できるようになります。

ツール バー ビットマップの ID は、サーバー アプリケーションで定義されているほかの埋め込みリソースと同じにします。詳細については、「メニューとリソース : サーバーの変更点」を参照してください。

詳細については、『MFC リファレンス』の「COleIPFrameWnd クラス」、「COleResizeBar クラス」、および「CDocTemplate::SetServerInfo」を参照してください。

参照

概念

サーバー

サーバー : サーバーの実装

サーバー : サーバー ドキュメントの実装

サーバー : サーバー アイテム