服务器:实现就地帧Windows
本文说明了必须实现在您的可视化编辑服务器应用程序的就地框架窗口,则使用应用程序向导创建您的服务器应用程序。 在按照本文中概述的这个过程位置,您可以使用应用程序向导生成的应用程序或示例的现有就地框架窗口类随 Visual C++。
声明就地框架窗口类
从派生 COleIPFrameWnd就地框架窗口类。
使用 DECLARE_DYNCREATE 宏在类的头文件。
使用 IMPLEMENT_DYNCREATE 宏在类中实现 (.cpp) 文件。 这允许此类对象由框架创建。
声明框架窗口类的一个 COleResizeBar 成员。 ,如果要支持就地调整大小。服务器应用程序,这是必需的。
声明 OnCreate 消息处理程序 (使用 属性 窗口),并调用您的 COleResizeBar 成员的 创建 ,因此,如果您定义它。
如果您有一个工具栏,请声明框架窗口类的一个 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; }
在步骤后,有关此代码的讨论。
包含此就地框架窗口类的头文件中的 main .cpp 文件。
在应用程序类的 InitInstance ,请调用文档模板对象的 SetServerInfo 功能指定用于打开和就地编辑和就地框架窗口的资源。
系列在 if 语句函数调用创建从服务器提供的资源的工具栏。 此时,工具栏是容器的窗口层次结构的一部分。 由于此工具栏 CToolBar从派生,它将通过其消息传递给它的所有者,容器应用程序的框架窗口,则,除非您更改所有者。 因此对 SetOwner 的调用是必需的。 此调用将命令发送是服务器上使用就地框架窗口的窗口,使消息传递到服务器。 这允许服务器响应该方法提供的工具栏的操作。
工具栏位图的 ID 应相当于在您的服务器应用程序定义的其他就地资源。 请参见 菜单和资源:添加服务器 有关详细信息。
有关更多信息,请参见 COleIPFrameWnd、 COleResizeBar和 CDocTemplate::SetServerInfo 在 类库中引用。