CScrollBar
Class
Provides the functionality of a Windows scroll-bar control.
Syntax
class CScrollBar : public CWnd
Members
Public Constructors
Name | Description |
---|---|
CScrollBar::CScrollBar |
Constructs a CScrollBar object. |
Public Methods
Name | Description |
---|---|
CScrollBar::Create |
Creates the Windows scroll bar and attaches it to the CScrollBar object. |
CScrollBar::EnableScrollBar |
Enables or disables one or both arrows of a scroll bar. |
CScrollBar::GetScrollBarInfo |
Retrieves information about the scroll bar using a SCROLLBARINFO structure. |
CScrollBar::GetScrollInfo |
Retrieves information about the scroll bar. |
CScrollBar::GetScrollLimit |
Retrieves the limit of the scroll bar |
CScrollBar::GetScrollPos |
Retrieves the current position of a scroll box. |
CScrollBar::GetScrollRange |
Retrieves the current minimum and maximum scroll-bar positions for the given scroll bar. |
CScrollBar::SetScrollInfo |
Sets information about the scroll bar. |
CScrollBar::SetScrollPos |
Sets the current position of a scroll box. |
CScrollBar::SetScrollRange |
Sets minimum and maximum position values for the given scroll bar. |
CScrollBar::ShowScrollBar |
Shows or hides a scroll bar. |
Remarks
You create a scroll-bar control in two steps. First, call the constructor CScrollBar
to construct the CScrollBar
object, then call the Create
member function to create the Windows scroll-bar control and attach it to the CScrollBar
object.
If you create a CScrollBar
object within a dialog box (through a dialog resource), the CScrollBar
is automatically destroyed when the user closes the dialog box.
If you create a CScrollBar
object within a window, you may also need to destroy it.
If you create the CScrollBar
object on the stack, it's destroyed automatically. If you create the CScrollBar
object on the heap by using the new
function, you must call delete
on the object to destroy it when the user terminates the Windows scroll bar.
If you allocate any memory in the CScrollBar
object, override the CScrollBar
destructor to dispose of the allocations.
For related information about using CScrollBar
, see Controls.
Inheritance Hierarchy
CScrollBar
Requirements
Header: afxwin.h
CScrollBar::Create
Creates the Windows scroll bar and attaches it to the CScrollBar
object.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameters
dwStyle
Specifies the scroll bar's style. Apply any combination of scroll-bar styles to the scroll bar.
rect
Specifies the scroll bar's size and position. Can be either a RECT
structure or a CRect
object.
pParentWnd
Specifies the scroll bar's parent window, usually a CDialog
object. It must not be NULL
.
nID
The scroll bar's control ID.
Return Value
Nonzero if successful; otherwise 0.
Remarks
You construct a CScrollBar
object in two steps. First, call the constructor, which constructs the CScrollBar
object; then call Create
, which creates and initializes the associated Windows scroll bar and attaches it to the CScrollBar
object.
Apply the following window styles to a scroll bar:
WS_CHILD
AlwaysWS_VISIBLE
UsuallyWS_DISABLED
RarelyWS_GROUP
To group controls
Example
// 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
Constructs a CScrollBar
object.
CScrollBar();
Remarks
After constructing the object, call the Create
member function to create and initialize the Windows scroll bar.
Example
CScrollBar m_ScrollBarHorz;
CScrollBar::EnableScrollBar
Enables or disables one or both arrows of a scroll bar.
BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);
Parameters
nArrowFlags
Specifies whether the scroll arrows are enabled or disabled and which arrows are enabled or disabled. This parameter can be one of the following values:
ESB_ENABLE_BOTH
Enables both arrows of a scroll bar.ESB_DISABLE_LTUP
Disables the left arrow of a horizontal scroll bar or the up arrow of a vertical scroll bar.ESB_DISABLE_RTDN
Disables the right arrow of a horizontal scroll bar or the down arrow of a vertical scroll bar.ESB_DISABLE_BOTH
Disables both arrows of a scroll bar.
Return Value
Nonzero if the arrows are enabled or disabled as specified; otherwise 0, which indicates that the arrows are already in the requested state or that an error occurred.
Example
See the example for CScrollBar::SetScrollRange
.
CScrollBar::GetScrollBarInfo
Retrieves the information that the SCROLLBARINFO
structure maintains about a scroll bar.
BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const;
Parameters
pScrollInfo
A pointer to the SCROLLBARINFO
structure.
Return Value
Returns TRUE
on success, FALSE
on failure.
Remarks
This member function emulates the functionality of the SBM_SCROLLBARINFO
message, as described in the Windows SDK.
CScrollBar::GetScrollInfo
Retrieves the information that the SCROLLINFO
structure maintains about a scroll bar.
BOOL GetScrollInfo(
LPSCROLLINFO lpScrollInfo,
UINT nMask = SIF_ALL);
Parameters
lpScrollInfo
A pointer to a SCROLLINFO
structure. See the Windows SDK for more information about this structure.
nMask
Specifies the scroll bar parameters to retrieve. Typical usage, SIF_ALL
, specifies a combination of SIF_PAGE
, SIF_POS
, SIF_TRACKPOS
, and SIF_RANGE
. See SCROLLINFO
for more information on the nMask
values.
Return Value
If the message retrieved any values, the return is TRUE
. Otherwise, it's FALSE
.
Remarks
GetScrollInfo
enables applications to use 32-bit scroll positions.
The SCROLLINFO
structure contains information about a scroll bar, including the minimum and maximum scrolling positions, the page size, and the position of the scroll box (the thumb). See the SCROLLINFO
structure topic in the Windows SDK for more information about changing the structure defaults.
The MFC Windows message handlers that indicate scroll bar position, CWnd::OnHScroll
, and CWnd::OnVScroll
, provide only 16 bits of position data. GetScrollInfo
and SetScrollInfo
provide 32 bits of scroll bar position data. Thus, an application can call GetScrollInfo
while processing either CWnd::OnHScroll
or CWnd::OnVScroll
to obtain 32-bit scroll bar position data.
Example
See the example for CWnd::OnHScroll
.
CScrollBar::GetScrollLimit
Retrieves the maximum scrolling position of the scroll bar.
int GetScrollLimit();
Return Value
Specifies the maximum position of a scroll bar if successful; otherwise 0.
Example
See the example for CWnd::OnHScroll
.
CScrollBar::GetScrollPos
Retrieves the current position of a scroll box.
int GetScrollPos() const;
Return Value
Specifies the current position of the scroll box if successful; otherwise 0.
Remarks
The current position is a relative value that depends on the current scrolling range. For example, if the scrolling range is 100 to 200 and the scroll box is in the middle of the bar, the current position is 150.
Example
See the example for CWnd::OnHScroll
.
CScrollBar::GetScrollRange
Copies the current minimum and maximum scroll-bar positions for the given scroll bar to the locations specified by lpMinPos
and lpMaxPos
.
void GetScrollRange(
LPINT lpMinPos,
LPINT lpMaxPos) const;
Parameters
lpMinPos
Points to the integer variable that is to receive the minimum position.
lpMaxPos
Points to the integer variable that is to receive the maximum position.
Remarks
The default range for a scroll-bar control is empty (both values are 0).
Example
See the example for CWnd::OnHScroll
.
CScrollBar::SetScrollInfo
Sets the information that the SCROLLINFO
structure maintains about a scroll bar.
BOOL SetScrollInfo(
LPSCROLLINFO lpScrollInfo,
BOOL bRedraw = TRUE);
Parameters
lpScrollInfo
A pointer to a SCROLLINFO
structure.
bRedraw
Specifies whether the scroll bar should be redrawn to reflect the new information. If bRedraw
is TRUE
, the scroll bar is redrawn. If it's FALSE
, it isn't redrawn. The scroll bar is redrawn by default.
Return Value
If successful, the return is TRUE
. Otherwise, it's FALSE
.
Remarks
You must provide the values required by the SCROLLINFO
structure parameters, including the flag values.
The SCROLLINFO
structure contains information about a scroll bar, including the minimum and maximum scrolling positions, the page size, and the position of the scroll box (the thumb). See the SCROLLINFO
structure topic in the Windows SDK for more information about changing the structure defaults.
Example
// 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
Sets the current position of a scroll box to that specified by nPos
and, if specified, redraws the scroll bar to reflect the new position.
int SetScrollPos(
int nPos,
BOOL bRedraw = TRUE);
Parameters
nPos
Specifies the new position for the scroll box. It must be within the scrolling range.
bRedraw
Specifies whether the scroll bar should be redrawn to reflect the new position. If bRedraw
is TRUE
, the scroll bar is redrawn. If it's FALSE
, it isn't redrawn. The scroll bar is redrawn by default.
Return Value
Specifies the previous position of the scroll box if successful; otherwise 0.
Remarks
Set bRedraw
to FALSE
whenever the scroll bar will be redrawn by a subsequent call to another function to avoid having the scroll bar redrawn twice within a short interval.
Example
See the example for CScrollBar::SetScrollRange.
CScrollBar::SetScrollRange
Sets minimum and maximum position values for the given scroll bar.
void SetScrollRange(
int nMinPos,
int nMaxPos,
BOOL bRedraw = TRUE);
Parameters
nMinPos
Specifies the minimum scrolling position.
nMaxPos
Specifies the maximum scrolling position.
bRedraw
Specifies whether the scroll bar should be redrawn to reflect the change. If bRedraw
is TRUE
, the scroll bar is redrawn; if FALSE
, it isn't redrawn. It's redrawn by default.
Remarks
Set nMinPos
and nMaxPos
to 0 to hide standard scroll bars.
Don't call this function to hide a scroll bar while processing a scroll-bar notification message.
If a call to SetScrollRange
immediately follows a call to the SetScrollPos
member function, set bRedraw
in SetScrollPos
to 0 to prevent the scroll bar from being redrawn twice.
The difference between the values specified by nMinPos
and nMaxPos
must not be greater than 32,767. The default range for a scroll-bar control is empty (both nMinPos
and nMaxPos
are 0).
Example
// 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
Shows or hides a scroll bar.
void ShowScrollBar(BOOL bShow = TRUE);
Parameters
bShow
Specifies whether the scroll bar is shown or hidden. If this parameter is TRUE
, the scroll bar is shown; otherwise it's hidden.
Remarks
An application shouldn't call this function to hide a scroll bar while processing a scroll-bar notification message.
Example
See the example for CScrollBar::Create
.
See also
CWnd
Class
Hierarchy Chart
CButton
Class
CComboBox
Class
CEdit
Class
CListBox
Class
CStatic
Class
CDialog
Class