다음을 통해 공유


CScrollBar 수업

Windows 스크롤 막대 컨트롤의 기능을 제공합니다.

구문

class CScrollBar : public CWnd

멤버

공용 생성자

속성 설명
CScrollBar::CScrollBar CScrollBar 개체를 생성합니다.

공용 메서드

이름 설명
CScrollBar::Create Windows 스크롤 막대를 만들어 개체에 CScrollBar 연결합니다.
CScrollBar::EnableScrollBar 스크롤 막대의 화살표 하나 또는 둘 다를 사용하거나 사용하지 않도록 설정합니다.
CScrollBar::GetScrollBarInfo 구조를 사용하여 스크롤 막대에 대한 정보를 검색합니다 SCROLLBARINFO .
CScrollBar::GetScrollInfo 스크롤 막대에 대한 정보를 검색합니다.
CScrollBar::GetScrollLimit 스크롤 막대의 제한을 검색합니다.
CScrollBar::GetScrollPos 스크롤 상자의 현재 위치를 검색합니다.
CScrollBar::GetScrollRange 지정된 스크롤 막대의 현재 최소 및 최대 스크롤 막대 위치를 검색합니다.
CScrollBar::SetScrollInfo 스크롤 막대에 대한 정보를 설정합니다.
CScrollBar::SetScrollPos 스크롤 상자의 현재 위치를 설정합니다.
CScrollBar::SetScrollRange 지정된 스크롤 막대에 대한 최소 및 최대 위치 값을 설정합니다.
CScrollBar::ShowScrollBar 스크롤 막대를 표시하거나 숨깁니다.

설명

두 단계로 스크롤 막대 컨트롤을 만듭니다. 먼저 생성자를 CScrollBar 호출하여 개체를 CScrollBar 생성한 다음, 멤버 함수를 호출 Create 하여 Windows 스크롤 막대 컨트롤을 만들고 개체에 CScrollBar 연결합니다.

대화 상자 내에서(대화 상자 리소스 CScrollBar 를 통해) 개체를 만들 CScrollBar 면 사용자가 대화 상자를 닫으면 자동으로 제거됩니다.

창 내에서 개체를 CScrollBar 만드는 경우 개체를 삭제해야 할 수도 있습니다.

스택에 개체를 CScrollBar 만들면 자동으로 제거됩니다. 함수를 CScrollBar 사용하여 힙에 개체를 new 만드는 경우 사용자가 Windows 스크롤 막대를 종료할 때 개체를 호출 delete 하여 삭제해야 합니다.

개체에 메모리를 CScrollBar 할당하는 경우 소멸자를 재정 CScrollBar 의하여 할당을 삭제합니다.

사용에 CScrollBar대한 관련 정보는 컨트롤을 참조 하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

CScrollBar

요구 사항

머리글: afxwin.h

CScrollBar::Create

Windows 스크롤 막대를 만들어 개체에 CScrollBar 연결합니다.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

매개 변수

dwStyle
스크롤 막대의 스타일을 지정합니다. 스크롤 막대 스타일 조합을 스크롤 막대에 적용합니다.

rect
스크롤 막대의 크기와 위치를 지정합니다. 구조체 또는 CRect 개체일 RECT 수 있습니다.

pParentWnd
스크롤 막대의 부모 창(일반적으로 개체)을 CDialog 지정합니다. 해서는 안 됩니다 NULL.

nID
스크롤 막대의 컨트롤 ID입니다.

Return Value

성공하면 0이 아니고, 그렇지 않으면 0입니다.

설명

두 단계로 개체를 CScrollBar 생성합니다. 먼저 개체를 생성하는 CScrollBar 생성자를 호출한 다음, 호출 Create하여 연결된 Windows 스크롤 막대를 만들고 초기화하고 개체에 CScrollBar 연결합니다.

스크롤 막대에 다음 창 스타일을 적용합니다.

  • WS_CHILD

  • WS_VISIBLE 보통

  • WS_DISABLED 드물게

  • WS_GROUP 컨트롤을 그룹화하려면

예시

// 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

CScrollBar 개체를 생성합니다.

CScrollBar();

설명

개체를 생성한 후 멤버 함수를 Create 호출하여 Windows 스크롤 막대를 만들고 초기화합니다.

예시

CScrollBar m_ScrollBarHorz;

CScrollBar::EnableScrollBar

스크롤 막대의 화살표 하나 또는 둘 다를 사용하거나 사용하지 않도록 설정합니다.

BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);

매개 변수

