Servidores: Implementar ventanas de marco en contexto
En este artículo se explica lo que debe hacer para implementar las ventanas en el contexto del cuadro de la aplicación de servidor de edición visual si no utiliza el asistente para aplicaciones para crear la aplicación de servidor. En lugar de seguir el procedimiento antes en este caso, podría utilizar una clase de contexto existente de la cuadro- ventana de una aplicación asistente- generó la aplicación o un ejemplo proporcionado Visual C++.
Para declarar una clase de contexto de la cuadro- ventana
Derive una clase de contexto de la cuadro- ventana de COleIPFrameWnd.
Utilice la macro de DECLARE_DYNCREATE en el archivo de encabezado de clase.
Utilice la macro de IMPLEMENT_DYNCREATE en el archivo de implementación de la clase (.cpp). Esto permite que los objetos de esta clase son creados por el marco.
Declarar un miembro de COleResizeBar en la clase de la cuadro- ventana. Esto es necesario si desea admitir el tamaño en contexto en aplicaciones de servidor.
Declare un controlador de mensajes OnCreate (en la ventana de Propiedades ), y llame a crear para el miembro de COleResizeBar , si se ha definido.
Si tiene una barra de herramientas, declarar un miembro de CToolBar en la clase de la cuadro- ventana.
Reemplace la función miembro de OnCreateControlBars para crear una barra de herramientas cuando el servidor está en contexto activo. Por ejemplo:
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; }
Vea la explicación de este código después del paso 5.
Incluya el archivo de encabezado para esta clase de contexto de la cuadro- ventana en el archivo principal .cpp.
En InitInstance para la clase de aplicación, llame a la función de SetServerInfo del objeto de plantilla de documento para especificar los recursos y la ventana en el contexto del cuadro que se utilizarán en abierto y edición en contexto.
La ejecución de llamadas de función en la instrucción de if crea la barra de herramientas de los recursos que el servidor proporcionada. En este punto, la barra de herramientas es parte de la jerarquía de la ventana contenedora. Dado que esta barra de herramientas se deriva de CToolBar, pasar los mensajes al propietario, la ventana cuadro de la aplicación contenedora, a menos que se cambie el propietario. Por eso la llamada a SetOwner es necesaria. Esta llamada cambia la ventana donde envían comandos de ser la ventana en el contexto del cuadro del servidor, haciendo que los mensajes que se pasarán al servidor. Esto permite que el servidor reaccione a las operaciones en la barra de herramientas que proporciona.
El identificador del mapa de bits de la barra de herramientas debe ser igual que los demás recursos en contexto definidos en la aplicación de servidor. Vea Menús y recursos: Adiciones de Servidor para obtener detalles.
Para obtener más información, vea COleIPFrameWnd, COleResizeBar, y CDocTemplate::SetServerInfo en la referencia de la biblioteca de clases.
Vea también
Conceptos
Servidores: Implementar un servidor