Ejemplo HIERSVR: muestra una aplicación de servidor con arrastrar y colocar de OLE

Actualización: noviembre 2007

HIERSVR es un ejemplo de aplicación de servidor de edición visual que admite objetos vinculados así como objetos editados in situ. Además, como servidor "completo", esta aplicación puede abrir y guardar archivos directamente. El objeto HIERSVR es un diagrama jerárquico de varios niveles, donde cada nodo de la jerarquía consta de texto dentro de un rectángulo u otras formas. Además de mostrar la funcionalidad de servidor, HIERSVR ilustra también las funciones OLE de arrastrar y colocar, y copiar en el Portapapeles.

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 y ejecutar el ejemplo HIERSVR

  1. Abra la solución hiersvr.sln.

  2. En el menú Generar, haga clic en Generar.

  3. Ejecute HIERSVR una vez como aplicación independiente para que se registre en el sistema.

Diagramas HIERSRV

El tipo de documento u objeto que edita y modifica HIERSVR es un diagrama jerárquico de herencia única. Cada nodo del diagrama, excepto el nodo raíz, tiene sólo un nodo principal. Cada nodo principal puede tener varios nodos secundarios. El organigrama de una compañía es un ejemplo de diagrama jerárquico. Así es la lista de clases MFC, puesto que no utilizan la herencia múltiple de C++. Mfcclass.hie se incluye como ejemplo de documento de HIERSVR.

Cada nodo de la jerarquía tiene un conjunto mínimo de atributos.

  • Descripción: texto que consta de hasta 30 caracteres.

  • Forma: estilo del rectángulo que rodea el texto (rectángulo, rectángulo redondeado o rectángulo oval).

  • Vínculo clave de elemento (opcional): nombre utilizado para hacer referencia a un elemento vinculado. Si no se especifica, toma como valor predeterminado la cadena de descripción. Este nombre está visible cuando se ve el vínculo mediante la utilización del comando Editar vínculos en la aplicación de cliente.

Crear un diagrama HIERSVR

Un diagrama HIERSVR nuevo comienza como un solo nodo con el texto "Nodo raíz". Para agregar un nodo, seleccione primero su nodo principal haciendo clic en él. A continuación, haga clic en Agregar nodo en el menú Edición. En el cuadro de diálogo Agregar nodo, especifique los tres atributos descritos anteriormente. Para cambiar los atributos de un nodo, selecciónelo con un clic del mouse (ratón) y, a continuación, haga clic en Cambiar nodo. Para mover un nodo, haga clic en él y arrástrelo hasta la nueva ubicación.

HIERSVR importará la información de jerarquía de un archivo de texto con el siguiente formato: el texto de cada línea (delimitado con un salto de línea) es la descripción del nodo. El número de caracteres de tabulador delante del texto determina el nivel del nodo en la jerarquía. En el directorio del ejemplo HIERSVR, Mfcclass.txt es el archivo de importación de texto para Mfcclass.hie, el archivo HIERSVR nativo.

Para vincular un diagrama jerárquico con un documento de cliente, debe guardar primero el archivo en HIERSVR. A continuación, seleccione el nodo que desea copiar mediante el comando Copiar del menú Edición. Esto copiará el vínculo en el Portapapeles. El texto del nodo seleccionado se copiará también en el Portapapeles con el formato CF_TEXT y la jerarquía de nodos completa se copiará con un formato de Portapapeles nativo de HIERSVR. Es necesario guardar el documento porque el formato del vínculo requiere un nombre de documento. Finalmente, en la aplicación de cliente, haga clic en el comando Pegar vínculo del menú Edición (o haga clic en Pegar vínculo en el menú Edición - Pegado especial). El vínculo se mostrará en el documento cliente como el nodo que había seleccionado haciendo clic en la opción Copiar del menú Edición. También se mostrará el rectángulo.

Para incrustar un diagrama jerárquico en un documento cliente, puede utilizar un procedimiento de Portapapeles similar al anterior mediante la vinculación del objeto o al hacer clic en Insertar nuevo objeto en la aplicación de cliente. Si elige el procedimiento de Portapapeles, utilice la opción Pegar del menú Edición en lugar de Pegar vínculo en la aplicación de cliente. Sólo la subjerarquía que comienza en el nodo seleccionado se incrustará en el documento cliente.

Tanto si vincula como si incrusta el diagrama, sólo se mostrará el nodo superior seleccionado en la ventana de la aplicación de cliente. Para ver el resto del diagrama, deberá iniciar HIERSVR desde la aplicación de cliente al hacer doble clic en el elemento.

Servidor de edición visual

HIERSVR muestra las derivaciones de clase necesarias para implementar una aplicación de servidor de edición visual totalmente funcional, e ilustra algunas de las interfaces de usuario de aplicación de cliente más comunes que requieren código adicional.

