Compartir a través de


Clase CSplitterWnd

Proporciona la funcionalidad de una ventana divisora, que es una ventana que contiene varios paneles.

Sintaxis

class CSplitterWnd : public CWnd

Miembros

Constructores públicos

Nombre Descripción
CSplitterWnd::CSplitterWnd Llame para construir un objeto CSplitterWnd.

Métodos públicos

Nombre Descripción
CSplitterWnd::ActivateNext Ejecuta el comando Panel siguiente o Panel anterior.
CSplitterWnd::CanActivateNext Comprueba si el comando Panel siguiente o Panel anterior se puede ejecutar actualmente.
CSplitterWnd::Create Llame para crear una ventana separadora dinámica y adjuntarla al objeto CSplitterWnd.
CSplitterWnd::CreateScrollBarCtrl Crea un control de barra de desplazamiento compartida.
CSplitterWnd::CreateStatic Llame para crear una ventana separadora estática y adjuntarla al objeto CSplitterWnd.
CSplitterWnd::CreateView Llame a para crear un panel en una ventana separadora.
CSplitterWnd::DeleteColumn Elimina una columna de la ventana separadora.
CSplitterWnd::DeleteRow Elimina una fila de la ventana separadora.
CSplitterWnd::DeleteView Elimina una vista de la ventana separadora.
CSplitterWnd::DoKeyboardSplit Ejecuta el comando de división del teclado, normalmente "Dividir ventana".
CSplitterWnd::DoScroll Realiza el desplazamiento sincronizado de las ventanas divididas.
CSplitterWnd::DoScrollBy Desplaza ventanas divididas un número de píxeles determinado.
CSplitterWnd::GetActivePane Determina el panel activo del enfoque o la vista activa en el marco.
CSplitterWnd::GetColumnCount Devuelve el recuento de columnas del panel actual.
CSplitterWnd::GetColumnInfo Devuelve información sobre la columna especificada.
CSplitterWnd::GetPane Devuelve un panel en la fila y columna especificadas.
CSplitterWnd::GetRowCount Devuelve el recuento de filas del panel actual.
CSplitterWnd::GetRowInfo Devuelve información sobre la fila especificada.
CSplitterWnd::GetScrollStyle Devuelve el estilo de la barra de desplazamiento compartida.
CSplitterWnd::IdFromRowCol Devuelve el id. de ventana secundaria del panel en la fila y columna especificadas.
CSplitterWnd::IsChildPane Llame a para determinar si la ventana es actualmente un panel secundario de esta ventana separadora.
CSplitterWnd::IsTracking Determina si el separador se está moviendo.
CSplitterWnd::RecalcLayout Llame a para volver a mostrar la ventana separadora después de ajustar el tamaño de fila o columna.
CSplitterWnd::SetActivePane Establece un panel como el activo para el marco.
CSplitterWnd::SetColumnInfo Llame para establecer la información de columna especificada.
CSplitterWnd::SetRowInfo Llame para establecer la información de fila especificada.
CSplitterWnd::SetScrollStyle Especifica el nuevo estilo de barra de desplazamiento para la compatibilidad con la barra de desplazamiento compartida de la ventana separadora.
CSplitterWnd::SplitColumn Indica el lugar en el que una ventana de marco se divide verticalmente.
CSplitterWnd::SplitRow Indica el lugar en el que una ventana de marco se divide horizontalmente.

Métodos protegidos

Nombre Descripción
CSplitterWnd::OnDraw El marco lo llama para dibujar una ventana separadora.
CSplitterWnd::OnDrawSplitter Representa una imagen de una ventana dividida.
CSplitterWnd::OnInvertTracker Representa la imagen de una ventana dividida para que tenga el mismo tamaño y forma que la ventana de marco.

Comentarios

Un panel suele ser un objeto específico de la aplicación derivado de CView, pero puede ser cualquier objeto CWnd que tenga el id. de ventana secundaria adecuado.

Normalmente, un objeto CSplitterWnd se incrusta en un objeto primario CFrameWnd o CMDIChildWnd. Cree un objeto CSplitterWnd mediante los pasos siguientes:

  1. Inserte una variable miembro CSplitterWnd en el marco primario.

  2. Invalide la función miembro CFrameWnd::OnCreateClient del marco primario.

  3. Desde la OnCreateClient invalidada, llame a la función miembro Create o CreateStatic de CSplitterWnd.

