Ejemplo OCLIENT: ilustra una aplicación contenedora de edición visual

Actualización: noviembre 2007

OCLIENT es un ejemplo de aplicación contenedora de edición visual. Se trata, básicamente, de una versión extendida del ejemplo CONTAINER, aunque no es estrictamente una derivación de CONTAINER.

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 OCLIENT

  1. Abra la solución OCLIENT.sln.

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

  3. Abra y ejecute la aplicación OCLIENT.

OCLIENT muestra estas características:

  • Arrastrar y colocar en otra aplicación y viceversa.

  • Clonar (duplicar) objetos arrastrando el control dentro de la misma ventana de la aplicación.

  • Desplazar la ventana automáticamente durante una operación de arrastrar y colocar.

  • Pegar un objeto con formato nativo.

  • Pegar vínculos.

OCLIENT, al igual que CONTAINER, es un programa de dibujo de objetos. El único tipo de objeto que dibuja es un elemento OLE incrustado o vinculado.

Para agregar un nuevo objeto al dibujo de OCLIENT

  1. Haga clic en Insertar nuevo objeto en el menú Edición.

    Aparecerá el cuadro de diálogo Insertar nuevo objeto.

  2. Seleccione el tipo de elemento OLE que desee agregar.

    Aparecerá un nuevo objeto en la ventana de OCLIENT, y se actualizarán el menú y la barra de herramientas de OCLIENT con menús emergentes y botones proporcionados por la aplicación servidor.

O bien

  1. Mientras se ejecuta un servidor de automatización, copie un elemento OLE en el Portapapeles.

  2. En el menú Edición de OCLIENT, haga clic en Pegar para incrustar el elemento OLE; o bien, haga clic en Pegar vínculo para vincular el elemento.

El elemento OLE recién agregado se coloca siempre en la esquina superior izquierda del dibujo de OCLIENT y puede cubrir total o parcialmente otro elemento anterior. Sólo puede seleccionar un elemento OLE cada vez con el mouse (ratón). Un elemento vinculado seleccionado se indica con un rectángulo de línea de puntos, mientras que un elemento incrustado se indica con un rectángulo de línea sólida. Puede mover un elemento OLE arrastrándolo; también puede cambiar el tamaño de un elemento OLE seleccionado mediante los controles de tamaño.

Para eliminar un elemento OLE, selecciónelo con un clic del mouse (ratón) y, a continuación, presione la tecla SUPR o utilice el comando Borrar del menú Edición.

Para editar el contenido de un elemento OLE, haga doble clic en él o selecciónelo con el mouse y haga clic en EditarObject <tipo> en el menú Edición. Para finalizar la edición de un elemento in situ, haga clic fuera del rectángulo del elemento en la ventana de OCLIENT. Para finalizar la edición de un elemento que se ha abierto completamente en la aplicación servidor, utilice el comando Actualizar del menú Archivo del servidor.

Palabras clave

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

AfxGetMainWnd; AfxMessageBox; AfxOleInit; AfxThrowArchiveException; AfxThrowFileException; AfxThrowMemoryException; CArchive::Close; CArchive::IsStoring; CCmdTarget::BeginWaitCursor; CCmdTarget::EndWaitCursor; CCmdUI::Enable; CCmdUI::SetCheck; CControlBar::EnableDocking; CDC::DPtoLP; CDC::DrawFocusRect; CDC::GetDeviceCaps; CDC::HIMETRICtoDP; CDC::LPtoDP; CDC::RealizePalette; CDC::SelectPalette; CDocTemplate::SetContainerInfo; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CGdiObject::UnrealizeObject; CMDIChildWnd::Create; CMenu::GetSubMenu; CMenu::LoadMenu; CMenu::TrackPopupMenu; CObject::AssertValid; CObject::Dump; CObject::IsKindOf; CObject::Serialize; COleClientItem::Close; COleClientItem::CreateCloneFrom; COleClientItem::Deactivate; COleClientItem::Delete; COleClientItem::DoDragDrop; COleClientItem::DoVerb; COleClientItem::Draw; COleClientItem::GetActiveView; COleClientItem::GetClipboardData; COleClientItem::GetDocument; COleClientItem::GetDrawAspect; COleClientItem::GetInPlaceWindow; COleClientItem::GetItemState; COleClientItem::GetType; COleClientItem::IsInPlaceActive; COleClientItem::OnActivate; COleClientItem::OnChange; COleClientItem::OnChangeItemPosition; COleClientItem::OnDeactivateUI; COleClientItem::OnGetClipboardData; COleClientItem::OnGetItemPosition; COleClientItem::SetDrawAspect; COleClientItem::SetItemRects; COleClientItem::UpdateLink; COleDataObject::Attach; COleDataObject::AttachClipboard; COleDataObject::IsDataAvailable; COleDataSource::CacheGlobalData; COleDocument::EnableCompoundFile; COleDocument::GetNextItem; COleDocument::GetStartPosition; COleDocument::HasBlankItems; COleDocument::OnShowViews; COleInsertDialog::CreateItem; COleInsertDialog::DoModal; COleInsertDialog::GetSelectionType; COlePasteSpecialDialog::AddFormat; COlePasteSpecialDialog::AddStandardFormats; COlePasteSpecialDialog::CreateItem; COlePasteSpecialDialog::DoModal; COlePasteSpecialDialog::GetSelectionType; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; COleUpdateDialog::DoModal; CPalette::CreateHalftonePalette; CRect::InflateRect; CRect::IntersectRect; CRect::IsRectEmpty; CRect::OffsetRect; CRect::Size; CRect::TopLeft; CRectTracker::Draw; CRectTracker::HitTest; CRectTracker::SetCursor; CRectTracker::Track; CScrollView::GetDeviceScrollPosition; CScrollView::SetScrollSizes; CStatusBar::Create; CStatusBar::SetIndicators; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::DoPreparePrinting; CView::GetDocument; CView::IsSelected; CView::OnDragEnter; CView::OnDragLeave; CView::OnDragOver; CView::OnDraw; CView::OnDrop; CView::OnInitialUpdate; CView::OnPrepareDC; CView::OnPreparePrinting; CView::OnScrollBy; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWinApp::RunEmbedded; CWnd::ClientToScreen; CWnd::GetClientRect; CWnd::GetDC; CWnd::GetParentFrame; CWnd::InvalidateRect; CWnd::OnChar; CWnd::OnCreate; CWnd::OnDestroy; CWnd::OnLButtonDblClk; CWnd::OnLButtonDown; CWnd::OnPaletteChanged; CWnd::OnQueryNewPalette; CWnd::OnRButtonDown; CWnd::OnSetCursor; CWnd::OnSetFocus; CWnd::OnSize; CWnd::ReleaseDC; CWnd::SetFocus; CWnd::ShowWindow; CWnd::UpdateWindow; CreateHatchBrush; DeleteItem; DragAcceptFiles; FORMATETC; FillRect; GetDeviceCaps; GetKeyState; GetSysColor; GlobalFree; GlobalLock; GlobalUnlock; LPtoDP; MessageBeep; MulDiv; RGB; RectVisible; RegisterClipboardFormat; ReleaseStgMedium; STGMEDIUM; SelectPalette; SetBkColor; SetBrushOrg; SetMapMode; SetRect; SetTextColor; SetViewportExt; SetWindowExt; abs; afxMemDF; max; memset; min

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