Clase CFrameWnd
Proporciona la funcionalidad de una ventana de marco de interfaz de un único documento (SDI) de Windows superpuesta o emergente, junto con los miembros para administrar la ventana.
Sintaxis
class CFrameWnd : public CWnd
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CFrameWnd::CFrameWnd |
Construye un objeto CFrameWnd . |
Métodos públicos
Nombre | Descripción |
---|---|
CFrameWnd::ActivateFrame |
Hace que el marco esté visible y disponible para el usuario. |
CFrameWnd::BeginModalState |
Establece la ventana de marco en modal. |
CFrameWnd::Create |
Llamada para crear e inicializar la ventana de marco de Windows asociada al objeto CFrameWnd . |
CFrameWnd::CreateView |
Crea una vista dentro de un marco no derivado de CView . |
CFrameWnd::DockControlBar |
Acopla una barra de control. |
CFrameWnd::EnableDocking |
Permite que una barra de control esté acoplada. |
CFrameWnd::EndModalState |
Finaliza el estado modal de la ventana de marco. Habilita todas las ventanas que ha deshabilitado BeginModalState . |
CFrameWnd::FloatControlBar |
Hace que una barra de control sea flotante. |
CFrameWnd::GetActiveDocument |
Devuelve el objeto CDocument activo. |
CFrameWnd::GetActiveFrame |
Devuelve el objeto CFrameWnd activo. |
CFrameWnd::GetActiveView |
Devuelve el objeto CView activo. |
CFrameWnd::GetControlBar |
Recupera la barra de control. |
CFrameWnd::GetDockState |
Recupera el estado de acoplamiento de una ventana de marco. |
CFrameWnd::GetMenuBarState |
Recupera el estado de presentación del menú en la aplicación MFC actual. |
CFrameWnd::GetMenuBarVisibility |
Indica si el comportamiento predeterminado del menú de la aplicación MFC actual está oculto o visible. |
CFrameWnd::GetMessageBar |
Devuelve un puntero a la barra de estado que pertenece a la ventana de marco. |
CFrameWnd::GetMessageString |
Recupera el mensaje correspondiente a un id. de comando. |
CFrameWnd::GetTitle |
Recupera el título de la barra de control relacionada. |
CFrameWnd::InitialUpdateFrame |
Hace que se llame a la función miembro OnInitialUpdate que pertenece a todas las vistas de la ventana de marco. |
CFrameWnd::InModalState |
Devuelve un valor que indica si una ventana de marco está en un estado modal o no. |
CFrameWnd::IsTracking |
Determina si el separador se está moviendo. |
CFrameWnd::LoadAccelTable |
Llamada para cargar una tabla de aceleradores. |
CFrameWnd::LoadBarState |
Llamada para restaurar la configuración de la barra de control. |
CFrameWnd::LoadFrame |
Llamada para crear dinámicamente una ventana de marco a partir de la información del recurso. |
CFrameWnd::NegotiateBorderSpace |
Negocia el espacio de los bordes en la ventana de marco. |
CFrameWnd::OnBarCheck |
Se llama cada vez que se lleva a cabo una acción en la barra de control especificada. |
CFrameWnd::OnContextHelp |
Controla la ayuda de MAYÚS + F1 para los elementos en contexto. |
CFrameWnd::OnSetPreviewMode |
Establece o no la ventana de marco principal de la aplicación en modo de vista previa de impresión. |
CFrameWnd::OnUpdateControlBarMenu |
Recibe la llamada del marco cuando se actualiza el menú asociado. |
CFrameWnd::RecalcLayout |
Cambia la posición de las barras de control del objeto CFrameWnd . |
CFrameWnd::SaveBarState |
Llamada para guardar la configuración de la barra de control. |
CFrameWnd::SetActivePreviewView |
Designa la vista especificada para que sea la vista activa de la versión preliminar enriquecida. |
CFrameWnd::SetActiveView |
Devuelve el objeto activo CView . |
CFrameWnd::SetDockState |
Llamada para acoplar la ventana de marco en la ventana principal. |
CFrameWnd::SetMenuBarState |
Establece el estado de presentación del menú de la aplicación MFC actual en oculto o mostrado. |
CFrameWnd::SetMenuBarVisibility |
Establece el comportamiento predeterminado del menú en la aplicación MFC actual para que esté oculto o visible. |
CFrameWnd::SetMessageText |
Establece el texto de una barra de estado estándar. |
CFrameWnd::SetProgressBarPosition |
Establece la posición actual de la barra de progreso de Windows 7 que se muestra en la barra de tareas. |
CFrameWnd::SetProgressBarRange |
Establece el intervalo de la barra de progreso de Windows 7 que se muestra en la barra de tareas. |
CFrameWnd::SetProgressBarState |
Establece el tipo y el estado del indicador de progreso mostrado en un botón de la barra de tareas. |
CFrameWnd::SetTaskbarOverlayIcon |
Con sobrecarga. Aplica una superposición a un botón de barra de tareas para indicar el estado de la aplicación o una notificación al usuario. |
CFrameWnd::SetTitle |
Establece el título de la barra de control relacionada. |
CFrameWnd::ShowControlBar |
Llamada para mostrar la barra de control. |
CFrameWnd::ShowOwnedWindows |
Muestra todas las ventanas que son descendientes del objeto CFrameWnd . |
Métodos protegidos
Nombre | Descripción |
---|---|
CFrameWnd::OnCreateClient |
Crea una ventana de cliente para el marco. |
CFrameWnd::OnHideMenuBar |
Se llama antes de que se oculte el menú de la aplicación MFC actual. |
CFrameWnd::OnShowMenuBar |
Se llama antes de que se muestre el menú de la aplicación MFC actual. |
Miembros de datos públicos
Nombre | Descripción |
---|---|
CFrameWnd::m_bAutoMenuEnable |
Controla la habilitación y deshabilitación automáticas de las funciones de los elementos de menú. |
CFrameWnd::rectDefault |
Pase este CRect estático como parámetro al crear un objeto CFrameWnd para permitir que Windows elija el tamaño y la posición iniciales de la ventana. |
Comentarios
Para crear una ventana de marco útil para la aplicación, derive una clase de CFrameWnd
. Agregue variables miembro a la clase derivada para almacenar datos específicos de la aplicación. Implemente funciones miembro de controlador de mensajes y un mapa de mensajes en la clase derivada para especificar qué ocurre cuando los mensajes se dirigen a la ventana.
Hay tres maneras de construir una ventana de marco:
Directamente mediante
Create
.Directamente mediante
LoadFrame
.Indirectamente mediante una plantilla de documento.
Antes de llamar a Create
o LoadFrame
, debe construir el objeto frame-window en el montón mediante el operador de C++ new
. Antes de llamar a Create
, también puede registrar una clase de ventana con la función global AfxRegisterWndClass
para establecer el icono y los estilos de clase para el marco.
Use la función miembro Create
para pasar los parámetros de creación del marco como argumentos inmediatos.
LoadFrame
requiere menos argumentos que Create
y, en su lugar, recupera la mayoría de sus valores predeterminados de los recursos, incluido el título, el icono, la tabla de aceleradores y el menú del marco. Para que sea accesible por LoadFrame
, todos estos recursos deben tener el mismo identificador de recurso (por ejemplo, IDR_MAINFRAME
).
Cuando un objeto CFrameWnd
contiene vistas y documentos, el marco crea indirectamente en lugar de directamente por el programador. El objeto CDocTemplate
organiza la creación del marco y las vistas contenedoras, además de la conexión de las vistas al documento adecuado. Los parámetros del constructor CDocTemplate
especifican el CRuntimeClass
de las tres clases implicadas (documento, marco y vista). El marco usa un objeto CRuntimeClass
para crear dinámicamente nuevos marcos cuando lo especifique el usuario (por ejemplo, mediante el comando File New o el comando de interfaz de múltiples documentos [MDI] Window New).
Se debe declarar una clase frame-window derivada de CFrameWnd
con DECLARE_DYNCREATE
para que el mecanismo RUNTIME_CLASS
anterior funcione correctamente.
Una CFrameWnd
contiene implementaciones predeterminadas para realizar las siguientes funciones de una ventana principal en una aplicación típica para Windows:
Una ventana de marco
CFrameWnd
lleva a cabo el seguimiento de una vista activa que es independiente de la ventana activa de Windows o del foco de entrada actual. Cuando se reactiva el marco, se notifica a la vista activa mediante una llamada aCView::OnActivateView
.Los mensajes de comando y muchos mensajes comunes de notificación de marcos, incluidos los administrados por las funciones
OnSetFocus
,OnHScroll
yOnVScroll
deCWnd
, se delegan a la vista activa en ese momento mediante una ventana de marcoCFrameWnd
.La vista activa en ese momento (o la ventana de marco secundario MDI activa en el caso de un marco MDI) puede determinar el título de la ventana de marco. Esta característica se puede deshabilitar desactivando el bit de estilo
FWS_ADDTOTITLE
de la ventana de marco.Una ventana de marco
CFrameWnd
administra el posicionamiento de las barras de control, las vistas y otras ventanas secundarias dentro del área cliente de la ventana de marco. Una ventana de marco también lleva a cabo la actualización en tiempo de inactividad de la barra de herramientas y otros botones de barra de control. Una ventana de marcoCFrameWnd
también tiene implementaciones predeterminadas de comandos para activar y desactivar la barra de herramientas y la barra de estado.Una ventana de marco
CFrameWnd
administra la barra de menús principal. Cuando se muestra un menú emergente, la ventana de marco usa el mecanismoUPDATE_COMMAND_UI
para determinar qué elementos de menú deben estar habilitados, deshabilitados o activados. Cuando el usuario selecciona un elemento de menú, la ventana de marco actualiza la barra de estado con la cadena de mensaje de ese comando.Una ventana de marco
CFrameWnd
tiene una tabla de aceleración opcional que traduce automáticamente los aceleradores de teclado.Una ventana de marco
CFrameWnd
tiene un id. de ayuda opcional establecido conLoadFrame
que se usa para la ayuda contextual. Una ventana de marco es el orquestador principal de estados semimodales, como la ayuda contextual (MAYÚS + F1) y los modos de vista previa de impresión.Una ventana de marco
CFrameWnd
abrirá un archivo arrastrado desde el administrador de archivos y se colocará en la ventana de marco. Si una extensión de archivo está registrada y asociada a la aplicación, la ventana de marco responde a la solicitud abierta de intercambio de datos dinámico (DDE) que se produce cuando el usuario abre un archivo de datos en el administrador de archivos o cuando se llama a la función de WindowsShellExecute
.Si la ventana de marco es la ventana principal de la aplicación (es decir,
CWinThread::m_pMainWnd
), cuando el usuario cierra la aplicación, la ventana de marco solicita al usuario que guarde los documentos modificados (paraOnClose
yOnQueryEndSession
).Si la ventana de marco es la ventana principal de la aplicación, será el contexto para ejecutar WinHelp. Al cerrar la ventana de marco, se apagará
WINHELP.EXE
si se ha iniciado a fin de obtener ayuda para esta aplicación.
No use el operador de C++ delete
para destruir una ventana de marco. Use CWnd::DestroyWindow
en su lugar. La implementación CFrameWnd
de PostNcDestroy
eliminará el objeto de C++ cuando se destruya la ventana. Cuando el usuario cierra la ventana de marco, el controlador predeterminado OnClose
llamará a DestroyWindow
.
Para obtener más información sobre CFrameWnd
, vea Ventanas de marco.
Jerarquía de herencia
CFrameWnd
Requisitos
Encabezado: afxwin.h
CFrameWnd::ActivateFrame
Llame a esta función miembro para activar y restaurar la ventana de marco a fin de que esté visible y disponible para el usuario.
virtual void ActivateFrame(int nCmdShow = -1);
Parámetros
nCmdShow
Especifica el parámetro que se pasará a CWnd::ShowWindow
. De forma predeterminada, el marco se muestra y se restaura correctamente.
Comentarios
Normalmente, se llama a esta función miembro después de un evento que no sea de interfaz de usuario, como un DDE, OLE u otro evento que pueda mostrar la ventana de marco o su contenido al usuario.
La implementación predeterminada activa el marco y lo lleva a la parte superior de la orden Z y, si es necesario, lleva a cabo los mismos pasos para la ventana de marco principal de la aplicación.
Invalide esta función miembro para cambiar cómo se activa un marco. Por ejemplo, puede forzar la maximización de las ventanas secundarias MDI. Agregue la funcionalidad adecuada y, luego, llame a la versión de clase base con un nCmdShow
explícito.
Ejemplo
void CChildFrame::ActivateFrame(int nCmdShow)
{
// Create the child frame window maximized
nCmdShow = SW_MAXIMIZE;
CMDIChildWnd::ActivateFrame(nCmdShow);
}
CFrameWnd::BeginModalState
Llame a esta función miembro para convertir una ventana marco en modal.
virtual void BeginModalState();
CFrameWnd::CFrameWnd
Construye un objeto CFrameWnd
, pero no crea la ventana marco visible.
CFrameWnd();
Comentarios
Llame a Create
para crear la ventana visible.
CFrameWnd::Create
Llamada para crear e inicializar la ventana de marco de Windows asociada al objeto CFrameWnd
.
virtual BOOL Create(
LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle = WS_OVERLAPPEDWINDOW,
const RECT& rect = rectDefault,
CWnd* pParentWnd = NULL,
LPCTSTR lpszMenuName = NULL,
DWORD dwExStyle = 0,
CCreateContext* pContext = NULL);
Parámetros
lpszClassName
Se usa para apuntar a una cadena de caracteres que finaliza en null y que, a su vez, se usa para asignar el nombre de la clase Windows. El nombre de clase puede ser cualquier nombre que se haya registrado con la función global AfxRegisterWndClass
o la función de Windows RegisterClass
. Si el valor es NULL
, se usarán los atributos predeterminados predefinidos de la clase CFrameWnd
.
lpszWindowName
El valor de este parámetro se usa para apuntar a una cadena de caracteres que finaliza en null y que, a su vez, se usa para representar el nombre de la ventana. Se usa como texto para la barra de título.
dwStyle
Especifica los atributos de estilo de ventana. Incluya el estilo FWS_ADDTOTITLE
si quiere que la barra de título muestre automáticamente el nombre del documento representado en la ventana.
rect
Especifica el tamaño y la posición iniciales de la ventana. El valor rectDefault
se usa para permitir que el tamaño y la posición de la nueva ventana pueda determinarse desde Windows.
pParentWnd
Especifica la ventana primaria de esta ventana de marco. Este parámetro debe ser NULL
para ventanas de marco de nivel superior.
lpszMenuName
Identifica el nombre del recurso de menú que se usará con la ventana. Use MAKEINTRESOURCE
si el menú tiene un id. entero en lugar de una cadena. Este parámetro puede ser NULL
.
dwExStyle
Especifica los atributos de estilo extendidos de ventana.
pContext
Especifica un puntero a una estructura CCreateContext
. Este parámetro puede ser NULL
.
Valor devuelto
Valor distinto de cero si la inicialización se lleva a cabo correctamente; de lo contrario, es 0.
Comentarios
Construya un objeto CFrameWnd
en dos pasos. En primer lugar, invoque al constructor, que construye el objeto CFrameWnd
. Después, llame a Create
, que crea la ventana de marco de Windows y la conecta con el objeto CFrameWnd
. Create
inicializa el nombre de clase de ventana, así como el nombre de ventana, y registra los valores predeterminados del estilo, el elemento primario y el menú asociado.
Use LoadFrame
en lugar de Create
para cargar la ventana de marco desde un recurso en lugar de especificar sus argumentos.
CFrameWnd::CreateView
Llame a CreateView
para crear una vista dentro de un marco.
CWnd* CreateView(
CCreateContext* pContext,
UINT nID = AFX_IDW_PANE_FIRST);
Parámetros
pContext
Especifica el tipo de vista y el de documento.
nID
Número de id. de una vista.
Valor devuelto
Puntero a un objeto CWnd
si se lleva a cabo correctamente; de lo contrario, NULL
.
Comentarios
Use esta función miembro para crear "vistas" derivadas de CView
dentro de un marco. Después de llamar a CreateView
, debe establecer manualmente la vista en activa y como visible; estas tareas no se llevan a cabo automáticamente mediante CreateView
.
CFrameWnd::DockControlBar
Hace que una barra de control se acople a la ventana de marco.
void DockControlBar(
CControlBar* pBar,
UINT nDockBarID = 0,
LPCRECT lpRect = NULL);
Parámetros
pBar
Apunta a la barra de control que se acoplará.
nDockBarID
Determina los lados de la ventana de marco que se deben tener en cuenta para el acoplamiento. Puede ser 0 o uno o varios de los valores siguientes:
AFX_IDW_DOCKBAR_TOP
Acoplamiento al lado superior de la ventana de marco.AFX_IDW_DOCKBAR_BOTTOM
Acoplamiento al lado inferior de la ventana de marco.AFX_IDW_DOCKBAR_LEFT
Acoplamiento al lado izquierdo de la ventana de marco.AFX_IDW_DOCKBAR_RIGHT
Acoplamiento al lado derecho de la ventana de marco.
Si es 0, la barra de control se podrá acoplar a cualquier lado habilitado para el acoplamiento en la ventana de marco de destino.
lpRect
Determina, en coordenadas de pantalla, dónde se acoplará la barra de control en el área no cliente de la ventana de marco de destino.
Comentarios
La barra de control se acoplará a uno de los lados de la ventana de marco especificada en las llamadas a CControlBar::EnableDocking
y CFrameWnd::EnableDocking
. El lado elegido viene determinado por nDockBarID
.
CFrameWnd::EnableDocking
Llame a esta función para habilitar las barras de control acoplables en una ventana de marco.
void EnableDocking(DWORD dwDockStyle);
Parámetros
dwDockStyle
Especifica los lados de la ventana de marco que pueden servir como puntos de acoplamiento para las barras de control. Puede ser uno o varios de los siguientes:
CBRS_ALIGN_TOP
permite el acoplamiento en la parte superior del área cliente.CBRS_ALIGN_BOTTOM
permite el acoplamiento en la parte inferior del área cliente.CBRS_ALIGN_LEFT
permite el acoplamiento en el lado izquierdo del área cliente.CBRS_ALIGN_RIGHT
permite el acoplamiento en el lado derecho del área cliente.CBRS_ALIGN_ANY
permite el acoplamiento en cualquier lado del área cliente.
Comentarios
De forma predeterminada, las barras de control se acoplarán a un lado de la ventana de marco en el orden siguiente: superior, inferior, izquierda y derecha.
Ejemplo
Vea el ejemplo de CToolBar::Create
.
CFrameWnd::EndModalState
Llame a esta función miembro para cambiar una ventana marco de modal a no modal.
virtual void EndModalState();
Comentarios
EndModalState
habilita todas las ventanas que ha deshabilitado BeginModalState
.
CFrameWnd::FloatControlBar
Llame a esta función para que una barra de control no se acople a la ventana de marco.
void FloatControlBar(
CControlBar* pBar,
CPoint point,
DWORD dwStyle = CBRS_ALIGN_TOP);
Parámetros
pBar
Apunta a la barra de control que será flotante.
point
Ubicación, en coordenadas de pantalla, en la que se colocará la esquina superior izquierda de la barra de control.
dwStyle
Especifica si se debe alinear la barra de control horizontal o verticalmente dentro de su nueva ventana de marco. Puede ser cualquiera de los siguientes:
CBRS_ALIGN_TOP
orienta la barra de control verticalmente.CBRS_ALIGN_BOTTOM
orienta la barra de control verticalmente.CBRS_ALIGN_LEFT
orienta la barra de control horizontalmente.CBRS_ALIGN_RIGHT
orienta la barra de control horizontalmente.
Si se pasan estilos que especifican orientación horizontal y vertical, la barra de herramientas se orientará horizontalmente.
Comentarios
Normalmente, esto ocurre al iniciar la aplicación cuando el programa está restaurando la configuración de la ejecución anterior.
El marco llama a esta función cuando el usuario produce una operación de colocación liberando el botón izquierdo del mouse mientras arrastra la barra de control sobre una ubicación que no está disponible para acoplamiento.
CFrameWnd::GetActiveDocument
Llame a esta función miembro para obtener un puntero al CDocument
actual que está asociado a la vista activa.
virtual CDocument* GetActiveDocument();
Valor devuelto
Puntero al CDocument
actual. Si no hay ningún documento actual, devuelve NULL
.
CFrameWnd::GetActiveFrame
Llame a esta función miembro para obtener un puntero a la ventana secundaria de la interfaz de múltiples documentos (MDI) activa de una ventana de marco MDI.
virtual CFrameWnd* GetActiveFrame();
Valor devuelto
Puntero a la ventana secundaria MDI activa Si la aplicación es SDI o la ventana de marco MDI no tiene ningún documento activo, se devolverá el puntero implícito this
.
Comentarios
Si no hay ningún elemento secundario MDI activo o la aplicación es una interfaz de un único documento (SDI), se devolverá el puntero implícito this
.
CFrameWnd::GetActiveView
Llame a esta función miembro para obtener un puntero a la vista activa (si existe) asociada a una ventana de marco (CFrameWnd
).
CView* GetActiveView() const;
Valor devuelto
Puntero al CView
actual. Si no hay ninguna vista actual, devolverá NULL
.
Comentarios
Esta función devuelve NULL
cuando se la llama para una ventana de marco principal de MDI (CMDIFrameWnd
). En una aplicación MDI, la ventana de marco principal MDI no tiene ninguna vista asociada. En su lugar, cada ventana secundaria individual (CMDIChildWnd
) tiene una o varias vistas asociadas. La vista activa en una aplicación MDI se puede obtener primero buscando la ventana secundaria MDI activa y, luego, buscando la vista activa para esa ventana secundaria. La ventana secundaria MDI activa se puede encontrar llamando a la función MDIGetActive
o GetActiveFrame
, tal como se muestra a continuación:
CMDIFrameWnd *pFrame = (CMDIFrameWnd*)AfxGetApp()->GetMainWnd();
// Get the active MDI child window.
CMDIChildWnd *pChild = (CMDIChildWnd*)pFrame->GetActiveFrame();
// or CMDIChildWnd *pChild = pFrame->MDIGetActive();
// Get the active view attached to the active MDI child window.
CMyView *pView = (CMyView*)pChild->GetActiveView();
CFrameWnd::GetControlBar
Llame a GetControlBar
para acceder a la barra de control asociada al id.
CControlBar* GetControlBar(UINT nID);
Parámetros
nID
Número de id. de una barra de control.
Valor devuelto
Puntero a la barra de control asociada al id.
Comentarios
El parámetro nID
hace referencia al identificador único pasado al método Create
de la barra de control. Para obtener más información sobre las barras de control, consulte el tema titulado Barras de control.
GetControlBar
devolverá la barra de control incluso si está flotando y, por tanto, no es actualmente una ventana secundaria del marco.
CFrameWnd::GetDockState
Llame a esta función miembro para almacenar información de estado sobre las barras de control de la ventana de marco en un objeto CDockState
.
void GetDockState(CDockState& state) const;
Parámetros
state
Contiene el estado actual de las barras de control de la ventana de marco tras la devolución.
Comentarios
Después, puede escribir el contenido de CDockState
en el almacenamiento mediante CDockState::SaveState
o Serialize
. Si más adelante quiere restaurar las barras de control a un estado anterior, cargue el estado con CDockState::LoadState
o Serialize
y llame a SetDockState
para aplicar el estado anterior a las barras de control de la ventana de marco.
CFrameWnd::GetMenuBarState
Recupera el estado de presentación del menú en la aplicación MFC actual.
virtual DWORD GetMenuBarState();
Valor devuelto
El valor devuelto puede ser uno de los siguientes:
AFX_MBS_VISIBLE
(0x01) : el menú está visible.AFX_MBS_HIDDEN
(0x02): el menú está oculto.
Comentarios
Si se produce un error en tiempo de ejecución, este método se declarará en modo de depuración y generará una excepción derivada de la clase CException
.
CFrameWnd::GetMenuBarVisibility
Indica si el estado predeterminado del menú de la aplicación MFC actual está oculto o visible.
virtual DWORD CFrameWnd::GetMenuBarVisibility();
Valor devuelto
Este método devuelve uno de los siguientes valores:
AFX_MBV_KEEPVISIBLE
(0x01): el menú se muestra en todo momento y, de forma predeterminada, no tiene el foco.AFX_MBV_DISPLAYONFOCUS
(0x02): el menú está oculto de forma predeterminada. Si el menú está oculto, presione la tecla ALT para mostrarlo y asígnele el foco. Si se muestra el menú, presione la tecla ALT o ESC para ocultarlo.AFX_MBV_ DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10
(0x06): el menú está oculto de forma predeterminada. Si el menú está oculto, presione la tecla F10 para mostrarlo y asígnele el foco. Si se muestra el menú, presione la tecla F10 para activar o desactivar el foco en el menú. El menú se mostrará hasta que presione la tecla ALT o ESC para ocultarlo.
Comentarios
Si se produce un error en tiempo de ejecución, este método se declarará en modo de depuración y generará una excepción derivada de la clase CException
.
CFrameWnd::GetMessageBar
Llame a esta función miembro para obtener un puntero a la barra de estado.
virtual CWnd* GetMessageBar();
Valor devuelto
Puntero a la ventana de la barra de estado.
CFrameWnd::GetMessageString
Invalide esta función a fin de proporcionar cadenas personalizadas para los id. de comando.
virtual void GetMessageString(
UINT nID,
CString& rMessage) const;
Parámetros
nID
Id. de recurso del mensaje elegido.
rMessage
Objeto CString
en el que se colocará el mensaje.
Comentarios
La implementación predeterminada simplemente carga la cadena especificada por nID
desde el archivo de recursos. El marco llama a esta función cuando hay que actualizar la cadena de mensaje de la barra de estado.
CFrameWnd::GetTitle
Recupera el título del objeto de ventana.
CString GetTitle() const;
Valor devuelto
Objeto CString
que contiene el título actual del objeto de ventana.
CFrameWnd::InitialUpdateFrame
Llame a IntitialUpdateFrame
después de crear un nuevo marco con Create
.
void InitialUpdateFrame(
CDocument* pDoc,
BOOL bMakeVisible);
Parámetros
pDoc
Apunta al documento al que está asociada la ventana de marco. Puede ser NULL
.
bMakeVisible
Si TRUE
, indica que el marco debe estar visible y activo. Si FALSE
, no se hace visible ningún descendiente.
Comentarios
Esto provoca que todas las vistas de esa ventana de marco reciban sus llamadas OnInitialUpdate
.
Además, si no había ninguna vista activa, la vista principal de la ventana de marco pasará a estar activada. La vista principal es una vista con un id. secundario de AFX_IDW_PANE_FIRST
. Por último, la ventana de marco se hace visible si bMakeVisible
no es cero. Si bMakeVisible
es 0, el foco actual y el estado visible de la ventana de marco permanecerán sin cambios. No es necesario llamar a esta función al usar la implementación del marco de Archivo nuevo y Abrir archivo.
CFrameWnd::InModalState
Llame a esta función miembro para comprobar si una ventana de marco es modal o no.
BOOL InModalState() const;
Valor devuelto
En caso afirmativo, no es cero; en caso contrario, es 0,
CFrameWnd::IsTracking
Llame a esta función miembro para determinar si el separador de la ventana se está moviendo.
BOOL IsTracking() const;
Valor devuelto
No es cero si una operación del separador está en curso; de lo contrario, 0.
CFrameWnd::LoadAccelTable
Llamada para cargar la tabla de aceleradores especificada.
BOOL LoadAccelTable(LPCTSTR lpszResourceName);
Parámetros
lpszResourceName
Identifica el nombre del recurso de acelerador. Use MAKEINTRESOURCE
si el recurso se identifica con un id. entero.
Valor devuelto
No es cero si la tabla del acelerador se ha cargado correctamente; de lo contrario, 0.
Comentarios
Tan solo se puede cargar una tabla a la vez.
Las tablas de aceleradores cargadas desde recursos se liberan automáticamente cuando finaliza la aplicación.
Si llama a LoadFrame
para crear la ventana de marco, el marco carga una tabla de aceleradores junto con los recursos de menú e iconos. Ya no será necesaria la llamada posterior a esta función.
CFrameWnd::LoadBarState
Llame a esta función para restaurar la configuración de cada barra de control propiedad de la ventana de marco.
void LoadBarState(LPCTSTR lpszProfileName);
Parámetros
lpszProfileName
Nombre de una sección del archivo de inicialización (INI) o una clave en el registro de Windows donde se almacena la información de estado.
Comentarios
La información restaurada incluye la visibilidad, la orientación horizontal o vertical, el estado de acoplamiento y la posición de la barra de control.
Para poder llamar a LoadBarState
, la configuración que quiera restaurar debe escribirse en el registro. Escriba la información en el registro llamando a CWinApp::SetRegistryKey
. Escriba la información en el archivo INI llamando a SaveBarState
.
CFrameWnd::LoadFrame
Llamada para crear dinámicamente una ventana de marco a partir de la información del recurso.
virtual BOOL LoadFrame(
UINT nIDResource,
DWORD dwDefaultStyle = WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,
CWnd* pParentWnd = NULL,
CCreateContext* pContext = NULL);
Parámetros
nIDResource
Id. de los recursos compartidos y asociados a la ventana de marco.
dwDefaultStyle
Valor de estilo del marco. Incluya el estilo FWS_ADDTOTITLE
si quiere que la barra de título muestre automáticamente el nombre del documento representado en la ventana.
pParentWnd
Puntero al elemento primario del marco.
pContext
Un puntero a una estructura CCreateContext
. Este parámetro puede ser NULL
.
Comentarios
Construya un objeto CFrameWnd
en dos pasos. En primer lugar, invoque al constructor, que construye el objeto CFrameWnd
. Después, llame a LoadFrame
, que carga la ventana de marco de Windows y los recursos asociados y adjunta la ventana de marco al objeto CFrameWnd
. El parámetro nIDResource
especifica el menú, la tabla de aceleradores, el icono y el recurso de cadena del título de la ventana de marco.
Use la función miembro Create
en lugar de LoadFrame
cuando quiera especificar todos los parámetros de creación de la ventana de marco.
El marco llama a LoadFrame
cuando crea una ventana de marco mediante un objeto de plantilla de documento.
El marco de trabajo usa el argumento pContext
para especificar los objetos que se conectarán a la ventana de marco, incluidos los objetos de vista contenidos. Puede establecer el argumento pContext
en NULL
al llamar a LoadFrame
.
CFrameWnd::m_bAutoMenuEnable
Cuando este miembro de datos esté habilitado (que es el valor predeterminado), los elementos de menú que no tengan el manipulador ON_UPDATE_COMMAND_UI
o ON_COMMAND
se deshabilitarán automáticamente si el usuario extrae un menú.
BOOL m_bAutoMenuEnable;
Comentarios
Los elementos de menú que tengan un manipulador ON_COMMAND
, pero que no tengan ningún ON_UPDATE_COMMAND_UI
, se habilitarán automáticamente.
Cuando se establezca este miembro de datos, los elementos de menú se habilitarán automáticamente, de la misma manera que los botones de la barra de herramientas.
Nota:
m_bAutoMenuEnable
no tiene ningún efecto en los elementos de menú de nivel superior.
Este miembro de datos simplifica la implementación de comandos opcionales en función de la selección actual y reduce la necesidad de escribir manipuladores ON_UPDATE_COMMAND_UI
para habilitar y deshabilitar elementos de menú.
Ejemplo
// CMainFrame is application-defined object of type CFrameWnd
CMainFrame::CMainFrame()
: m_hDrawMenu(NULL), m_hDrawAccel(NULL), m_bCheck(false), m_nWindowTimer(0), m_nCallbackTimer(0)
{
// Set to FALSE so no ON_UPDATE_COMMAND_UI
// or ON_COMMAND handlers are needed, and
// CMenu::EnableMenuItem() will work as expected.
m_bAutoMenuEnable = FALSE;
}
CFrameWnd::NegotiateBorderSpace
Llame a esta función miembro para negociar el espacio de borde en una ventana de marco durante la activación de OLE en contexto.
virtual BOOL NegotiateBorderSpace(
UINT nBorderCmd,
LPRECT lpRectBorder);
Parámetros
nBorderCmd
Contiene uno de los siguientes valores de enum BorderCmd
:
borderGet
= 1borderRequest
= 2borderSet
= 3
lpRectBorder
Puntero a una estructuraRECT
o un objeto CRect
que especifica las coordenadas del borde.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Esta función miembro es la implementación CFrameWnd
de la negociación del espacio de borde OLE.
CFrameWnd::OnBarCheck
Se llama cada vez que se lleva a cabo una acción en la barra de control especificada.
afx_msg BOOL OnBarCheck(UINT nID);
Parámetros
nID
Id. de la barra de control que se muestra.
Valor devuelto
Distinto de cero si existía la barra de control; de lo contrario, 0.
CFrameWnd::OnContextHelp
Controla la ayuda de MAYÚS + F1 para los elementos en contexto.
afx_msg void OnContextHelp();
Comentarios
Para habilitar la ayuda contextual, debe agregar una
ON_COMMAND(ID_CONTEXT_HELP, &CMainFrame::OnContextHelp)
instrucción al mapa de mensajes de clase CFrameWnd
y una entrada de tabla de aceleradores, normalmente MAYÚS + F1, a fin de habilitar esta función miembro.
Si la aplicación es un contenedor OLE, OnContextHelp
coloca todos los elementos en contexto incluidos en el objeto de ventana de marco en el modo de ayuda. El cursor cambia a una flecha y un signo de interrogación, y el usuario puede mover el puntero del mouse y presionar el botón izquierdo del mouse para seleccionar un cuadro de diálogo, una ventana, un menú o un botón de comando. Esta función miembro llama a la función de Windows WinHelp
con el contexto de ayuda del objeto ubicado bajo el cursor.
CFrameWnd::OnCreateClient
Recibe la llamada del marco durante la ejecución de OnCreate
.
virtual BOOL OnCreateClient(
LPCREATESTRUCT lpcs,
CCreateContext* pContext);
Parámetros
lpcs
Puntero a una estructura CREATESTRUCT
de Windows.
pContext
Un puntero a una estructura CCreateContext
.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
Nunca llame a esta función.
La implementación predeterminada de esta función crea un objeto CView
a partir de la información proporcionada en pContext
, si es posible.
Invalide esta función para invalidar los valores pasados en el objeto CCreateContext
o para cambiar la forma en la que se crean los controles del área cliente principal de la ventana de marco. Los miembros CCreateContext
que puede invalidar se describen en la clase CCreateContext
.
Nota:
No reemplace los valores pasados en la estructura CREATESTRUCT
. Son solo para uso informativo. Si quiere invalidar el rectángulo de ventana inicial, por ejemplo, invalide la función miembro CWnd
PreCreateWindow
.
CFrameWnd::OnHideMenuBar
Se llama a esta función cuando el sistema está a punto de ocultar la barra de menús en la aplicación MFC actual.
virtual void OnHideMenuBar();
Comentarios
Este controlador de eventos permite a la aplicación llevar a cabo acciones personalizadas cuando el sistema está a punto de ocultar el menú. No se puede impedir que se oculte el menú, pero sí se puede, por ejemplo, llamar a otros métodos para recuperar el estado o el estilo de menú.
CFrameWnd::OnSetPreviewMode
Llame a esta función miembro para establecer la ventana de marco principal de la aplicación dentro y fuera del modo de vista previa de impresión.
virtual void OnSetPreviewMode(
BOOL bPreview,
CPrintPreviewState* pState);
Parámetros
bPreview
Especifica si se va a colocar o no la aplicación en modo de vista previa de impresión. Establézcalo en TRUE
para colocarla en la vista previa de impresión, o bien en FALSE
para cancelar el modo de vista previa.
pState
Un puntero a una estructura CPrintPreviewState
.
Comentarios
La implementación predeterminada deshabilita todas las barras de herramientas estándares y oculta tanto el menú principal como la ventana del cliente principal. Esto convierte las ventanas de marco MDI en ventanas de marco SDI temporales.
Invalide esta función miembro para personalizar la ocultación y la presentación de barras de control y otras piezas de ventana de marco durante la vista previa de impresión. Llame a la implementación de la clase base desde la versión invalidada.
CFrameWnd::OnShowMenuBar
Se llama a esta función cuando el sistema está a punto de mostrar la barra de menús en la aplicación MFC actual.
virtual void OnShowMenuBar();
Comentarios
Este controlador de eventos permite a la aplicación llevar a cabo acciones personalizadas cuando el menú está a punto de mostrarse. No se puede impedir que se muestre el menú, pero sí se puede, por ejemplo, llamar a otros métodos para recuperar el estado o el estilo de menú.
CFrameWnd::OnUpdateControlBarMenu
Recibe la llamada del marco cuando se actualiza el menú asociado.
afx_msg void OnUpdateControlBarMenu(CCmdUI* pCmdUI);
Parámetros
pCmdUI
Puntero a un objeto CCmdUI
que representa el menú que ha generado el comando update. El controlador de actualizaciones llama a la función miembro Enable
del objeto CCmdUI
mediante pCmdUI
para que actualice la interfaz de usuario.
CFrameWnd::RecalcLayout
Recibe la llamada del marco de trabajo cuando se activan o desactivan las barras de control estándares o cuando se cambia el tamaño de la ventana de marco.
virtual void RecalcLayout(BOOL bNotify = TRUE);
Parámetros
bNotify
Determina si el elemento activo en contexto de la ventana de marco recibe la notificación del cambio de diseño. Si es TRUE
, se notifica al elemento; de lo contrario, FALSE
.
Comentarios
La implementación predeterminada de esta función miembro llama a la función miembro CWnd
RepositionBars
para cambiar la posición de todas las barras de control del marco, así como en la ventana del cliente principal (normalmente un elemento CView
o MDICLIENT
).
Invalide esta función miembro para controlar la apariencia y el comportamiento de las barras de control después de cambiar el diseño de la ventana de marco. Por ejemplo, llámela cuando active o desactive las barras de control o agregue otra barra de control.
CFrameWnd::rectDefault
Pase este CRect
estático como parámetro al crear una ventana para permitir que Windows elija el tamaño y la posición iniciales de la ventana.
static AFX_DATA const CRect rectDefault;
CFrameWnd::SaveBarState
Llame a esta función para almacenar información sobre cada barra de control propiedad de la ventana de marco.
void SaveBarState(LPCTSTR lpszProfileName) const;
Parámetros
lpszProfileName
Nombre de una sección del archivo de inicialización o una clave en el registro de Windows donde se almacena la información de estado.
Comentarios
Esta información se puede leer desde el archivo de inicialización mediante LoadBarState
. La información almacenada incluye la visibilidad, la orientación horizontal o vertical, el estado de acoplamiento y la posición de la barra de control.
CFrameWnd::SetActivePreviewView
Designa la vista especificada para que sea la vista activa de la versión preliminar enriquecida.
void SetActivePreviewView(CView* pViewNew);
Parámetros
pViewNew
Puntero a una vista que se activará.
Comentarios
CFrameWnd::SetActiveView
Llame a esta función miembro para establecer la vista activa.
void SetActiveView(
CView* pViewNew,
BOOL bNotify = TRUE);
Parámetros
pViewNew
Especifica un puntero a un objeto CView
, o bien NULL
para ninguna vista activa.
bNotify
Especifica si se va a notificar la activación de la vista. Si TRUE
, se llama a OnActivateView
para la nueva vista; si FALSE
, no se llama.
Comentarios
El marco llamará a esta función automáticamente a medida que el usuario cambie el foco a una vista dentro de la ventana de marco. Puede llamar a SetActiveView
explícitamente para cambiar el enfoque a la vista especificada.
CFrameWnd::SetDockState
Llame a esta función miembro para almacenar información de estado sobre las barras de control de la ventana de marco en un objeto CDockState
.
void SetDockState(const CDockState& state);
Parámetros
state
Aplique el estado almacenado a las barras de control de la ventana de marco.
Comentarios
Para restaurar un estado anterior de las barras de control, puede cargar el estado almacenado con CDockState::LoadState
o Serialize
, y usar SetDockState
para aplicarlo a las barras de control de la ventana de marco. El estado anterior se almacena en el CDockState
objeto con GetDockState
CFrameWnd::SetMenuBarState
Establece el estado de presentación del menú de la aplicación MFC actual en oculto o mostrado.
virtual BOOL SetMenuBarState(DWORD nState);
Parámetros
nState
[in] Especifica si se va a mostrar u ocultar el menú. El parámetro nState
puede tener los valores siguientes:
AFX_MBS_VISIBLE
(0x01): muestra el menú si está oculto, pero no tiene ningún efecto si está visible.AFX_MBS_HIDDEN
(0x02): oculta el menú si está visible, pero no tiene ningún efecto si está oculto.
Valor devuelto
TRUE
si este método cambia correctamente el estado del menú; de lo contrario, FALSE
.
Comentarios
Si se produce un error en tiempo de ejecución, este método se declarará en modo de depuración y generará una excepción derivada de la clase CException
.
CFrameWnd::SetMenuBarVisibility
Establece el comportamiento predeterminado del menú en la aplicación MFC actual para que esté oculto o visible.
virtual void SetMenuBarVisibility(DWORD nStyle);
Parámetros
nStyle
[in] Especifica si el menú está oculto de forma predeterminada o está visible y tiene el foco. El parámetro nStyle
puede tener los valores siguientes:
AFX_MBV_KEEPVISIBLE
(0x01): el menú se muestra en todo momento y, de forma predeterminada, no tiene el foco.AFX_MBV_DISPLAYONFOCUS
(0x02): el menú está oculto de forma predeterminada. Si el menú está oculto, presione la tecla ALT para mostrarlo y asígnele el foco. Si se muestra el menú, presione la tecla ALT o ESC para ocultar el menú.AFX_MBV_DISPLAYONFOCUS | AFX_MBV_DISPLAYONF10
(0x06): el menú está oculto de forma predeterminada. Si el menú está oculto, presione la tecla F10 para mostrarlo y asígnele el foco. Si se muestra el menú, presione la tecla F10 para activar o desactivar el foco en el menú. El menú se mostrará hasta que presione la tecla ALT o ESC para ocultarlo.
Comentarios
Si el valor del parámetro nStyle
no es válido, este método se declara en modo de depuración y genera CInvalidArgException
en modo de versión. Si se produce otro error en tiempo de ejecución, este método se declarará en modo de depuración y generará una excepción derivada de la clase CException
.
Este método afecta al estado de los menús en las aplicaciones escritas para Windows Vista y versiones posteriores.
CFrameWnd::SetMessageText
Llame a esta función para colocar una cadena en el panel de la barra de estado que tiene un identificador de 0.
void SetMessageText(LPCTSTR lpszText);
void SetMessageText(UINT nID);
Parámetros
lpszText
Apunta a la cadena que se va a colocar en la barra de estado.
nID
Identificador de recurso de cadena de la cadena que se va a colocar en la barra de estado.
Comentarios
Normalmente, este es el panel situado más a la izquierda y más largo de la barra de estado.
CFrameWnd::SetProgressBarPosition
Establece la posición actual de la barra de progreso de Windows 7 que se muestra en la barra de tareas.
void SetProgressBarPosition(int nProgressPos);
Parámetros
nProgressPos
Especifica la posición que se establecerá. Debe estar en el intervalo establecido por SetProgressBarRange
.
Comentarios
CFrameWnd::SetProgressBarRange
Establece el intervalo de la barra de progreso de Windows 7 que se muestra en la barra de tareas.
void SetProgressBarRange(
int nRangeMin,
int nRangeMax);
Parámetros
nRangeMin
Valor mínimo.
nRangeMax
Valor máximo.
Comentarios
CFrameWnd::SetProgressBarState
Establece el tipo y el estado del indicador de progreso mostrado en un botón de la barra de tareas.
void SetProgressBarState(TBPFLAG tbpFlags);
Parámetros
tbpFlags
Marcas que controlan el estado actual del botón de progreso. Especifique solo una de las marcas siguientes, ya que todos los estados se excluyen mutuamente: TBPF_NOPROGRESS
, TBPF_INDETERMINATE
, TBPF_NORMAL
, TBPF_ERROR
o TBPF_PAUSED
.
Comentarios
CFrameWnd::SetTaskbarOverlayIcon
Con sobrecarga. Aplica una superposición a un botón de barra de tareas para indicar el estado de la aplicación o notificar al usuario.
BOOL SetTaskbarOverlayIcon(
UINT nIDResource,
LPCTSTR lpcszDescr);
BOOL SetTaskbarOverlayIcon(
HICON hIcon,
LPCTSTR lpcszDescr);
Parámetros
nIDResource
Especifica el id. de recurso de un icono que se usará como superposición. Consulte la descripción de hIcon
para obtener más información.
lpcszDescr
Puntero a una cadena que proporciona una versión de texto alternativo de la información transmitida por la superposición con fines de accesibilidad.
hIcon
Manipulador de un icono que se usará como superposición. Debe ser un icono pequeño, de 16 x 16 píxeles y 96 puntos por pulgada (ppp). Si ya se ha aplicado un icono de superposición al botón de la barra de tareas, se reemplazará la superposición actual. Este valor puede ser NULL
. El modo en el que se controla un valor NULL
depende de si el botón de la barra de tareas representa una sola ventana o un grupo de ventanas. Liberar hIcon
cuando ya no es necesario es responsabilidad de la aplicación que hace la llamada.
Valor devuelto
TRUE
si se ejecuta correctamente; FALSE
si la versión del sistema operativo es inferior a Windows 7 o si se produce un error al establecer el icono.
Comentarios
CFrameWnd::SetTitle
Establece el título del objeto de ventana.
void SetTitle(LPCTSTR lpszTitle);
Parámetros
lpszTitle
Puntero a una cadena de caracteres que contiene el título del objeto de ventana.
CFrameWnd::ShowControlBar
Llame a esta función miembro para mostrar u ocultar la barra de control.
void ShowControlBar(
CControlBar* pBar,
BOOL bShow,
BOOL bDelay);
Parámetros
pBar
Puntero a la barra de control que se mostrará u ocultará.
bShow
Si es TRUE
, especifica que se debe mostrar la barra de control. Si es FALSE
, especifica que se debe ocultar la barra de control.
bDelay
Si es TRUE
, se mostrará la barra de control con retraso. Si es FALSE
, se mostrará la barra de control inmediatamente.
CFrameWnd::ShowOwnedWindows
Llame a esta función miembro para mostrar todas las ventanas que son descendientes del objeto CFrameWnd
.
void ShowOwnedWindows(BOOL bShow);
Parámetros
bShow
Especifica si se van a mostrar u ocultar las ventanas que se poseen.
Consulte también
CWnd
(clase)
Gráfico de jerarquías
CWnd
(clase)
CMDIFrameWnd
(clase)
CMDIChildWnd
(clase)
CView
(clase)
CDocTemplate
(clase)
CRuntimeClass
(Estructura)