Llame a la función miembro Create para crear una ventana separadora dinámica. Normalmente, se usa una ventana separadora dinámica para crear y desplazar un número de paneles individuales, o vistas, del mismo documento. El marco crea automáticamente un panel inicial para el separador; a continuación, el marco crea, cambia el tamaño y elimina paneles adicionales a medida que el usuario opera los controles de la ventana separadora.

Cuando llama a Create, especifica una altura mínima de fila y un ancho de columna que determinan cuándo los paneles son demasiado pequeños para mostrarse por completo. Después de llamar a Create, puede ajustar estos mínimos llamando a las funciones miembro SetColumnInfo y SetRowInfo.

Use también las funciones miembro SetColumnInfo y SetRowInfo para establecer un ancho "ideal" para una columna y una altura "ideal" para una fila. Cuando el marco muestra una ventana separadora, primero muestra el marco primario y, a continuación, la ventana separadora. A continuación, el marco diseña los paneles en columnas y filas según sus dimensiones ideales, y trabaja desde la esquina superior izquierda hasta la esquina inferior derecha del área cliente de la ventana separadora.

Todos los paneles de una ventana separadora dinámica deben ser de la misma clase. Las aplicaciones conocidas que admiten ventanas separadoras dinámicas incluyen Microsoft Word y Microsoft Excel.

Llame a la función miembro CreateStatic para crear una ventana separadora estática. El usuario solo puede cambiar el tamaño de los paneles en una ventana separadora estática, no su cantidad ni el orden.

Debe crear específicamente todos los paneles del separador estático al crear el separador estático. Asegúrese de crear todos los paneles antes de que la función miembro OnCreateClient del marco primario devuelva un valor, o el marco no mostrará correctamente la ventana.

La función miembro CreateStatic inicializa automáticamente un separador estático con una altura de fila mínima y un ancho de columna de 0. Después de llamar a Create, puede ajustar estos mínimos llamando a las funciones miembro SetColumnInfo y SetRowInfo. Use también SetColumnInfo y SetRowInfo después de llamar a CreateStatic para indicar las dimensiones ideales deseadas del panel.

Los paneles individuales de un separador estático suelen pertenecer a diferentes clases. Para obtener ejemplos de ventanas separadoras estáticas, consulte el editor de gráficos y el Administrador de archivos de Windows.

Una ventana separadora admite barras de desplazamiento especiales (aparte de las barras de desplazamiento que pueden tener los paneles). Estas barras de desplazamiento son elementos secundarios del objeto CSplitterWnd y se comparten con los paneles.

Puede crear estas barras de desplazamiento especiales crean al crear la ventana separadora. Por ejemplo, una CSplitterWnd que tiene una fila, dos columnas y el estilo WS_VSCROLL mostrará una barra de desplazamiento vertical compartida por los dos paneles. Cuando el usuario mueve la barra de desplazamiento, los mensajes de WM_VSCROLL se envían a ambos paneles. Cuando los paneles establecen la posición de la barra de desplazamiento, se establece la barra de desplazamiento compartida.

Para obtener más información sobre las ventanas separadoras, consulte la Nota técnica 29.

Para obtener más información sobre cómo crear ventanas separadoras dinámicas, consulte:

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CSplitterWnd

Requisitos

Encabezadoafxext.h:

CSplitterWnd::ActivateNext

Lo llama el marco para realizar el comando Panel siguiente o Panel anterior.

virtual void ActivateNext(BOOL bPrev = FALSE);

Parámetros

bPrev
Indica qué ventana se activará. TRUE para el anterior; FALSE para el siguiente.

Comentarios

Esta función miembro es un comando de alto nivel que usa la clase CView para delegar en la implementación CSplitterWnd.

CSplitterWnd::CanActivateNext

Lo llama el marco para comprobar si el comando Panel siguiente o Panel anterior es posible actualmente.

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

Parámetros

bPrev
Indica qué ventana se activará. TRUE para el anterior; FALSE para el siguiente.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Esta función miembro es un comando de alto nivel que usa la clase CView para delegar en la implementación CSplitterWnd.

CSplitterWnd::Create

Para crear una ventana separadora dinámica, llame a la función miembro Create.

virtual BOOL Create(
    CWnd* pParentWnd,
    int nMaxRows,
    int nMaxCols,
    SIZE sizeMin,
    CCreateContext* pContext,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
    UINT nID = AFX_IDW_PANE_FIRST);

