Share via


Elementos de la interfaz

En este documento se describen los elementos de la interfaz que se introdujeron en Visual Studio 2008 SP1, así como las diferencias con respecto a la versión anterior de la biblioteca.

En la ilustración siguiente se muestra una aplicación compilada mediante los nuevos elementos de la interfaz.

MFC Feature Pack example application.

Acoplamiento de ventanas

La funcionalidad de acoplamiento de ventanas es similar al acoplamiento de ventanas que usa la interfaz gráfica de usuario de Visual Studio.

Las barras de control ahora son paneles

Las barras de control ahora se conocen como paneles y derivan de la clase CBasePane. En versiones anteriores de MFC, la clase base de las barras de control era CControlBar.

Normalmente, la ventana de marco principal de la aplicación se representa mediante la clase CFrameWndEx o la clase CMDIFrameWndEx. El marco principal se denomina sitio de acoplamiento. Los paneles pueden tener uno de tres tipos de elementos primarios: un sitio de acoplamiento, una barra de acoplamiento o una ventana minimarco.

Hay dos tipos de paneles: no redimensionables y redimensionables. Se puede cambiar el tamaño de los paneles redimensionables, como las barras de estado y las barras de herramientas, mediante separadores o controles deslizantes. Los paneles redimensionables pueden formar contenedores (es decir, un panel puede acoplarse a otro, creando un separador entre ambos). Aun así, los paneles redimensionables no se pueden conectar (acoplar) a barras de acoplamiento.

Si la aplicación usa paneles no redimensionables, derívelos de la clase CPane. Si la aplicación usa paneles redimensionables, derívelos de la clase CDockablePane.

Sitio de acoplamiento

El sitio de acoplamiento (o ventana de marco principal) posee todos los paneles y ventanas minimarco de una aplicación. El sitio de acoplamiento contiene un miembro CDockingManager. Este miembro mantiene una lista de todos los paneles que pertenecen al sitio de acoplamiento. La lista está ordenada de modo que los paneles creados en los bordes exteriores del sitio de acoplamiento se coloquen al principio de la lista. Cuando el marco vuelve a dibujar el sitio de acoplamiento, recorre en bucle esta lista y ajusta el diseño de cada panel para incluir el rectángulo delimitador actual del sitio de acoplamiento. Puede llamar a AdjustDockingLayout o RecalcLayout cuando tenga que ajustar el diseño de acoplamiento, y el marco redirigirá esta llamada al administrador de acoplamiento.

Barras de acoplamiento

Cada ventana de marco principal puede colocar barras de acoplamiento a lo largo de sus bordes. Una barra de acoplamiento es un panel que pertenece a una clase CDockSite. Las barras de acoplamiento pueden aceptar objetos derivados de CPane, como barras de herramientas. Para crear barras de acoplamiento cuando se inicialice la ventana de marco principal, llame a EnableDocking. Para habilitar las barras de ocultación automática, llame a EnableAutoHideBars. EnableAutoHideBars crea objetos CAutoHideDockSite y los coloca junto a cada barra de acoplamiento.

Cada barra de acoplamiento se divide en filas de acoplamiento. Las filas de acoplamiento se representan mediante la clase CDockingPanesRow. Cada fila de acoplamiento contiene una lista de barras de herramientas. Si un usuario acopla una barra de herramientas o la mueve de una fila a otra dentro de la misma barra de acoplamiento, el marco crea una fila y cambia el tamaño de la barra de acoplamiento en consecuencia, o bien coloca la barra de herramientas en una fila existente.

Ventanas minimarco

Un panel flotante reside en una ventana minimarco. Las ventanas minimarco se representan mediante dos clases: la clase CMDITabInfo (que puede contener un solo panel) y la clase CMultiPaneFrameWnd (que puede contener varios paneles). Para hacer que un panel sea flotante en el código, llame a CBasePane::FloatPane. Una vez que un panel sea flotante, el marco creará automáticamente una ventana minimarco, la cual se convertirá en el elemento primario del panel flotante. Cuando el panel flotante se acopla, el marco restablece su elemento primario y el panel flotante se convierte en una barra de acoplamiento (en el caso de las barras de herramientas) o en un sitio de acoplamiento (en el caso de los paneles redimensionables).

Divisores de panel

Los divisores de panel (también denominados controles deslizantes o separadores) se representan mediante la clase CPaneDivider. Cuando un usuario acopla un panel, el marco crea divisores de panel, independientemente de si el panel está acoplado en el sitio de acoplamiento o en otro panel. Cuando un panel se acopla al sitio de acoplamiento, el divisor de panel se denomina divisor de panel predeterminado. El divisor de panel predeterminado es responsable del diseño de todos los paneles de acoplamiento del sitio de acoplamiento. El administrador de acoplamiento mantiene una lista de divisores de panel predeterminados y una lista de paneles. Los administradores de acoplamiento son responsables del diseño de todos los paneles de acoplamiento.

Contenedores

Todos los paneles redimensionables, cuando se acoplan entre sí, se mantienen en contenedores. Los contenedores se representan mediante la clase CPaneContainer. Cada contenedor tiene punteros a su panel izquierdo, panel derecho, subcontenedor izquierdo, subcontenedor derecho y al separador entre la parte izquierda y la derecha. (Izquierda y derecha no hacen referencia a los lados físicos, sino que identifican las ramas de una estructura de árbol). De esta manera, podemos crear un árbol de paneles y separadores, lo que permite lograr diseños complejos de paneles a los que se les puede cambiar el tamaño juntos. La clase CPaneContainer mantiene el árbol de contenedores, así como dos listas de los paneles y controles deslizantes que residen en este árbol. Normalmente, los administradores de contenedores de panel se insertan en controles deslizantes predeterminados y ventanas minimarco que incluyen varios paneles.

Barras de control de ocultación automática

De forma predeterminada, cada CDockablePane admite la característica de ocultación automática. Cuando un usuario hace clic en el botón Anclar del título de CDockablePane, el marco cambia el panel al modo de ocultación automática. Para controlar el clic, el marco crea una clase CMFCAutoHideBar y una clase CMFCAutoHideButton asociada al objeto CMFCAutoHideBar. El marco coloca la nueva clase CMFCAutoHideBar en CAutoHideDockSite. El marco también asocia el elemento CMFCAutoHideButton a la barra de herramientas. La clase CDockingManager mantiene la clase CDockablePane.

Barras de control con pestañas y barras de Outlook

La clase CMFCBaseTabCtrl implementa la funcionalidad base de una ventana con pestañas desasociables. Para usar un objeto CMFCBaseTabCtrl, inicialice una clase CBaseTabbedPane en la aplicación. CBaseTabbedPane deriva de CDockablePane y mantiene un puntero a un objeto CMFCBaseTabCtrl. CBaseTabbedPane permite a los usuarios acoplar barras de control con pestañas y cambiar su tamaño. Use CDockablePane::AttachToTabWnd para crear dinámicamente barras de control acopladas y con pestañas.

El control de barra de Outlook también se basa en barras con pestañas. La clase CMFCOutlookBar deriva de CBaseTabbedPane. Para obtener más información sobre cómo usar la barra de Outlook, consulte Clase CMFCOutlookBar.

Consulte también

Conceptos