Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este documento se describen los elementos de interfaz que se introdujeron en Visual Studio 2008 SP1 y también se describen las diferencias con la versión anterior de la biblioteca.
En la ilustración siguiente se muestra una aplicación compilada mediante los nuevos elementos de interfaz.
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 se derivan de la clase CBasePane. En versiones anteriores de MFC, la clase base de barras de control era CControlBar
.
La ventana del marco principal de la aplicación normalmente 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 ajustables y ajustables. Los paneles redimensionables, como las barras de estado y las barras de herramientas, se pueden redimensionar mediante separadores o controles deslizantes. Los paneles de tamaño redimensionable pueden formar contenedores (un panel se puede acoplar a otro panel, creando un divisor entre ellos). Aun así, los paneles redimensionables no se pueden conectar (acoplar) a barras de acoplamiento.
Si tu aplicación usa paneles que no se pueden cambiar de tamaño, derívelos de la CPane Class. Si la aplicación usa paneles redimensionables, derivelos 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 se ordena para 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 redirige esta llamada al administrador de acoplamiento.
Barras de acoplamiento
Cada ventana del 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 del marco principal, llame a EnableDocking
. Para habilitar 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 mueve la barra de herramientas de una fila a otra dentro de la misma barra de acoplamiento, el marco crea una nueva fila y cambia el tamaño de la barra de acoplamiento en consecuencia, o coloca la barra de herramientas en una fila existente.
Ventanas de marco pequeño
Un panel flotante reside en una ventana de marco pequeño. Las ventanas de marco pequeño se representan mediante dos clases: CMDITabInfo ( clase que solo puede contener un panel) y CMultiPaneFrameWnd ( que puede contener varios paneles). Para hacer flotante un panel en su 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 llamados 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 del panel se llama 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. (A la izquierda y a la derecha no hacen referencia a los lados físicos, sino a identificar las ramas de una estructura de árbol). De esta manera, podemos crear un árbol de paneles y divisores y, por tanto, lograr diseños complejos de paneles que se pueden cambiar de tamaño juntos. La CPaneContainer
clase mantiene el árbol de contenedores; también incluye dos listas de 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.
Ocultar automáticamente barras de control
De forma predeterminada, cada uno 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 CMFCAutoHideBar
objeto . El marco coloca la nueva clase CMFCAutoHideBar
en CAutoHideDockSite. El marco también adjunta el CMFCAutoHideButton
elemento a la barra de herramientas. La clase CDockingManager mantiene el CDockablePane
.
Barras de control con pestañas y barras de Outlook
La clase CMFCBaseTabCtrl implementa la funcionalidad base de una ventana con pestañas desmontables. Para usar un objeto , inicialice una CMFCBaseTabCtrl
clase CBaseTabbedPane en la aplicación. CBaseTabbedPane
se deriva de CDockablePane
y mantiene un puntero a un CMFCBaseTabCtrl
objeto . CBaseTabbedPane
permite a los usuarios acoplar y cambiar el tamaño de las barras de control con pestañas. 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 se deriva de CBaseTabbedPane
. Para obtener más información sobre cómo usar la barra de Outlook, vea CMFCOutlookBar (clase).