Parámetros

pParentWnd
La ventana de marco principal de la ventana separadora.

nMaxRows
El número máximo de filas en la ventana separadora. Este valor no debe ser superior a 2.

nMaxCols
El número máximo de columnas en la ventana separadora. Este valor no debe ser superior a 2.

sizeMin
Especifica el tamaño mínimo con el que se puede mostrar un panel.

pContext
Un puntero a una estructura CCreateContext. En la mayoría de los casos, esto puede ser el pContext que se pasa a la ventana de marco principal.

dwStyle
Especifica el estilo de la ventana.

nID
El id. de la ventana secundaria. El id. puede ser AFX_IDW_PANE_FIRST a menos que la ventana separadora esté anidada dentro de otra ventana separadora.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Puede insertar un CSplitterWnd en un objeto primario CFrameWnd o CMDIChildWnd al realizar los siguientes pasos:

  1. Inserte una variable miembro CSplitterWnd en el marco primario.

  2. Invalide la función miembro CFrameWnd::OnCreateClient del marco primario.

  3. Llame a la función miembro Create desde la OnCreateClient invalidada.

Al crear una ventana separadora desde dentro de un marco primario, pase el parámetro pContext del marco primario a la ventana separadora. De lo contrario, este parámetro puede ser NULL.

El parámetro sizeMin establece la altura de fila mínima y el ancho de columna iniciales de una ventana separadora dinámica. Estos mínimos, que determinan si un panel es demasiado pequeño para mostrarse en su totalidad, se pueden cambiar con las funciones miembro SetRowInfo y SetColumnInfo.

Para obtener más información sobre las ventanas separadoras dinámicas, consulte "Ventanas separadoras" en el artículo Varios tipos de documentos, vistas y ventanas de marco, la Nota técnica 29 y la información general de la clase CSplitterWnd.

Ejemplo

// the following function is created by the MFC Application Wizard
// when you select Split window from the User Interface Features tab:
BOOL CMyChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   return m_wndSplitter.Create(this,
                               2, 2,          // TODO: adjust the number of rows, columns
                               CSize(10, 10), // TODO: adjust the minimum pane size
                               pContext);
}

CSplitterWnd::CreateScrollBarCtrl

Lo llama el marco para crear un control de barra de desplazamiento compartida.

virtual BOOL CreateScrollBarCtrl(
    DWORD dwStyle,
    UINT nID);

Parámetros

dwStyle
Especifica el estilo de la ventana.

nID
El id. de la ventana secundaria. El id. puede ser AFX_IDW_PANE_FIRST a menos que la ventana separadora esté anidada dentro de otra ventana separadora.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Invalide CreateScrollBarCtrl para incluir controles adicionales junto a una barra de desplazamiento. El comportamiento predeterminado es crear controles normales de barras de desplazamiento de Windows.

CSplitterWnd::CreateStatic

Para crear una ventana separadora estática, llame a la función miembro CreateStatic.

virtual BOOL CreateStatic(
    CWnd* pParentWnd,
    int nRows,
    int nCols,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE,
    UINT nID = AFX_IDW_PANE_FIRST);

Parámetros

pParentWnd
La ventana de marco principal de la ventana separadora.

nRows
El número de filas. Este valor no debe ser superior a 16.

nCols
El número de columnas. Este valor no debe ser superior a 16.

dwStyle
Especifica el estilo de la ventana.

nID
El id. de la ventana secundaria. El id. puede ser AFX_IDW_PANE_FIRST a menos que la ventana separadora esté anidada dentro de otra ventana separadora.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Por lo común, se inserta un CSplitterWnd en un objeto primario CFrameWnd o CMDIChildWnd al realizar los siguientes pasos:

  1. Inserte una variable miembro CSplitterWnd en el marco primario.

  2. Invalide la función miembro OnCreateClient del marco primario.

  3. Llame a la función miembro CreateStatic desde la CFrameWnd::OnCreateClient invalidada.

Una ventana separadora estática contiene un número fijo de paneles, a menudo de diferentes clases.

Al crear una ventana divisora estática, debe crear al mismo tiempo todos sus paneles. La función miembro CreateView se usa normalmente para este propósito, pero también puede crear otras clases que no son de vista.

