Ejemplo VIEWEX: muestra varias vistas, vistas de desplazamiento y ventanas divisoras

Actualización: noviembre 2007

En el ejemplo VIEWEX se ilustra lo siguiente:

  • Una ventana divisora estática en la que el orden y el número de paneles nunca cambia; los paneles son generalmente de distintas clases de vista.

  • Una vista de formulario (CFormView) que permanece sincronizada con otras vistas del mismo documento.

  • Intercambio de datos de cuadro de diálogo (DDX, Dialog data exchange), específicamente de datos de grupo de botones de opción.

El documento de VIEWEX es simple. Sus datos consisten en una cadena y su color.

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 VIEWEX

  1. Abra la solución viewex.sln.

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

  3. En el menú Depurar, haga clic en Iniciar sin depurar.

Cuando ejecute VIEWEX por primera vez, aparecerá un cuadro de diálogo New en el que puede seleccionar el tipo de ventana de documento que desea ver:

  • Simple Text muestra la cadena, con el color actual, centrada en la ventana.

  • Input Form View proporciona un formulario (CFormView) en el que puede cambiar la cadena en un control de edición y cambiar el color seleccionándolo en un grupo de botones de opción.

  • Splitter Frame muestra un formulario de texto simple y otro de entrada de datos, muestra en dos paneles contiguos de una ventana divisora. Al cambiar la cadena (carácter a carácter) o el color del formulario de entrada, la vista de texto simple refleja el cambio automáticamente.

  • Three-way Splitter Frame muestra el formulario de entrada en un panel de una ventana divisora. El otro panel se divide en dos subpaneles mediante una barra divisora: el panel superior muestra una vista de texto simple; el panel inferior muestra una vista Color. La vista Color simplemente se colorea completamente con el color actual.

Puede cambiar la cadena mediante el control de edición en el formulario de entrada y haciendo clic en el comando Change Data del menú Edit.

Puede ver varios documentos simultáneamente. Sin embargo, por simplicidad, no puede guardar ni volver a abrir documentos, ni puede ver el mismo documento en más de una de las ventanas anteriores.

Ventana divisora estática

En VIEWEX, la ventana MDI secundaria crea una ventana divisora 1 por 2 en el área de cliente reemplazando el código de OnCreateClient. En el caso de una división en tres partes, VIEWEX incrusta otra ventana divisora 2 por 1 en el panel de la derecha de la ventana divisora 1 por 2.

VIEWEX llama a CSplitterWnd::CreateStatic en lugar de a CSplitterWnd::Create para crear ventanas divisoras estáticas en lugar de ventanas divisoras dinámicas. Cada panel de la ventana divisora VIEWEX tiene una clase de vista distinta. VIEWEX llama a CSplitterWnd::CreateView para especificar la clase derivada de CView para cada panel. En el caso del primer panel, VIEWEX utiliza la clase de vista específica del objeto de plantilla de documento, que se pasa a OnCreateClient en el miembro m_pNewViewClass de CCreateContext. Para los demás paneles, VIEWEX especifica la clase RUNTIME_CLASS de la vista.

Vistas de formulario

CInputView ilustra la forma de sincronizar una vista de formulario con otras vistas, de forma que cuando un usuario escriba datos en uno de los campos, el cambio se refleje inmediatamente en las demás vistas. Para ello, CInputView asigna ON_EN_CHANGE y ON_BN_CLICKED para todos sus controles a un controlador de mensajes central, OnDataChange. OnDataChange llama a CView::UpdateData para transferir datos de la pantalla a las variables miembro de CInputView y después llamar al método UpdateAllViews del documento para notificar el cambio a las demás vistas.

Intercambio de datos de cuadro de diálogo (DDX)

La clase CInputView de VIEWEX ilustra el intercambio de datos de cuadro de diálogo (DDX, Dialog data exchange) para datos de un grupo de botones de opción. En Iputvw.h, observe que sólo se asigna el primer botón de opción del grupo a la variable miembro m_iColor de CInputView::DoDataExchange. m_iColor es un valor ordinal (int) basado en cero, que representa el botón de opción que se ha seleccionado.

Palabras clave

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

CDC::FillRect; CDialog::DoModal; CDocument::OnNewDocument; CDocument::UpdateAllViews; CFrameWnd::LoadFrame; CFrameWnd::OnCreateClient; CFrameWnd::SetActiveView; CObject::Serialize; CRect::Height; CRect::Width; CSplitterWnd::CreateStatic; CSplitterWnd::CreateView; CSplitterWnd::GetPane; CSplitterWnd::IdFromRowCol; CString::GetLength; CView::GetDocument; CView::OnActivateView; CView::OnDraw; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::OnMouseActivate; CWnd::ShowWindow; CWnd::UpdateData; CWnd::UpdateWindow; RGB; SetBkMode; SetTextAlign; SetTextColor; TextOut; max

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