nArrowFlags
스크롤 화살표를 사용할지 또는 사용하지 않도록 설정할지, 어떤 화살표를 사용하도록 설정하거나 사용하지 않도록 설정할지를 지정합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

  • ESB_ENABLE_BOTH 스크롤 막대의 두 화살표를 모두 사용하도록 설정합니다.

  • ESB_DISABLE_LTUP 가로 스크롤 막대의 왼쪽 화살표 또는 세로 스크롤 막대의 위쪽 화살표를 사용하지 않도록 설정합니다.

  • ESB_DISABLE_RTDN 가로 스크롤 막대의 오른쪽 화살표 또는 세로 스크롤 막대의 아래쪽 화살표를 사용하지 않도록 설정합니다.

  • ESB_DISABLE_BOTH 스크롤 막대의 두 화살표를 모두 사용하지 않도록 설정합니다.

Return Value

지정된 대로 화살표를 사용하거나 사용하지 않도록 설정한 경우 0이 아닌 경우 그렇지 않으면 화살표가 이미 요청된 상태이거나 오류가 발생했음을 나타내는 0입니다.

예시

CScrollBar::SetScrollRange에 대한 예를 참조하세요.

CScrollBar::GetScrollBarInfo

SCROLLBARINFO 구조체에서 스크롤 막대에 대해 유지 관리하는 정보를 검색합니다.

BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const;

매개 변수

pScrollInfo
구조체에 대한 포인터입니다 SCROLLBARINFO .

Return Value

성공하면 TRUE를 반환하고 실패하면 FALSE를 반환합니다.

설명

이 멤버 함수는 Windows SDK에 SBM_SCROLLBARINFO 설명된 대로 메시지의 기능을 에뮬레이트합니다.

CScrollBar::GetScrollInfo

SCROLLINFO 구조체에서 스크롤 막대에 대해 유지 관리하는 정보를 검색합니다.

BOOL GetScrollInfo(
    LPSCROLLINFO lpScrollInfo,
    UINT nMask = SIF_ALL);

매개 변수

lpScrollInfo
구조체에 대한 포인터입니다 SCROLLINFO . 이 구조에 대한 자세한 내용은 Windows SDK를 참조하세요.

nMask
검색할 스크롤 막대 매개 변수를 지정합니다. 일반적인 사용법, SIF_ALL, , SIF_POSSIF_TRACKPOS및 .SIF_PAGESIF_RANGE 값에 nMask 대한 자세한 내용은 참조 SCROLLINFO 하세요.

Return Value

메시지가 값을 검색한 경우 반환은 .입니다 TRUE. 아니면 FALSE입니다.

설명

GetScrollInfo 를 사용하면 애플리케이션에서 32비트 스크롤 위치를 사용할 수 있습니다.

구조체에는 SCROLLINFO 최소 및 최대 스크롤 위치, 페이지 크기 및 스크롤 상자의 위치(엄지 손가락)를 포함하여 스크롤 막대에 대한 정보가 포함됩니다. SCROLLINFO 구조 기본값 변경에 대한 자세한 내용은 Windows SDK의 구조 항목을 참조하세요.

스크롤 막대 위치를 나타내고 CWnd::OnVScroll16비트 위치 CWnd::OnHScroll데이터만 제공하는 MFC Windows 메시지 처리기입니다. GetScrollInfoSetScrollInfo 32비트 스크롤 막대 위치 데이터를 제공합니다. 따라서 애플리케이션은 처리하는 CWnd::OnHScroll 동안 호출 GetScrollInfo 하거나 CWnd::OnVScroll 32비트 스크롤 막대 위치 데이터를 가져올 수 있습니다.

예시

CWnd::OnHScroll에 대한 예를 참조하세요.

CScrollBar::GetScrollLimit

스크롤 막대의 최대 스크롤 위치를 검색합니다.

int GetScrollLimit();

Return Value

성공하면 스크롤 막대의 최대 위치를 지정합니다. 그렇지 않으면 0입니다.

예시

CWnd::OnHScroll에 대한 예를 참조하세요.

CScrollBar::GetScrollPos

스크롤 상자의 현재 위치를 검색합니다.

int GetScrollPos() const;

Return Value

성공하면 스크롤 상자의 현재 위치를 지정합니다. 그렇지 않으면 0입니다.

설명

현재 위치는 현재 스크롤 범위에 따라 달라지는 상대 값입니다. 예를 들어 스크롤 범위가 100에서 200이고 스크롤 상자가 막대 중간에 있는 경우 현재 위치는 150입니다.

예시

CWnd::OnHScroll에 대한 예를 참조하세요.

CScrollBar::GetScrollRange

지정된 스크롤 막대의 현재 최소 및 최대 스크롤 막대 위치를 지정한 위치 및 lpMaxPos.에 복사 lpMinPos 합니다.

void GetScrollRange(
    LPINT lpMinPos,
    LPINT lpMaxPos) const;

매개 변수

lpMinPos
최소 위치를 받을 정수 변수를 가리킵니다.

lpMaxPos
최대 위치를 받을 정수 변수를 가리킵니다.

설명

스크롤 막대 컨트롤의 기본 범위는 비어 있습니다(두 값 모두 0).

