Compartir a través de


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 CScrollBarpara eliminar las asignaciones.

Para obtener información relacionada sobre el uso de CScrollBar, consulte Controles.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

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 Siempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Raramente

  • WS_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_TRACKPOSy 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)