Cómo utilizar la clase CFormView en la interfaz de único documento (SDI) y varias aplicaciones de interfaz (MDI) de documento

Seleccione idioma Seleccione idioma
Id. de artículo: 98598 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Nota Microsoft Visual C++ .NET (2002) admite el modelo de código administrado suministrada por Microsoft .NET Framework y el modelo de código nativo no administrado de Microsoft Windows. La información de este artículo sólo se aplica al código no administrado de Visual C++.

Nota Microsoft Visual C++ 2005 admite el modelo de código administrado suministrada por Microsoft .NET Framework y el modelo de código nativo no administrado de Microsoft Windows.

Resumen

La clase CFormView proporciona un método práctico para colocar controles en una vista que se basa en una plantilla de cuadro de diálogo. El procedimiento general para utilizar un CFormView como se describe en la documentación de la clase y se ilustra en las aplicaciones de ejemplo VIEWEX y CHKBOOK proporcionadas con Microsoft Foundation Classes (MFC) versiones 2.x y anteriormente. Sin embargo, estas aplicaciones no muestran hacer que el tamaño inicial de la ventana de marco para ser el mismo que el tamaño inicial del formulario.

En la sección siguiente se enumeran los pasos necesarios para admitir la creación de una interfaz de único documento (SDI) o aplicación de interfaz (MDI) de documentos múltiples según un CFormView, tamaño de la ventana de marco inicial alrededor del formulario, al cambiar el estilo del marco y cerrar un documento MDI utilizando un botón en el formulario.

Más información

Los pasos siguientes describen cómo crear un MFC AppWizard aplicación utilizando el CFormView como la vista predeterminada:
  1. Utilice el Asistente para aplicaciones para generar una aplicación SDI o MDI. Esto inserta una plantilla de cuadro de diálogo con los estilos adecuados establecidos para archivo de recursos del proyecto.

    visual Studio 6.0 :

    En el paso 6 de AppWizard, seleccione la clase de vista. En el cuadro combinado de clase base , seleccione CFormView para especificar CFormView como clase base.

    visual Studio .NET o Visual Studio 2005 :

    En el paso 1 de AppWizard, seleccione Clases generadas . En el cuadro combinado de clase base , seleccione CFormView para especificar CFormView como clase base.
  2. Reemplazar la función de miembro OnUpdate() y llamar a UpdateData() como se documenta en la documentación de CFormView para actualizar las variables miembro con los datos del documento actual y para realizar los datos de cuadro de diálogo (DDX) de exchange.

    Nota : UpdateData no es virtual y llamar a la clase base garantiza que la clase derivada se llama a DoDataExchange mediante polimorfismo estándar. Los estados de documentación de CFormView para llamar a, no reemplazar UpdateData.
  3. Si desea establecer el tamaño inicial de la vista de formulario, reemplace la función OnInitialUpdate(). El texto siguiente proporciona información adicional acerca de este paso, que es ligeramente diferente en una aplicación SDI o MDI.

Cambiar el tamaño de un marco SDI principal en un CFormView

Para cambiar el tamaño del marco principal de una aplicación SDI (que utiliza CFormView como su clase de vista) el tamaño adecuado para el formulario diseñado en Studio de la aplicación, reemplazar la función OnInitialUpdate() en su clase derivada de CFormView, como sigue:
      void CMyFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         GetParentFrame()->RecalcLayout();
         ResizeParentToFit(); // default argument is TRUE
      }
				
ResizeParentToFit() la función no impide que el formulario cambiar de tamaño cuando el usuario cambia el tamaño del marco principal de la aplicación (las barras de desplazamiento se agregan automáticamente si es necesario). Para modificar el estilo de la ventana de marco es el principal de una vista de formulario, puede reemplazar la función PreCreateWindow() en la clase CMainFrame generada por el Asistente para aplicaciones. Por ejemplo, para quitar el estilo WS_THICKFRAME e impedir que el usuario de cambiar el tamaño de la ventana, declarar PreCreateWindow() en MainFrm.H y agregue el código siguiente a MainFrm.cpp:
      BOOL CMainFrame::PreCreateWindow(CREATESTRUCT &cs)
      {
         cs.style &= ~WS_THICKFRAME;
         return CFrameWnd::PreCreateWindow(cs);
      }
				

Cambiar el tamaño de un fotograma secundario MDI en CFormView

El proceso de cambiar el tamaño de un marco MDI secundario es similar a cambiar el tamaño de un marco principal para una aplicación SDI, como se explicó anteriormente. Sin embargo, la llamada RecalcLayout() no es necesaria.

Para cambiar el tamaño de un marco alrededor de una vista de formulario secundario MDI, reemplace la función OnInitialUpdate() en su clase derivada de CFormView como sigue:
      void CMDIFormView::OnInitialUpdate()
      {
         CFormView::OnInitialUpdate();
         ResizeParentToFit(); // Default argument is TRUE.
      }
				
si la aplicación reemplaza el argumento predeterminado a la función ResizeParentToFit(), esencialmente las mismas consecuencias presentarse como para una aplicación SDI, como se explicó anteriormente. Además, la ventana secundaria sea demasiado grande para el marco principal MDI envolvente o para toda la pantalla.

Para cambiar el estilo de marco MDI secundario (por ejemplo, para quitar el estilo WS_THICKFRAME para que el usuario no puede cambiar el tamaño de la ventana), derive una clase de ventana MDI secundaria y reemplace la función PreCreateWindow como se muestra en el ejemplo de SDI anterior.

Cerrar un formulario MDI con un botón

Para crear un botón en un formulario que se cierra el documento, agregue un controlador de mensajes para el mensaje BN_CLICKED a la clase CFormView. Asegúrese de que los botones de CFormView no tienen los identificadores de predeterminada IDOK o IDCANCEL. Si lo hacen, se crearán entradas incorrectas en el mapa de mensajes y funciones incorrectas para los botones.

Una vez el controlador de mensajes, puede simular el comando Cerrar en el archivo de menú con el siguiente código:
      void CMyForm::OnClickedButton1()
      {
         PostMessage(WM_COMMAND, ID_FILE_CLOSE);
      }
				
este método para cerrar un formulario pide al usuario que guarde el archivo si la función miembro IsModified() asociada al documento devuelve TRUE.

Propiedades

Id. de artículo: 98598 - Última revisión: jueves, 5 de enero de 2006 - Versión: 4.0
La información de este artículo se refiere a:
  • Microsoft Foundation Class Library 4.2 sobre las siguientes plataformas
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 5.0 Standard
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual C++ .NET 2003 Standard
    • Microsoft Visual C++ .NET 2002 Standard
    • Microsoft Visual C++ 2005 Express Edition
Palabras clave: 
kbmt kbdocview kbhowto kbmdi kbuidesign KB98598 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 98598

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com