예시

CWnd::OnHScroll에 대한 예를 참조하세요.

CScrollBar::SetScrollInfo

구조체에서 스크롤 막대에 SCROLLINFO 대해 유지 관리하는 정보를 설정합니다.

BOOL SetScrollInfo(
    LPSCROLLINFO lpScrollInfo,
    BOOL bRedraw = TRUE);

매개 변수

lpScrollInfo
구조체에 대한 포인터입니다 SCROLLINFO .

bRedraw
새 정보를 반영하도록 스크롤 막대를 다시 그릴지 여부를 지정합니다. 이 TRUE경우 bRedraw 스크롤 막대가 다시 그려집니다. FALSE이 경우 다시 그려지지 않습니다. 스크롤 막대는 기본적으로 다시 그려집니다.

Return Value

성공하면 반환은 .입니다 TRUE. 아니면 FALSE입니다.

설명

플래그 값을 포함하여 구조 매개 변수에 SCROLLINFO 필요한 값을 제공해야 합니다.

구조체에는 SCROLLINFO 최소 및 최대 스크롤 위치, 페이지 크기 및 스크롤 상자의 위치(엄지 손가락)를 포함하여 스크롤 막대에 대한 정보가 포함됩니다. SCROLLINFO 구조 기본값 변경에 대한 자세한 내용은 Windows SDK의 구조 항목을 참조하세요.

예시

// 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

스크롤 상자의 현재 위치를 지정 nPos 한 위치로 설정하고, 지정한 경우 스크롤 막대를 다시 그려 새 위치를 반영합니다.

int SetScrollPos(
    int nPos,
    BOOL bRedraw = TRUE);

매개 변수

nPos
스크롤 상자의 새 위치를 지정합니다. 스크롤 범위 내에 있어야 합니다.

bRedraw
새 위치를 반영하도록 스크롤 막대를 다시 그릴지 여부를 지정합니다. 이 TRUE경우 bRedraw 스크롤 막대가 다시 그려집니다. FALSE이 경우 다시 그려지지 않습니다. 스크롤 막대는 기본적으로 다시 그려집니다.

Return Value

성공하면 스크롤 상자의 이전 위치를 지정합니다. 그렇지 않으면 0입니다.

설명

FALSE 스크롤 막대가 짧은 간격 내에 두 번 다시 그려지는 것을 방지하기 위해 다른 함수에 대한 후속 호출에 의해 스크롤 막대가 다시 그려질 때마다 설정 bRedraw 됩니다.

예시

CScrollBar::SetScrollRange에 대한 예제를 참조하세요.

CScrollBar::SetScrollRange

지정된 스크롤 막대에 대한 최소 및 최대 위치 값을 설정합니다.

void SetScrollRange(
    int nMinPos,
    int nMaxPos,
    BOOL bRedraw = TRUE);

매개 변수

nMinPos
최소 스크롤 위치를 지정합니다.

nMaxPos
최대 스크롤 위치를 지정합니다.

bRedraw
변경 내용을 반영하도록 스크롤 막대를 다시 그릴지 여부를 지정합니다. 이 TRUE경우 bRedraw 스크롤 막대가 다시 그려집니다. 이 경우 FALSE다시 그려지지 않습니다. 기본적으로 다시 그려지게 됩니다.

설명

nMaxPos 표준 스크롤 막대를 숨기려면 0으로 설정합니다nMinPos.

스크롤 막대 알림 메시지를 처리하는 동안 스크롤 막대를 숨기려면 이 함수를 호출하지 마세요.

호출이 멤버 함수에 SetScrollRange 대한 호출 SetScrollPos 바로 뒤에 오면 스크롤 막대가 두 번 다시 그려지는 것을 방지하기 위해 0으로 설정합니다 bRedraw SetScrollPos .

지정 nMinPos 한 값과 nMaxPos 32,767보다 크면 안 되는 값의 차이입니다. 스크롤 막대 컨트롤의 기본 범위는 비어 있습니다nMaxPos(둘 다 nMinPos 0임).

예시

// 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

스크롤 막대를 표시하거나 숨깁니다.

void ShowScrollBar(BOOL bShow = TRUE);

매개 변수

bShow
스크롤 막대가 표시되거나 숨겨지는지 여부를 지정합니다. 이 매개 변수인 TRUE경우 스크롤 막대가 표시되고, 그렇지 않으면 숨겨집니다.

설명

애플리케이션은 스크롤 막대 알림 메시지를 처리하는 동안 스크롤 막대를 숨기기 위해 이 함수를 호출해서는 안 됩니다.

예시

CScrollBar::Create에 대한 예를 참조하세요.

참고 항목

CWnd 클래스
계층 구조 차트
CButton 클래스
CComboBox 클래스
CEdit 클래스
CListBox 클래스
CStatic 클래스
CDialog 클래스