Share via


Ejemplo MDI: muestra el uso de la interfaz de múltiples documentos (MDI) sin la arquitectura documento/vista

Actualización: noviembre 2007

El ejemplo MDI incluye compatibilidad con la interfaz de múltiples documentos (MDI) de MFC sin utilizar la arquitectura documento/vista.

Si desea ver un ejemplo adicional de MDI, vea MDIDOCVW.

MDI también ilustra el uso del temporizador de Microsoft Windows, CColorDialog, CBitmap, y el cambio del cursor predeterminado de una ventana.

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 MDI

  1. Abra la solución mdi.sln.

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

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

La aplicación de ejemplo MDI proporciona una ventana primaria con dos tipos distintos de ventana MDI secundaria: una ventana Bounce, en la que una bola rebota, y una ventana Hello, que muestra el texto "Hello, World!". Puede crear varias instancias de cada tipo de ventana.

Haga clic en New Bounce o New Hello en el menú File para crear una ventana MDI secundaria nueva. Los dos tipos de ventana MDI secundaria determinan los menús que se muestra cuando están activas. Las dos ventanas tienen un menú Color. Cuando elija un color en este menú, se actualiza el color de la bola o el texto Hello. Elija el elemento Custom para llamar a un cuadro de diálogo Color, en el que puede seleccionar un color especial.

La ventana Bounce también tiene un menú Speed, en el que puede seleccionar la velocidad a la que se mueve la bola por la pantalla.

Si minimiza la ventana Bounce, puede observar que no hay un icono estático. En su lugar, una pequeña bola rebota en torno al icono. En cambio, la ventana Hello tiene un icono normal.

MDI sin documentos ni vistas

A diferencia de una aplicación MDI producida mediante el asistente para aplicaciones, esta aplicación de ejemplo no utiliza la compatibilidad del marco de trabajo con los documentos y las vistas. Por tanto, no utiliza plantillas de documento; el código de InitInstance de la aplicación no llama a AddDocTemplate.

No obstante, esta aplicación aprovecha completamente la compatibilidad con MDI del marco de trabajo. CMainFrame deriva de CMDIFrameWnd. CBounceWnd y CHelloWnd derivan de CMDIChildWnd. Los comandos del menú Window, como Tile, se controlan mediante la implementación predeterminada del marco de trabajo en CMDIFrameWnd.

Aunque CBounceWnd y CHelloWnd reemplazan Create, esto no es necesario para aprovechar la compatibilidad con MDI del marco de trabajo. El reemplazo de Create ilustra la forma de cambiar el cursor predeterminado y el icono de una ventana. Si cambia el cursor o el icono predeterminado de una ventana, tiene que registrar la nueva clase WNDCLASS llamando a AFXRegisterWndClass y pasando el nombre de la clase WNDCLASS en la llamada a Create.

Palabras clave

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

AfxGetInstanceHandle; AfxRegisterWndClass; CBitmap::CreateCompatibleBitmap; CCmdUI::SetCheck; CColorDialog::DoModal; CColorDialog::GetColor; CDC::BitBlt; CDC::CreateCompatibleDC; CDC::DeleteDC; CDC::DrawText; CDC::Ellipse; CDC::FillRect; CDC::GetDeviceCaps; CDC::SelectObject; CDC::SetBkColor; CDC::SetTextColor; CFrameWnd::LoadFrame; CFrameWnd::rectDefault; CGdiObject::DeleteObject; CMDIChildWnd::Create; CMenu::LoadMenu; CWinApp::InitInstance; CWnd::DestroyWindow; CWnd::GetClientRect; CWnd::GetCurrentMessage; CWnd::GetDC; CWnd::Invalidate; CWnd::KillTimer; CWnd::MessageBox; CWnd::OnCreate; CWnd::OnPaint; CWnd::OnSize; CWnd::OnTimer; CWnd::ReleaseDC; CWnd::SetTimer; CWnd::ShowWindow; CWnd::UpdateWindow; GetSysColor; LOWORD; LoadCursor; LoadIcon; MAKEINTRESOURCE; RGB; max; 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