Compartir a través de


Ejemplo SUPERPAD: muestra un servidor de edición visual que edita texto mediante CEditView

Actualización: noviembre 2007

El ejemplo SUPERPAD muestra cómo utilizar la clase CEditView junto con la compatibilidad con un servidor de edición visual.

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 SUPERPAD

  1. Abra la solución superpad.sln.

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

  3. Para utilizar SUPERPAD como un servidor de edición visual, ejecútelo una vez como aplicación independiente para que se registre en el sistema.

    La primera vez que se ejecuta SUPERPAD, muestra una pantalla de inicio con el aspecto de un cuadro de diálogo Acerca de. Este cuadro de diálogo permanece unos segundos en pantalla y después desaparece. Para cerrar la pantalla de inicio, presione cualquier tecla o haga clic con el mouse (ratón).

    SUPERPAD recuerda la posición de la ventana desde la última vez que se ejecutó. También recuerda si la ventana de documento estaba maximizada en la ventana de marco MDI.

Características adicionales de SUPERPAD

SUPERPAD ilustra el uso avanzado de CEditView a través de la derivación de clases, incluida la alternancia del estado del ajuste de línea del control de edición y el cambio de fuentes de pantalla e impresora. SUPERPAD muestra también una gran variedad de técnicas de programación de MFC.

  • Cuadro de diálogo Acerca de que muestra el uso de recursos del sistema.

  • Pantalla de inicio que se muestra cuando se inicia la aplicación por primera vez.

  • Colocación persistente de ventanas al almacenar la información de posición de ventana en un archivo .ini privado.

  • Procesamiento de bucles inactivos.

  • Uso del cursor de espera.

  • Creación de subclases de una ventana.

  • Adición de encabezados y pies de página durante la impresión.

  • Saltos de página durante la impresión.

  • Iniciar una vista preliminar de la selección actual en el documento.

  • Volver de la vista preliminar a la misma posición en el documento que se mostró en la última vista preliminar.

  • Cuadro de diálogo de fuentes estándar (CFontDialog).

Menús de SUPERPAD

El menú Archivo ofrece los comandos estándar: New, Abrir, Cerrar, Guardar, Guardar como, Imprimir, Vista preliminar, Configurar impresión, lista de archivos usados recientemente y Exit.

El menú Archivo ofrece también la opción Configurar página, que puede utilizar para especificar un encabezado y un pie por página. Si no desea insertar ningún encabezado ni pie, déjelos en blanco. Puede especificar cualquier texto en el encabezado y en el pie. También puede especificar cualquiera de los siguientes códigos de formato:

  • &f para el nombre de archivo.

  • &p para el número de página.

  • Cualquiera de los códigos de formato definidos para la función strftime en tiempo de ejecución de C. Por ejemplo, se puede especificar %a para el nombre de día abreviado, %B para el nombre de mes completo, %d para el día del mes y %Y para el año con el siglo. Estas opciones de formato no están disponibles si vincula SUPERPAD a la versión en DLL de MFC, porque strftime no está disponible en una DLL.

SUPERPAD proporciona los siguientes comandos del menú Edición, que son controlados de forma predeterminada por CEditView: Cortar, Copiar, Página, Suprimir, Buscar. Buscar siguiente, Reemplazar, Seleccionar todo y Deshacer. El menú Edición ofrece también el comando Ajuste de línea para activar o desactivar el ajuste de línea.

El menú Ver ofrece los siguientes comandos, que utilizan varias características de CEditView:

  • Establecer tabulaciones: escriba un número entero en el cuadro de diálogo para establecer intervalos regulares entre las tabulaciones.

  • Establecer fuente: especifique la fuente que se utilizará cuando se muestre el archivo en pantalla.

  • Establecer fuente de impresora: especifique la fuente que se utilizará cuando se imprima.

  • Reflejar fuente de pantalla: active esta opción si desea anular temporalmente la selección de la fuente de impresora seleccionada para utilizar en su lugar una fuente de la impresora que se asemeje más a la fuente de la pantalla.

Clases de SUPERPAD

SUPERPAD deriva su clase de vista CPadView de CEditView. CPadView tiene acceso a los atributos y operaciones de CEditView para agregarlos a la funcionalidad de CEditView, como se describe en este apartado.

CPadView llama a CEditView::SetFont y SetPrinterFont para inicializar y cambiar las fuentes de pantalla y de impresora.

Para implementar el comando Ajuste de línea del menú Edición, CPadView activa o desactiva el ajuste de línea y crea un control de edición nuevo (cuya clase WNDCLASS es el control de edición estándar de Windows). Activa o desactiva los estilos ES_AUTOHSCROLL y WS_HSCROLL del control, que unidos determinan si un control de edición implementa el ajuste de línea. CPadView guarda el búfer del control de edición antiguo y lo mueve al nuevo control. Finalmente, destruye el control de edición antiguo y asocia el valor hWnd del control nuevo con la clase CPadView mediante la llamada a CWnd::SubclassWindow.

CPadView reemplaza OnPrint para agregar encabezados y pies de página. Reemplaza OnBeginPrinting para establecer la hora actual, que se muestra opcionalmente en el encabezado, en el pie o en ambos. Inicia una vista preliminar de la selección actual en el control de edición.