La altura mínima inicial de fila y el ancho de columna de una ventana divisora estática es 0. Estos mínimos, que determinan cuándo un panel es demasiado pequeño para mostrarse en su totalidad, se pueden cambiar con las funciones miembro SetRowInfo y SetColumnInfo.

Para agregar barras de desplazamiento a una ventana divisora estática, agregue los estilos WS_HSCROLL y WS_VSCROLL a dwStyle.

Consulte "Ventanas separadoras" en el artículo Varios tipos de documentos, vistas y ventanas de marco, la Nota técnica 29 y la información general de la clase CSplitterWnd para obtener más información sobre las ventanas separadoras estáticas.

CSplitterWnd::CreateView

Crea los paneles de una ventana separadora estática.

virtual BOOL CreateView(
    int row,
    int col,
    CRuntimeClass* pViewClass,
    SIZE sizeInit,
    CCreateContext* pContext);

Parámetros

row
Especifica la fila de la ventana separadora en la que se colocará la nueva vista.

col
Especifica la columna de la ventana separadora en la que se colocará la nueva vista.

pViewClass
Especifica el CRuntimeClass de la nueva vista.

sizeInit
Especifica el tamaño inicial de la nueva vista.

pContext
Un puntero a un contexto de creación que se usa para crear la vista (normalmente, se pasa el pContext a la función miembro CFrameWnd::OnCreateClient invalidada del marco primario en la que se crea la ventana separadora).

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Todos los paneles de una ventana separadora estática deben crearse antes de que el marco muestre el separador.

El marco también llama a esta función miembro para crear paneles nuevos cuando el usuario de una ventana separadoras dinámica divide un panel, una fila o una columna.

Ejemplo

// this function creates the panes for a static splitter window
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   m_bSplitterCreated = m_wndSplitter.CreateStatic(this, 1, 2);
   // CMyView and CMyOtherView are user-defined views derived from CView
   m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(0, 0),
                            pContext);
   m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyOtherView), CSize(0, 0),
                            pContext);

   return (m_bSplitterCreated);
}

CSplitterWnd::CSplitterWnd

Llame para construir un objeto CSplitterWnd.

CSplitterWnd();

Comentarios

Construya un objeto CSplitterWnd en dos pasos. En primer lugar, llame al constructor, que crea el objeto CSplitterWnd y, a continuación, llame a la función miembro Create, que crea la ventana separadora y la adjunta al objeto CSplitterWnd.

CSplitterWnd::DeleteColumn

Elimina una columna de la ventana separadora.

virtual void DeleteColumn(int colDelete);

Parámetros

colDelete
Especifica la columna que se eliminará.

Comentarios

El marco llama a esta función miembro para implementar la lógica de la ventana separadora dinámica (es decir, si la ventana separadora tiene el estilo SPLS_DYNAMIC_SPLIT). Se puede personalizar, junto con la función virtual CreateView, para implementar separadores dinámicos más avanzados.

CSplitterWnd::DeleteRow

Elimina una fila de la ventana separadora.

virtual void DeleteRow(int rowDelete);

Parámetros

rowDelete
Especifica la fila que se eliminará.

Comentarios

El marco llama a esta función miembro para implementar la lógica de la ventana separadora dinámica (es decir, si la ventana separadora tiene el estilo SPLS_DYNAMIC_SPLIT). Se puede personalizar, junto con la función virtual CreateView, para implementar separadores dinámicos más avanzados.

CSplitterWnd::DeleteView

Elimina una vista de la ventana separadora.

virtual void DeleteView(
    int row,
    int col);

Parámetros

row
Especifica la fila de la ventana separadora en la cual eliminar la vista.

col
Especifica la columna de la ventana separadora en la cual eliminar la vista.

Comentarios

Si se elimina la vista activa, la siguiente vista se activará. La implementación predeterminada supone que la vista se eliminará automáticamente en PostNcDestroy.

El marco llama a esta función miembro para implementar la lógica de la ventana separadora dinámica (es decir, si la ventana separadora tiene el estilo SPLS_DYNAMIC_SPLIT). Se puede personalizar, junto con la función virtual CreateView, para implementar separadores dinámicos más avanzados.

CSplitterWnd::DoKeyboardSplit

Ejecuta el comando de división del teclado, normalmente "Dividir ventana".

virtual BOOL DoKeyboardSplit();

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Esta función miembro es un comando de alto nivel que usa la clase CView para delegar en la implementación CSplitterWnd.

