Ejemplo ACTIVEDOC: implementa un servidor de documentos activos
Actualización: noviembre 2007
El ejemplo ACTIVEDOC muestra cómo implementar un servidor de documentos activos. El ejemplo muestra lo siguiente:
Cómo implementar las interfaces IOleDocument y IOleDocumentView.
Cómo realizar una combinación de menús con el contenedor.
Cómo implementar una barra de herramientas en el objeto.
Cómo reemplazar los métodos Load y Save de IPersistStreamInit para guardar y cargar de forma personalizada.
Cómo utilizar CDialogImpl para implementar un cuadro de diálogo Acerca de.
Cómo utilizar la técnica de subclases con el control de edición de texto enriquecido (Rich Text Edit).
Nota de seguridad: |
---|
Este código de ejemplo se proporciona para ilustrar un concepto y no debe utilizarse en aplicaciones o sitios Web, ya que quizás no ilustre las prácticas de codificación más seguras. Microsoft no asume ninguna responsabilidad por daños incidentales o consecuentes en caso de que el código de ejemplo se utilice para propósitos distintos de aquellos para los que se concibió. |
Para obtener ejemplos e instrucciones para su instalación:
En el menú Ayuda de Visual Studio, haga clic en Ejemplos.
Para obtener más información, vea Localizar archivos de ejemplo.
La lista de ejemplos completa con la versión más reciente está disponible en línea en la página Visual Studio 2008 Samples.
También encontrará ejemplos en el disco duro de su equipo. De manera predeterminada, los ejemplos y el archivo Léame se copian en una carpeta bajo \Archivos de programa\Visual Studio 9.0\Samples\. Para las versiones Express de Visual Studio, todos los ejemplos están en línea.
Generar y ejecutar el ejemplo
Para generar el ejemplo
Abra el archivo de solución ActiveDoc.sln.
En el menú Generar, haga clic en Generar solución.
Para ejecutar el ejemplo mediante Internet Explorer
Abra ActiveDoc.htm o el archivo generado ActiveDoc.AAA en Internet Explorer (para abrir ActiveDoc.AAA, haga clic en el botón Abrir cuando se le pida que abra este archivo).
Utilice el menú Formato que se ha integrado en la barra de menús de Internet Explorer, o bien simplemente haga clic en los colores de la barra de herramientas para cambiar el color del texto escrito.
Para ejecutar el ejemplo mediante Microsoft Office Binder
Ejecute Microsoft Office Binder y, en el menú Sección, haga clic en Agregar.
Seleccione el icono con la etiqueta "ActiveDoc Class" y haga clic en Aceptar.
Debería ver el objeto incrustado en Office Binder. Observe que los menús se han combinado y que ahora aparece la barra de herramientas de ActiveDoc. Puede escribir texto y utilizar el menú y los botones de la barra de herramientas para cambiar el color del texto escrito.
Archivos de ejemplo
El ejemplo incluye los siguientes archivos principales:
ActiveCtl.h
ActiveCtl.cpp: implementa CActiveDoc, que representa el objeto completo ActiveDoc.
OleDocument.h: contiene la implementación de las interfaces IOleDocument e IOleDocumentView.
Toolbar.h: contiene CToolbar, que ayuda a implementar la barra de herramientas.
Palabras clave
En este ejemplo se utilizan las siguientes palabras clave:
ActiveXDocActivate; ALT_MSG_MAP; ATLASSERT; ATLTRACE; BEGIN_COM_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; BEGIN_PROPERTY_MAP; BEGIN_TOOLBAR_MAP; CAboutDlg::DoModal; CanInPlaceActivate; CComCoClass; CComControl; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; CComObjectRootEx::InternalQueryInterface; CComPtr; CHARFORMAT; CMenu; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; COMMAND_ID_HANDLER; COMMAND_RANGE_HANDLER; CreateMenu; CreateRTFWindow; CreateToolbar; CreateWindowEx; CToolbar; CWindow::DestroyWindow; CWindow::ModifyStyle; CWindow::SetFocus; CWindow::SetParent; CWindow::SetWindowPos; DECLARE_REGISTRY_RESOURCEID; DestroyMenu; DestroyToolbar; DisableThreadLibraryCalls; DllMain; DoesVerbUIActivate; EDITSTREAM::dwCookie; EDITSTREAM::dwError; EDITSTREAM::pfnCallback; Ellipse; END_COM_MAP; END_MSG_MAP; END_OBJECT_MAP; END_PROPERTY_MAP; END_TOOLBAR_MAP; EndDialog; ExtTextOut; FreeLibrary; GetMenuItemCount; GetMenuItemID; GetMenuState; GetMenuString; GetResourceInstance; GetStockObject; GetSubMenu; GetTextMetrics; GetWindow; GetWindowContext; GetWindowRect; HDC; hdcDraw;; IDataObjectImpl; IDispatchImpl; InitCommonControls; InlineIsEqualGUID; InPlaceDeactivate; InPlaceMenuCreate; InPlaceMenuDestroy; InsertMenu; InterfaceSupportsErrorInfo; InternalQueryInterface; IOleControlImpl; IOleDocument::GetDocMiscStatus; IOleDocumentImpl; IOleDocumentView::ApplyViewState; IOleDocumentView::SetInPlaceSite; IOleDocumentViewImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceFrame* pFrame;; IOleInPlaceFrame::InsertMenus; IOleInPlaceFrame::Release; IOleInPlaceFrame::SetMenu; IOleInPlaceObjectWindowlessImpl; IOLEInPlaceSite::GetWindowContext; IOleObjectImpl; IPersistStorageImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IQuickActivateImpl; ISupportErrorImpl; IViewObjectExImpl; LoadLibrary; LoadMenu; LoadString; MAKEINTRESOURCE; MergeMenus; MESSAGE_HANDLER; NOTIFY_CODE_HANDLER; OBJECT_ENTRY; OleCreateMenuDescriptor; OLEINPLACEFRAMEINFO; OnInPlaceActivate; OnUIActivate; prcBounds; RECT rcPos, rcClip;; RemoveMenu; SelectObject; SendMessage; SetActiveObject; SetBkMode; SetBorderSpace; SetControlFocus; SetFocus; SetInPlaceSite; SetMenu; SetObjectRects; SetTextColor; ShowObject; ShowWindow; UIActivate; UIDeactivate; UnmergeMenus; ZeroMemory