CPadView reemplaza CView::OnScrollTo para desplazar la vista a la misma posición que en la última vista preliminar.

Palabras clave

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

AfxGetApp; AfxGetInstanceHandle; AfxMessageBox; AfxOleInit; CArchive::Flush; CArchive::GetFile; CArchive::IsStoring; CBitmap::CreateCompatibleBitmap; CButton::DrawItem; CCmdUI::SetCheck; CDC::Attach; CDC::CreateCompatibleDC; CDC::Detach; CDC::DrawIcon; CDC::FillRect; CDC::GetDeviceCaps; CDC::GetTextMetrics; CDC::IntersectClipRect; CDC::LPtoHIMETRIC; CDC::LineTo; CDC::MoveTo; CDC::Rectangle; CDC::RestoreDC; CDC::SaveDC; CDC::SelectObject; CDC::SetBkMode; CDC::SetWindowExt; CDC::SetWindowOrg; CDC::StretchBlt; CDC::TextOut; CDialog::Create; CDialog::DoModal; CDialog::OnInitDialog; CDocTemplate::SetServerInfo; CDocument::DeleteContents; CDocument::GetFirstViewPosition; CDocument::GetNextView; CEditView::GetEditCtrl; CEditView::GetPrinterFont; CEditView::PrintInsideRect; CEditView::SerializeRaw; CEditView::SetPrinterFont; CEditView::SetTabStops; CEditView::dwStyleDefault; CFile::Write; CFont::CreateFontIndirect; CFontDialog::DoModal; CFrameWnd::ActivateFrame; CFrameWnd::Create; CFrameWnd::LoadFrame; CGdiObject::CreateStockObject; CGdiObject::DeleteObject; CGdiObject::GetObject; CObject::AssertValid; CObject::Dump; CObject::IsKindOf; CObject::Serialize; COleIPFrameWnd::OnCreateControlBars; COleLinkingDoc::OnGetLinkedItem; COleResizeBar::Create; COleServerDoc::IsInPlaceActive; COleServerDoc::OnDeactivateUI; COleServerDoc::OnGetEmbeddedItem; COleServerDoc::UpdateAllItems; COleServerItem::CopyToClipboard; COleServerItem::GetDataSource; COleServerItem::GetDocument; COleServerItem::OnDraw; COleServerItem::OnGetExtent; COleServerItem::OnRenderFileData; COleServerItem::OnShow; COleServerItem::SetItemName; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CPrintDialog::CreatePrinterDC; CPrintInfo::SetMaxPage; CRect::Height; CRect::InflateRect; CRect::IsRectEmpty; CRect::SetRect; CRect::Size; CRect::Width; CStatusBar::Create; CStatusBar::SetIndicators; CString::Find; CString::GetBuffer; CString::GetLength; CString::IsEmpty; CString::Left; CString::LoadString; CString::Mid; CString::ReleaseBuffer; CTime::Format; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::GetDocument; CView::OnBeginPrinting; CView::OnPrepareDC; CView::OnPrint; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::ExitInstance; CWinApp::GetProfileInt; CWinApp::GetProfileString; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::OnIdle; CWinApp::PreTranslateMessage; CWinApp::RegisterShellFileTypes; CWinApp::WriteProfileInt; CWinApp::WriteProfileString; CWnd::BringWindowToTop; CWnd::CenterWindow; CWnd::DestroyWindow; CWnd::Detach; CWnd::DoDataExchange; CWnd::FromHandle; CWnd::GetClientRect; CWnd::GetDC; CWnd::GetDlgCtrlID; CWnd::GetFocus; CWnd::GetFont; CWnd::GetParent; CWnd::GetParentFrame; CWnd::GetStyle; CWnd::GetSuperWndProcAddr; CWnd::GetWindowPlacement; CWnd::GetWindowRect; CWnd::GetWindowText; CWnd::GetWindowTextLength; CWnd::IsZoomed; CWnd::KillTimer; CWnd::OnClose; CWnd::OnCreate; CWnd::OnEraseBkgnd; CWnd::OnRButtonDown; CWnd::OnSize; CWnd::OnTimer; CWnd::PreCreateWindow; CWnd::ReleaseDC; CWnd::ScreenToClient; CWnd::SendMessage; CWnd::SetDlgCtrlID; CWnd::SetDlgItemText; CWnd::SetFocus; CWnd::SetFont; CWnd::SetOwner; CWnd::SetTimer; CWnd::SetWindowPlacement; CWnd::SetWindowPos; CWnd::SetWindowText; CWnd::ShowWindow; CWnd::SubclassDlgItem; CWnd::SubclassWindow; CWnd::UpdateWindow; CreateWindow; DragAcceptFiles; GetCurrentTime; GetObject; GetProfileInt; GetProfileString; GetStockObject; GetSystemMetrics; GlobalMemoryStatus; IsIconic; IsWindowVisible; LOWORD; LoadIcon; MulDiv; SetWindowLong; SetWindowPos; UpdateWindow; WideCharToMultiByte; WriteProfileString; _alloca; _getdrive; lstrcpyn; lstrlen; min; wcstombs; wsprintf

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