CSplitterWnd::DoScroll

Realiza el desplazamiento sincronizado de las ventanas divididas.

virtual BOOL DoScroll(
    CView* pViewFrom,
    UINT nScrollCode,
    BOOL bDoScroll = TRUE);

Parámetros

pViewFrom
Un puntero a la vista desde la que se origina el mensaje de desplazamiento.

nScrollCode
Código de barra de desplazamiento que indica la solicitud de desplazamiento del usuario. Este parámetro se compone de dos partes: un byte de orden bajo, que determina el tipo de desplazamiento que se produce horizontalmente y un byte de orden superior, que determina el tipo de desplazamiento que se produce verticalmente:

  • SB_BOTTOM Se desplaza hasta la parte inferior.

  • SB_LINEDOWN Se desplaza una línea hacia abajo.

  • SB_LINEUP Se desplaza una línea hacia arriba.

  • SB_PAGEDOWN Se desplaza una página hacia abajo.

  • SB_PAGEUP Se desplaza una página hacia arriba.

  • SB_TOP Se desplaza hacia arriba.

bDoScroll
Determina si se produce la acción de desplazamiento especificada. Si bDoScroll es TRUE (es decir, si existe una ventana secundaria y si las ventanas divididas tienen un intervalo de desplazamiento), se puede realizar la acción de desplazamiento especificada; si bDoScroll es FALSE (es decir, si no existe ninguna ventana secundaria o las vistas divididas no tienen ningún intervalo de desplazamiento), no se produce el desplazamiento.

Valor devuelto

Distinto de cero si se produce el desplazamiento sincronizado; de lo contrario, 0.

Comentarios

El marco llama a esta función miembro para realizar el desplazamiento sincronizado de ventanas divididas cuando la vista recibe un mensaje de desplazamiento. Invalide para requerir una acción por parte del usuario antes de permitir el desplazamiento sincronizado.

CSplitterWnd::DoScrollBy

Desplaza ventanas divididas un número de píxeles determinado.

