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:
Inserte una variable miembro
CSplitterWnd
en el marco primario.Invalide la función miembro
CFrameWnd::OnCreateClient
del marco primario.Desde la
OnCreateClient
invalidada, llame a la función miembroCreate
oCreateStatic
deCSplitterWnd
.
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
CSplitterWnd
Requisitos
Encabezado: afxext.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:
Inserte una variable miembro
CSplitterWnd
en el marco primario.Invalide la función miembro
CFrameWnd::OnCreateClient
del marco primario.Llame a la función miembro
Create
desde laOnCreateClient
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:
Inserte una variable miembro
CSplitterWnd
en el marco primario.Invalide la función miembro
OnCreateClient
del marco primario.Llame a la función miembro
CreateStatic
desde laCFrameWnd::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)