Compartir a través de


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 a CView::OnActivateView.

  • Los mensajes de comando y muchos mensajes comunes de notificación de marcos, incluidos los administrados por las funciones OnSetFocus, OnHScroll y OnVScroll de CWnd, se delegan a la vista activa en ese momento mediante una ventana de marco CFrameWnd.

  • 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 marco CFrameWnd 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 mecanismo UPDATE_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 con LoadFrame 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 Windows ShellExecute.

  • 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 (para OnClose y OnQueryEndSession).

  • 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. En su lugar, use CWnd::DestroyWindow. 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

CObject

CCmdTarget

CWnd

CFrameWnd

Requisitos

Encabezadoafxwin.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 = 1

  • borderRequest = 2

  • borderSet = 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 CWndPreCreateWindow.

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 CWndRepositionBars 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)