virtual BOOL DoScrollBy(
    CView* pViewFrom,
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

Parámetros

pViewFrom
Un puntero a la vista desde la que se origina el mensaje de desplazamiento.

sizeScroll
Número de píxeles que recorrerá el desplazamiento horizontal y verticalmente.

bDoScroll
Determina si se produce la acción de desplazamiento especificada. Si bDoScroll es TRUE (es decir, si existe una ventana secundaria y si las ventanas divididas tienen un intervalo de desplazamiento), se puede realizar la acción de desplazamiento especificada; si bDoScroll es FALSE (es decir, si no existe ninguna ventana secundaria o las vistas divididas no tienen ningún intervalo de desplazamiento), no se produce el desplazamiento.

Valor devuelto

Distinto de cero si se produce el desplazamiento sincronizado; de lo contrario, 0.

Comentarios

El marco llama a esta función miembro en respuesta a un mensaje de desplazamiento para realizar el desplazamiento sincronizado de las ventanas divididas por la cantidad, en píxeles, indicada por sizeScroll. Los valores positivos indican el desplazamiento hacia abajo y hacia la derecha; los valores negativos indican el desplazamiento hacia arriba y hacia la izquierda.

Invalide para requerir una acción por parte del usuario antes de permitir el desplazamiento.

CSplitterWnd::GetActivePane

Determina el panel activo del enfoque o la vista activa en el marco.

virtual CWnd* GetActivePane(
    int* pRow = NULL,
    int* pCol = NULL);

Parámetros

pRow
Un puntero a int para recuperar el número de fila del panel activo.

pCol
Un puntero a int para recuperar el número de columna del panel activo.

Valor devuelto

Puntero al panel activo. NULL si no existe ningún panel activo.

Comentarios

El marco llama a esta función miembro para determinar el panel activo en una ventana separadora. Invalide para requerir una acción por parte del usuario antes de obtener el panel activo.

CSplitterWnd::GetColumnCount

Devuelve el recuento de columnas del panel actual.

int GetColumnCount() const;

Valor devuelto

Devuelve el número de columnas actual en el separador. Para un separador estático, también será el número máximo de columnas.

CSplitterWnd::GetColumnInfo

Devuelve información sobre la columna especificada.

void GetColumnInfo(
    int col,
    int& cxCur,
    int& cxMin) const;

Parámetros

col
Especifica una columna.

cxCur
Una referencia a un int que se establecerá en el ancho actual de la columna.

cxMin
Una referencia a un int que se establecerá en el ancho actual mínimo de la columna.

CSplitterWnd::GetPane

Devuelve un panel en la fila y columna especificadas.

CWnd* GetPane(
    int row,
    int col) const;

Parámetros

row
Especifica una fila.

col
Especifica una columna.

Valor devuelto

Devuelve un panel en la fila y columna especificadas. El panel devuelto suele ser una clase derivada de CView.

CSplitterWnd::GetRowCount

Devuelve el recuento de filas del panel actual.

int GetRowCount() const;

Valor devuelto

Devuelve el número de filas actual en la ventana separadora. Para una ventana separadora estática, esto también será el número máximo de filas.

CSplitterWnd::GetRowInfo

Devuelve información sobre la fila especificada.

void GetRowInfo(
    int row,
    int& cyCur,
    int& cyMin) const;

Parámetros

row
Especifica una fila.

cyCur
Una referencia a int que se establecerá en la altura actual de la fila en píxeles.

cyMin
Una referencia a int que se establecerá en la altura mínima actual de la fila en píxeles.

Comentarios

Llame a esta función miembro para obtener información sobre la fila especificada. El parámetro cyCur se rellena con la altura actual de la fila especificada y cyMin se rellena con la altura mínima de la fila.

CSplitterWnd::GetScrollStyle

Devuelve el estilo de barra de desplazamiento compartida para la ventana separadora.

DWORD GetScrollStyle() const;

Valor devuelto

Una o varias de las siguientes marcas de estilo de las ventanas, si se ejecuta correctamente:

  • WS_HSCROLL Si el separador administra actualmente barras de desplazamiento horizontal compartidas.

  • WS_VSCROLL Si el separador administra actualmente barras de desplazamiento vertical compartidas.

Si es cero, la ventana separadora no administra actualmente ninguna barra de desplazamiento compartida.

CSplitterWnd::IdFromRowCol

Obtiene el id. de ventana secundaria del panel en la fila y columna especificadas.

int IdFromRowCol(
    int row,
    int col) const;

Parámetros

row
Especifica la fila de la ventana separadora.

col
Especifica la columna de la ventana separadora.

Valor devuelto

El id. de la ventana secundaria del panel.

Comentarios

Esta función miembro se usa para crear no vistas como paneles y se puede llamar antes de que exista el panel.

Ejemplo

HBRUSH CMySplitterWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CSplitterWnd::OnCtlColor(pDC, pWnd, nCtlColor);

   if (nCtlColor == CTLCOLOR_LISTBOX &&
       pWnd->GetDlgCtrlID() == IdFromRowCol(1, 0))
   {
      // Pane 1,0 is a list box. Set the color of the text to be blue.
      pDC->SetBkColor(m_BkColor);
      pDC->SetTextColor(RGB(0, 0, 255));
      return (HBRUSH)m_hbrListBoxBkgnd.GetSafeHandle();
   }
   // TODO: Return a different brush if the default is not desired
   return hbr;
}

CSplitterWnd::IsChildPane

Determina si pWnd actualmente es un panel secundario de esta ventana separadora.

BOOL IsChildPane(
    CWnd* pWnd,
    int* pRow,
    int* pCol);

Parámetros

pWnd
Un puntero a un objeto CWnd que se probará.

pRow
Un puntero a un int en el que se almacenará el número de fila.

pCol
Un puntero a un int en el que se almacenará el número de columna.

Valor devuelto

Si no es cero, pWnd actualmente es un panel secundario de esta ventana separadora, y pRow y pCol se rellenan con la posición del panel en la ventana separadora. Si pWnd no es un panel secundario de esta ventana separadora, se devuelve 0.

Comentarios

En las versiones de Visual C++ anteriores a la versión 6.0, esta función se definió como

BOOL IsChildPane(CWnd* pWnd, int& row, int& col);

Esta versión ahora está obsoleta y no debe usarse.

CSplitterWnd::IsTracking

Llame a esta función miembro para determinar si el separador de la ventana se está moviendo.

BOOL IsTracking();

Valor devuelto

No es cero si una operación del separador está en curso; de lo contrario, 0.

CSplitterWnd::OnDrawSplitter

Representa una imagen de una ventana dividida.

virtual void OnDrawSplitter(
    CDC* pDC,
    ESplitType nType,
    const CRect& rect);

