Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Clase
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
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_CHILDSiempreWS_VISIBLENormalmenteWS_DISABLEDRaramenteWS_GROUPPara 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_BOTHHabilita ambas flechas de una barra de desplazamiento.ESB_DISABLE_LTUPDeshabilita la flecha izquierda de una barra de desplazamiento horizontal o la flecha arriba de una barra de desplazamiento vertical.ESB_DISABLE_RTDNDeshabilita la flecha derecha de una barra de desplazamiento horizontal o la flecha hacia abajo de una barra de desplazamiento vertical.ESB_DISABLE_BOTHDeshabilita 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)