Las tres clases del marco de trabajo utilizadas para implementar una aplicación de servidor de edición visual se ilustran con.

  • Un objeto COleTemplateServer, almacenado como la variable miembro m_server en la clase de aplicación de HIERSVR.

  • La clase CServerDoc de HIERSVR, derivada de COleServerDoc.

  • La clase CServerItem de HIERSVR, derivada de COleServerItem.

  • La propia clase CInPlaceFrame de HIERSVR, derivada de COleIPFrameWnd, creada originalmente por el Asistente para aplicaciones.

Palabras clave

En este ejemplo, se muestra el uso de las siguientes palabras clave:

AfxGetMainWnd; AfxMessageBox; AfxOleInit; AfxThrowMemoryException; AfxThrowNotSupportedException; AfxThrowResourceException; CArchive::Close; CCmdTarget::BeginWaitCursor; CCmdTarget::EndWaitCursor; CCmdUI::Enable; CCmdUI::SetCheck; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDC::GetDeviceCaps; CDC::LPtoDP; CDC::LPtoHIMETRIC; CDC::SelectObject; CDC::SetMapMode; CDC::SetViewportExt; CDC::SetWindowExt; CDialog::DoModal; CDialog::OnInitDialog; CDocTemplate::SetServerInfo; CDocument::DeleteContents; CDocument::GetFirstViewPosition; CDocument::GetNextView; CDocument::OnNewDocument; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFile::Open; CFileDialog::DoModal; CFileDialog::GetPathName; CFontDialog::DoModal; CFontDialog::GetColor; CFrameWnd::Create; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CMenu::GetSubMenu; CMenu::LoadMenu; CMenu::TrackPopupMenu; CObList::AddHead; CObList::AddTail; CObList::GetCount; CObList::GetHeadPosition; CObList::GetNext; CObList::GetTail; CObList::RemoveAll; CObList::RemoveAt; CObject::AssertValid; CObject::Dump; CObject::Serialize; COleDataObject::AttachClipboard; COleDataObject::GetFileData; COleDataObject::IsDataAvailable; COleIPFrameWnd::OnCreateControlBars; COleLinkingDoc::OnGetLinkedItem; COleServerDoc::GetItemPosition; COleServerDoc::IsInPlaceActive; COleServerDoc::OnDeactivateUI; COleServerDoc::OnGetEmbeddedItem; COleServerDoc::OnSetItemRects; COleServerDoc::RequestPositionChange; COleServerDoc::UpdateAllItems; COleServerItem::CopyToClipboard; COleServerItem::DoDragDrop; COleServerItem::GetClipboardData; COleServerItem::GetDataSource; COleServerItem::GetDocument; COleServerItem::GetItemName; COleServerItem::IsLinkedItem; COleServerItem::OnDraw; COleServerItem::OnGetClipboardData; COleServerItem::OnGetExtent; COleServerItem::OnOpen; COleServerItem::OnRenderFileData; COleServerItem::SetItemName; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CPen::CreatePen; CRect::BottomRight; CRect::Height; CRect::InflateRect; CRect::IntersectRect; CRect::OffsetRect; CRect::PtInRect; CRect::Size; CRect::TopLeft; CScrollView::GetDeviceScrollPosition; CScrollView::ScrollToPosition; CScrollView::SetScrollSizes; CString::Empty; CString::GetLength; CString::IsEmpty; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::GetDocument; CView::OnDragEnter; CView::OnDragLeave; CView::OnDragOver; CView::OnDraw; CView::OnDrop; CView::OnInitialUpdate; CView::OnPrepareDC; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::ExitInstance; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWnd::ClientToScreen; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::GetParentFrame; CWnd::Invalidate; CWnd::InvalidateRect; CWnd::OnCreate; CWnd::OnKeyDown; CWnd::OnLButtonDblClk; CWnd::OnLButtonDown; CWnd::OnRButtonDown; CWnd::OnSize; CWnd::SetOwner; CWnd::ShowWindow; CWnd::UpdateWindow; CreateFontIndirect; DragAcceptFiles; EnableWindow; ExtTextOut; GetDeviceCaps; GetSysColor; GetTextExtent; GetWindowTextLength; IsChild; LPtoDP; LineTo; LoadBitmap; MoveTo; MulDiv; RGB; RectVisible; Rectangle; RegisterClipboardFormat; RoundRect; SelectObject; SetTextColor; SetViewportExt; SetWindowExt; SetWindowOrg; _alloca; afxMemDF; lstrcpy; memset; min; strnlen; wcstombs

Nota:

Algunos ejemplos, como éste, no se han modificado para reflejar los cambios en los asistentes, las bibliotecas y el compilador de Visual C++, pero, aun así, muestran cómo realizar la tarea deseada.

Vea también

Otros recursos

Ejemplos de MFC