Parámetros

pDC
Un puntero al contexto de dispositivo en el que se dibujará. Si pDC es NULL, entonces el marco llama a CWnd::RedrawWindow y no se dibuja ninguna ventana dividida.

nType
Un valor de enum ESplitType, que puede ser uno de los siguientes:

  • splitBox El cuadro de arrastre del separador.

  • splitBar La barra que aparece entre las dos ventanas divididas.

  • splitIntersection La intersección de las ventanas divididas. No se llamará a este elemento cuando se ejecute en Windows 95/98.

  • splitBorder Los bordes de la ventana dividida.

rect
Una referencia a un objeto CRect que especifica el tamaño y la forma de las ventanas divididas.

Comentarios

El marco llama a esta función miembro para dibujar y especificar las características exactas de una ventana separadora. Invalida OnDrawSplitter para la personalización avanzada de las imágenes para los distintos componentes gráficos de una ventana separadora. Las imágenes predeterminadas son similares al separador en Microsoft Works para Windows o en Microsoft Windows 95/98, en que las intersecciones de las barras separadoras se combinan.

Para obtener más información sobre las ventanas separadoras dinámicas, consulte "Ventanas separadoras" en el artículo Varios tipos de documentos, vistas y ventanas de marco, la Nota técnica 29 y la información general de la clase CSplitterWnd.

CSplitterWnd::OnInvertTracker

Representa la imagen de una ventana dividida para que tenga el mismo tamaño y forma que la ventana de marco.

virtual void OnInvertTracker(const CRect& rect);

Parámetros

rect
Referencia a un objeto CRect que especifica el rectángulo de seguimiento.

Comentarios

El marco llama a esta función miembro durante el cambio de tamaño de los separadores. Invalida OnInvertTracker para la personalización avanzada de las imágenes de la ventana separadora. Las imágenes predeterminadas son similares al separador en Microsoft Works para Windows o en Microsoft Windows 95/98, en que las intersecciones de las barras separadoras se combinan.

Para obtener más información sobre las ventanas separadoras dinámicas, consulte "Ventanas separadoras" en el artículo Varios tipos de documentos, vistas y ventanas de marco, la Nota técnica 29 y la información general de la clase CSplitterWnd.

CSplitterWnd::RecalcLayout

Llame a para volver a mostrar la ventana separadora después de ajustar el tamaño de fila o columna.

virtual void RecalcLayout();

Comentarios

Llame a esta función miembro para volver a mostrar correctamente la ventana separadora después de haber ajustado los tamaños de fila y columna con las funciones miembro SetRowInfo y SetColumnInfo. Si cambia los tamaños de fila y columna como parte del proceso de creación antes de que la ventana separadora esté visible, no es necesario llamar a esta función miembro.

El marco llama a esta función miembro cada vez que el usuario cambia el tamaño de la ventana separadora o mueve una división.

Ejemplo

Vea el ejemplo de CSplitterWnd::SetColumnInfo.

CSplitterWnd::SetActivePane

Establece un panel como el activo para el marco.

virtual void SetActivePane(
    int row,
    int col,
    CWnd* pWnd = NULL);

Parámetros

row
Si pWnd es NULL, especifica la fila en el panel que estará activa.

col
Si pWnd es NULL, especifica la columna en el panel que estará activa.

pWnd
Puntero a un objeto CWnd . Si NULL, el panel especificado por row y col se establece como activo. Si no es NULL, especifica el panel que se establece como activo.

Comentarios

El marco llama a esta función miembro para establecer un panel como activo cuando el usuario cambia el enfoque a un panel dentro de la ventana de marco. Puede llamar a SetActivePane explícitamente para cambiar el enfoque a la vista especificada.

Especifique el panel proporcionando ya sea una fila y una columna, o al proporcionar pWnd.

CSplitterWnd::SetColumnInfo

Llame para establecer la información de columna especificada.

void SetColumnInfo(
    int col,
    int cxIdeal,
    int cxMin);

Parámetros

col
Especifica una columna de la ventana separadora.

cxIdeal
Especifica un ancho ideal para la columna de la ventana separadora en píxeles.

cxMin
Especifica un ancho mínimo para la columna de la ventana separadora en píxeles.

Comentarios

Llame a esta función miembro para establecer un nuevo ancho mínimo y un ancho ideal para una columna. El valor mínimo de columna determina cuándo la columna será demasiado pequeña para mostrarse por completo.

