Clase CScrollBar
Proporciona la funcionalidad de un control de barra de desplazamiento de Windows.
Sintaxis
class CScrollBar : public CWnd
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CScrollBar::CScrollBar |
Construye un objeto CScrollBar . |
Métodos públicos
Nombre | Descripción |
---|---|
CScrollBar::Create |
Crea la barra de desplazamiento de Windows y la asocia al objeto CScrollBar . |
CScrollBar::EnableScrollBar |
Habilita o deshabilita una o ambas flechas de una barra de desplazamiento. |
CScrollBar::GetScrollBarInfo |
Recupera información sobre la barra de desplazamiento mediante una estructura SCROLLBARINFO . |
CScrollBar::GetScrollInfo |
Recupera la información acerca de la barra de desplazamiento. |
CScrollBar::GetScrollLimit |
Recupera el límite de la barra de desplazamiento. |
CScrollBar::GetScrollPos |
Recupera la posición actual de un cuadro de desplazamiento. |
CScrollBar::GetScrollRange |
Recupera las posiciones mínima y máxima actuales de la barra de desplazamiento especificada. |
CScrollBar::SetScrollInfo |
Establece la información acerca de la barra de desplazamiento. |
CScrollBar::SetScrollPos |
Establece la posición actual de un cuadro de desplazamiento. |
CScrollBar::SetScrollRange |
Establece los valores de posición mínimo y máximo de la barra de desplazamiento especificada. |
CScrollBar::ShowScrollBar |
Muestra u oculta una barra de desplazamiento. |
Comentarios
Puede crear un control de barra de desplazamiento en dos pasos. En primer lugar, llame al constructor CScrollBar
para que construya el objeto CScrollBar
y, después, llame a la función miembro Create
para que cree el control de la barra de desplazamiento de Windows y lo asocie al objeto CScrollBar
.
Si crea un objeto CScrollBar
dentro de un cuadro de diálogo (mediante un recurso de diálogo), dicho objeto CScrollBar
se destruirá automáticamente cuando el usuario cierre el cuadro de diálogo.
Si crea un objeto CScrollBar
dentro de una ventana, es posible que también tenga que destruirlo.
Si crea el objeto CScrollBar
en la pila, se destruye automáticamente. Si crea el objeto CScrollBar
en el montón mediante la función new
, debe llamar a delete
en el objeto para destruirlo cuando el usuario finalice la barra de desplazamiento de Windows.
Si asigna cualquier memoria en el objeto CScrollBar
, invalide el destructor CScrollBar
para eliminar las asignaciones.
Para obtener información relacionada sobre el uso de CScrollBar
, consulte Controles.
Jerarquía de herencia
CScrollBar
Requisitos
Encabezado: afxwin.h
CScrollBar::Create
Crea la barra de desplazamiento de Windows y la asocia al objeto CScrollBar
.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parámetros
dwStyle
Especifica el estilo de la barra de desplazamiento. Aplique cualquier combinación de estilos a la barra de desplazamiento.
rect
Especifica el tamaño y la posición de la barra de desplazamiento. Puede ser una estructura RECT
o un objeto CRect
.
pParentWnd
Especifica la ventana primaria de la barra de desplazamiento (normalmente un objeto CDialog
). Este valor no debe ser NULL
.
nID
Identificador de control de la barra de desplazamiento.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero.
Comentarios
El objeto CScrollBar
se construye en dos pasos. En primer lugar, llame al constructor que construye el objeto CScrollBar
; a continuación, llame a Create
, que crea e inicializa la barra de desplazamiento de Windows asociada y la asocia al objeto CScrollBar
.
Aplique los siguientes estilos de ventana a una barra de desplazamiento:
WS_CHILD
SiempreWS_VISIBLE
NormalmenteWS_DISABLED
RaramenteWS_GROUP
Para agrupar controles
Ejemplo
// Example 1:
// Create a horizontal CScrollBar control as a child window of CMyDialog
// class (a CDialog-derived class). The scroll bar is NOT visible until the
// call ShowScrollBar() is made. m_ScrollBarHorz is of type CScrollBar class,
// and it is a member variable in CMyDialog class.
VERIFY(m_ScrollBarHorz.Create(SBS_HORZ | SBS_TOPALIGN | WS_CHILD,
CRect(5, 5, 100, 30), this, IDC_SCROLLBARCTRL));
m_ScrollBarHorz.ShowScrollBar();
// Example 2:
// Create a vertical CScrollBar control as a child window of CMyDialog
// class (a CDialog-derived class). m_ScrollBarVert is of type CScrollBar
// class, and it is a member variable in CMyDialog class.
VERIFY(m_ScrollBarVert.Create(SBS_VERT | SBS_LEFTALIGN | WS_CHILD |
WS_VISIBLE,
CRect(5, 30, 30, 130), this, IDC_SCROLLBARCTRL));
CScrollBar::CScrollBar
Construye un objeto CScrollBar
.
CScrollBar();
Comentarios
Después de construir el objeto, llame a la función miembro Create
para crear e inicializar la barra de desplazamiento de Windows.
Ejemplo
CScrollBar m_ScrollBarHorz;
CScrollBar::EnableScrollBar
Habilita o deshabilita una o ambas flechas de una barra de desplazamiento.
BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
Parámetros
nArrowFlags
Especifica si las flechas de desplazamiento están habilitadas o deshabilitadas y qué flechas están habilitadas o deshabilitadas. Este parámetro puede establecerse con uno de los siguientes valores:
ESB_ENABLE_BOTH
Habilita ambas flechas de una barra de desplazamiento.ESB_DISABLE_LTUP
Deshabilita la flecha izquierda de una barra de desplazamiento horizontal o la flecha arriba de una barra de desplazamiento vertical.ESB_DISABLE_RTDN
Deshabilita la flecha derecha de una barra de desplazamiento horizontal o la flecha hacia abajo de una barra de desplazamiento vertical.ESB_DISABLE_BOTH
Deshabilita ambas flechas de una barra de desplazamiento.
Valor devuelto
Distinto de cero si las flechas están habilitadas o deshabilitadas según lo especificado; de lo contrario, 0, que indica que las flechas ya están en el estado solicitado o que se produjo un error.
Ejemplo
Vea el ejemplo de CScrollBar::SetScrollRange
.
CScrollBar::GetScrollBarInfo
Recupera la información que la estructura SCROLLBARINFO
mantiene sobre una barra de desplazamiento.
BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const;
Parámetros
pScrollInfo
Un puntero a la estructura SCROLLBARINFO
.
Valor devuelto
Devuelve TRUE
si la operación se realiza correctamente; de lo contrario, devuelve FALSE
.
Comentarios
Esta función miembro se usa para emular la funcionalidad del mensaje SBM_SCROLLBARINFO
, tal como se describe en Windows SDK.
CScrollBar::GetScrollInfo
Recupera la información que la estructura SCROLLINFO
mantiene sobre una barra de desplazamiento.
BOOL GetScrollInfo(
LPSCROLLINFO lpScrollInfo,
UINT nMask = SIF_ALL);
Parámetros
lpScrollInfo
Un puntero a una estructura SCROLLINFO
. Consulte Windows SDK para obtener más información sobre esta estructura.
nMask
Especifica los parámetros de la barra de desplazamiento que se van a recuperar. El uso típico, SIF_ALL
, especifica una combinación de SIF_PAGE
, SIF_POS
, SIF_TRACKPOS
y SIF_RANGE
. Consulte SCROLLINFO
para obtener más información sobre los valores nMask
.
Valor devuelto
Si el mensaje recupera valores, el valor devuelto es TRUE
. De lo contrario, es FALSE
.
Comentarios
GetScrollInfo
permite a las aplicaciones usar posiciones de desplazamiento de 32 bits.
La estructura SCROLLINFO
contiene información sobre una barra de desplazamiento, incluidas las posiciones de desplazamiento mínima y máxima, el tamaño de página y la posición del cuadro de desplazamiento (el control). Consulte el tema de estructura SCROLLINFO
de Windows SDK para más información sobre cómo cambiar los valores predeterminados de la estructura.
Los controladores de mensajes de Windows de MFC que indican la posición de la barra de desplazamiento, CWnd::OnHScroll
y CWnd::OnVScroll
, proporcionan solo 16 bits de datos de posición. GetScrollInfo
y SetScrollInfo
proporcionan 32 bits de datos de posición de barra de desplazamiento. Por lo tanto, una aplicación puede llamar a GetScrollInfo
al procesar CWnd::OnHScroll
o CWnd::OnVScroll
para obtener datos de posición de barra de desplazamiento de 32 bits.
Ejemplo
Vea el ejemplo de CWnd::OnHScroll
.
CScrollBar::GetScrollLimit
Recupera la posición de desplazamiento máxima de la barra de desplazamiento.
int GetScrollLimit();
Valor devuelto
Especifica la posición máxima de una barra de desplazamiento si se ejecuta correctamente; de lo contrario, 0.
Ejemplo
Vea el ejemplo de CWnd::OnHScroll
.
CScrollBar::GetScrollPos
Recupera la posición actual de un cuadro de desplazamiento.
int GetScrollPos() const;
Valor devuelto
Especifica la posición actual del cuadro de desplazamiento si se ejecuta correctamente; de lo contrario, 0.
Comentarios
La posición actual es un valor relativo que depende del intervalo de desplazamiento actual. Por ejemplo, si el intervalo de desplazamiento es de 100 a 200 y el cuadro de desplazamiento está en medio de la barra, la posición actual es 150.
Ejemplo
Vea el ejemplo de CWnd::OnHScroll
.
CScrollBar::GetScrollRange
Copia las posiciones mínima y máxima actuales de la barra de desplazamiento especificada a las ubicaciones especificadas por lpMinPos
y lpMaxPos
.
void GetScrollRange(
LPINT lpMinPos,
LPINT lpMaxPos) const;
Parámetros
lpMinPos
Apunta a la variable de entero que va a recibir la posición mínima.
lpMaxPos
Apunta a la variable de entero que va a recibir la posición máxima.
Comentarios
El intervalo predeterminado de un control de barra de desplazamiento está vacío (ambos valores son 0).
Ejemplo
Vea el ejemplo de CWnd::OnHScroll
.
CScrollBar::SetScrollInfo
Establece la información que la estructura SCROLLINFO
mantiene sobre una barra de desplazamiento.
BOOL SetScrollInfo(
LPSCROLLINFO lpScrollInfo,
BOOL bRedraw = TRUE);
Parámetros
lpScrollInfo
Un puntero a una estructura SCROLLINFO
.
bRedraw
Especifica si se debe volver a dibujar la barra de desplazamiento para reflejar la nueva información. Si bRedraw
es TRUE
, la barra de desplazamiento se vuelve a dibujar. Si es FALSE
, no se vuelve a dibujar. De forma predeterminada, la barra se vuelve a dibujar.
Valor devuelto
Si se ejecuta correctamente, se devuelve TRUE
. De lo contrario, es FALSE
.
Comentarios
Debe proporcionar los valores requeridos por los parámetros de estructura SCROLLINFO
, incluidos los valores de marca.
La estructura SCROLLINFO
contiene información sobre una barra de desplazamiento, incluidas las posiciones de desplazamiento mínima y máxima, el tamaño de página y la posición del cuadro de desplazamiento (el control). Consulte el tema de estructura SCROLLINFO
de Windows SDK para más información sobre cómo cambiar los valores predeterminados de la estructura.
Ejemplo
// Set SCROLLINFO for the scroll bar. m_ScrollBarHorz is of type
// CScrollBar class, and it is a member variable in CMyDialog class.
SCROLLINFO info;
info.cbSize = sizeof(SCROLLINFO);
info.fMask = SIF_ALL;
info.nMin = 0;
info.nMax = 10;
info.nPage = 2;
info.nPos = 5;
info.nTrackPos = 2;
m_ScrollBarHorz.SetScrollInfo(&info);
CScrollBar::SetScrollPos
Establece la posición actual de un cuadro de desplazamiento en la especificada por nPos
y, si se especifica, vuelve a dibujar la barra de desplazamiento para reflejar la nueva posición.
int SetScrollPos(
int nPos,
BOOL bRedraw = TRUE);
Parámetros
nPos
Especifica la nueva posición del cuadro de desplazamiento. Debe estar dentro del rango de desplazamiento.
bRedraw
Especifica si se debe volver a dibujar la barra de desplazamiento para reflejar la nueva posición. Si bRedraw
es TRUE
, la barra de desplazamiento se vuelve a dibujar. Si es FALSE
, no se vuelve a dibujar. De forma predeterminada, la barra se vuelve a dibujar.
Valor devuelto
Especifica la posición anterior del cuadro de desplazamiento si se ejecuta correctamente; de lo contrario, 0.
Comentarios
Establezca bRedraw
en FALSE
cada vez que la barra de desplazamiento se vuelva a dibujar mediante una llamada posterior a otra función para evitar que la barra de desplazamiento se dibuje dos veces en un intervalo corto.
Ejemplo
Consulte el ejemplo de CScrollBar::SetScrollRange.
CScrollBar::SetScrollRange
Establece los valores de posición mínimo y máximo de la barra de desplazamiento especificada.
void SetScrollRange(
int nMinPos,
int nMaxPos,
BOOL bRedraw = TRUE);
Parámetros
nMinPos
Especifica la posición de desplazamiento mínima.
nMaxPos
Especifica la posición de desplazamiento máxima.
bRedraw
Especifica si se debe volver a dibujar la barra de desplazamiento para reflejar el cambio. Si bRedraw
es TRUE
, la barra de desplazamiento se vuelve a dibujar; si es FALSE
, no se vuelve a dibujar. Se vuelve a dibujar de forma predeterminada.
Comentarios
Establezca nMinPos
y nMaxPos
en 0 para ocultar las barras de desplazamiento estándar.
No llame a esta función para ocultar una barra de desplazamiento mientras se procesa un mensaje de notificación de barra de desplazamiento.
Si una llamada a SetScrollRange
sigue inmediatamente a una llamada a la función miembro SetScrollPos
, establezca bRedraw
de SetScrollPos
en 0 para evitar que la barra de desplazamiento se vuelva a dibujar dos veces.
La diferencia entre los valores especificados por nMinPos
y nMaxPos
no debe ser superior a 32 767. El intervalo predeterminado de un control de barra de desplazamiento está vacío (ambos valores, nMinPos
y nMaxPos
, son 0).
Ejemplo
// Sets minimum (0) and maximum (10) position values for the
// CScrollBar control. m_ScrollBarVert is of type CScrollBar class,
// and it is a member variable in CMyDialog class.
m_ScrollBarVert.SetScrollRange(0, 10);
// Set the position of the scroll box.
m_ScrollBarVert.SetScrollPos(5);
// Disable the down arrow of the scroll bar. By default, both arrows
// are enabled.
m_ScrollBarVert.EnableScrollBar(ESB_DISABLE_DOWN);
CScrollBar::ShowScrollBar
Muestra u oculta una barra de desplazamiento.
void ShowScrollBar(BOOL bShow = TRUE);
Parámetros
bShow
Especifica si la barra de desplazamiento se muestra o se oculta. Si este parámetro es TRUE
, se muestra la barra de desplazamiento; de lo contrario, se oculta.
Comentarios
Una aplicación no debe llamar a esta función para ocultar una barra de desplazamiento mientras se procesa un mensaje de notificación de barra de desplazamiento.
Ejemplo
Vea el ejemplo de CScrollBar::Create
.
Consulte también
CWnd
(clase)
Gráfico de jerarquías
CButton
(clase)
CComboBox
(clase)
CEdit
(clase)
CListBox
(clase)
CStatic
(clase)
CDialog
(clase)