Cuando el marco muestra la ventana separadora, dispone los paneles en columnas y filas según sus dimensiones ideales, y trabaja desde la esquina superior izquierda hasta la esquina inferior derecha del área cliente de la ventana separadora.

Ejemplo

void CChildFrame::OnSize(UINT nType, int cx, int cy)
{
   CMDIChildWnd::OnSize(nType, cx, cy);

   CRect rect;
   GetWindowRect(&rect);
   if (m_bSplitterCreated) // m_bSplitterCreated set in OnCreateClient
   {
      m_wndSplitter.SetColumnInfo(0, rect.Width() / 2, 10);
      m_wndSplitter.SetColumnInfo(1, rect.Width() / 2, 10);
      m_wndSplitter.RecalcLayout();
   }
}

CSplitterWnd::SetRowInfo

Llame para establecer la información de fila especificada.

void SetRowInfo(
    int row,
    int cyIdeal,
    int cyMin);

Parámetros

row
Especifica una fila de la ventana separadora.

cyIdeal
Especifica una altura ideal para la fila de la ventana separadora en píxeles.

cyMin
Especifica una altura mínima para la fila de la ventana separadora en píxeles.

Comentarios

Llame a esta función miembro para establecer una nueva altura mínima y una altura ideal para una fila. El valor mínimo de la fila determina cuándo la fila será demasiado pequeña para mostrarse por completo.

Cuando el marco muestra la ventana separadora, dispone los paneles en columnas y filas según sus dimensiones ideales, y trabaja desde la esquina superior izquierda hasta la esquina inferior derecha del área cliente de la ventana separadora.

CSplitterWnd::SetScrollStyle

Especifica el nuevo estilo de desplazamiento para la compatibilidad con la barra de desplazamiento compartida de la ventana separadora.

void SetScrollStyle(DWORD dwStyle);

Parámetros

dwStyle
El nuevo estilo de desplazamiento para la compatibilidad con la barra de desplazamiento compartida de la ventana separadora, que puede ser uno de los siguientes valores:

  • WS_HSCROLL Crear o mostrar barras de desplazamiento compartidas horizontales.

  • WS_VSCROLL Crear o mostrar barras de desplazamiento compartidas verticales.

Comentarios

Una vez creada una barra de desplazamiento, no se destruirá aunque se llame a SetScrollStyle sin ese estilo; en su lugar, esas barras de desplazamiento están ocultas. Esto permite que las barras de desplazamiento conserven su estado aunque estén ocultas. Después de llamar a SetScrollStyle, es necesario llamar a RecalcLayout para que todos los cambios surtan efecto.

CSplitterWnd::SplitColumn

Indica el lugar en el que una ventana de marco se divide verticalmente.

virtual BOOL SplitColumn(int cxBefore);

Parámetros

cxBefore
La posición, en píxeles, antes de que se produzca la división.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Se llama a esta función miembro cuando se crea una ventana separadora vertical. SplitColumn indica la ubicación predeterminada donde se produce la división.

El marco llama a SplitColumn para implementar la lógica de la ventana separadora dinámica (es decir, si la ventana separadora tiene el estilo SPLS_DYNAMIC_SPLIT). Se puede personalizar, junto con la función virtual CreateView, para implementar separadores dinámicos más avanzados.

CSplitterWnd::SplitRow

Indica el lugar en el que una ventana de marco se divide horizontalmente.

virtual BOOL SplitRow(int cyBefore);

Parámetros

cyBefore
La posición, en píxeles, antes de que se produzca la división.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Se llama a esta función miembro cuando se crea una ventana separadora horizontal. SplitRow indica la ubicación predeterminada donde se produce la división.

El marco llama a SplitRow para implementar la lógica de la ventana separadora dinámica (es decir, si la ventana separadora tiene el estilo SPLS_DYNAMIC_SPLIT). Se puede personalizar, junto con la función virtual CreateView, para implementar separadores dinámicos más avanzados.

CSplitterWnd::OnDraw

El marco lo llama para dibujar una ventana separadora.

virtual void OnDraw(CDC* pDC);

Parámetros

pDC
Puntero a un contexto de dispositivo.

Comentarios

Consulte también

Ejemplo de MFCVIEWEX
CWnd (clase)
Gráfico de jerarquías
CView (clase)