Udostępnij za pośrednictwem


CScrollBar Klasa

Udostępnia funkcje kontrolki paska przewijania systemu Windows.

Składnia

class CScrollBar : public CWnd

Elementy członkowskie

Konstruktory publiczne

Nazwa/nazwisko opis
CScrollBar::CScrollBar CScrollBar Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CScrollBar::Create Tworzy pasek przewijania systemu Windows i dołącza go do CScrollBar obiektu.
CScrollBar::EnableScrollBar Włącza lub wyłącza jedną lub obie strzałki paska przewijania.
CScrollBar::GetScrollBarInfo Pobiera informacje o pasku przewijania SCROLLBARINFO przy użyciu struktury.
CScrollBar::GetScrollInfo Pobiera informacje o pasku przewijania.
CScrollBar::GetScrollLimit Pobiera limit paska przewijania
CScrollBar::GetScrollPos Pobiera bieżącą pozycję pola przewijania.
CScrollBar::GetScrollRange Pobiera bieżące minimalne i maksymalne położenia paska przewijania dla danego paska przewijania.
CScrollBar::SetScrollInfo Ustawia informacje o pasku przewijania.
CScrollBar::SetScrollPos Ustawia bieżące położenie pola przewijania.
CScrollBar::SetScrollRange Ustawia wartości minimalnej i maksymalnej pozycji dla danego paska przewijania.
CScrollBar::ShowScrollBar Wyświetla lub ukrywa pasek przewijania.

Uwagi

Kontrolkę paska przewijania można utworzyć w dwóch krokach. Najpierw wywołaj konstruktor CScrollBar , aby skonstruować CScrollBar obiekt, a następnie wywołaj Create funkcję składową, aby utworzyć kontrolkę paska przewijania systemu Windows i dołączyć ją do CScrollBar obiektu.

Jeśli utworzysz CScrollBar obiekt w oknie dialogowym (za pomocą zasobu okna dialogowego), CScrollBar obiekt zostanie automatycznie zniszczony, gdy użytkownik zamknie okno dialogowe.

Jeśli utworzysz CScrollBar obiekt w oknie, może być również konieczne jego zniszczenie.

Jeśli utworzysz CScrollBar obiekt na stosie, zostanie on automatycznie zniszczony. Jeśli utworzysz CScrollBar obiekt na stercie przy użyciu new funkcji, musisz wywołać delete obiekt, aby go zniszczyć, gdy użytkownik zakończy pasek przewijania systemu Windows.

Jeśli przydzielisz jakąkolwiek pamięć w CScrollBar obiekcie, przesłoń CScrollBar destruktor w celu usunięcia alokacji.

Aby uzyskać powiązane informacje o korzystaniu z programu CScrollBar, zobacz Kontrolki.

Hierarchia dziedziczenia

CObject

CCmdTarget

CWnd

CScrollBar

Wymagania

Nagłówek: afxwin.h

CScrollBar::Create

Tworzy pasek przewijania systemu Windows i dołącza go do CScrollBar obiektu.

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

Parametry

dwStyle
Określa styl paska przewijania. Zastosuj dowolną kombinację stylów paska przewijania do paska przewijania.

rect
Określa rozmiar i położenie paska przewijania. Może być strukturą RECT lub obiektem CRect .

pParentWnd
Określa okno nadrzędne paska przewijania, zwykle CDialog obiekt. Nie może to być NULL.

nID
Identyfikator kontrolki paska przewijania.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Obiekt jest konstruowany CScrollBar w dwóch krokach. Najpierw wywołaj konstruktor, który konstruuje CScrollBar obiekt, a następnie wywołaj Createmetodę , która tworzy i inicjuje skojarzony pasek przewijania systemu Windows i dołącza go do CScrollBar obiektu.

Zastosuj następujące style okna do paska przewijania:

  • WS_CHILD Zawsze

  • WS_VISIBLE Zwykle

  • WS_DISABLED Rzadko

  • WS_GROUP Aby grupować kontrolki

Przykład

// 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 Tworzy obiekt.

CScrollBar();

Uwagi

Po utworzeniu obiektu wywołaj funkcję składową Create , aby utworzyć i zainicjować pasek przewijania systemu Windows.

Przykład

CScrollBar m_ScrollBarHorz;

CScrollBar::EnableScrollBar

Włącza lub wyłącza jedną lub obie strzałki paska przewijania.

BOOL EnableScrollBar(UINT nArrowFlags = ESB_ENABLE_BOTH);

Parametry

nArrowFlags
Określa, czy strzałki przewijania są włączone, czy wyłączone i które strzałki są włączone lub wyłączone. Ten parametr może być jedną z następujących wartości:

  • ESB_ENABLE_BOTH Włącza obie strzałki paska przewijania.

  • ESB_DISABLE_LTUP Wyłącza strzałkę w lewo poziomego paska przewijania lub strzałkę w górę pionowego paska przewijania.

  • ESB_DISABLE_RTDN Wyłącza strzałkę w prawo poziomego paska przewijania lub strzałkę w dół pionowego paska przewijania.

  • ESB_DISABLE_BOTH Wyłącza obie strzałki paska przewijania.

Wartość zwracana

Niezerowe, jeśli strzałki są włączone lub wyłączone zgodnie z określoną wartością; w przeciwnym razie 0, co wskazuje, że strzałki są już w żądanym stanie lub że wystąpił błąd.

Przykład

Zobacz przykład dla elementu CScrollBar::SetScrollRange.

CScrollBar::GetScrollBarInfo

Pobiera informacje, które SCROLLBARINFO struktura utrzymuje na pasku przewijania.

BOOL GetScrollBarInfo(PSCROLLBARINFO pScrollInfo) const;

Parametry

pScrollInfo
Wskaźnik do SCROLLBARINFO struktury.

Wartość zwracana

Zwraca powodzenie TRUE po FALSE niepowodzeniu.

Uwagi

Ta funkcja składowa emuluje funkcjonalność komunikatu SBM_SCROLLBARINFO zgodnie z opisem w zestawie WINDOWS SDK.

CScrollBar::GetScrollInfo

Pobiera informacje, które SCROLLINFO struktura utrzymuje na pasku przewijania.

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

Parametry

lpScrollInfo
Wskaźnik do SCROLLINFO struktury. Aby uzyskać więcej informacji na temat tej struktury, zobacz zestaw Windows SDK.

nMask
Określa parametry paska przewijania do pobrania. Typowe użycie, SIF_ALL, określa kombinację SIF_PAGE, SIF_POS, SIF_TRACKPOSi SIF_RANGE. Zobacz SCROLLINFO , aby uzyskać więcej informacji na temat nMask wartości.

Wartość zwracana

Jeśli komunikat pobrał jakiekolwiek wartości, zwraca TRUEwartość . W przeciwnym razie jest to FALSE.

Uwagi

GetScrollInfo Umożliwia aplikacjom używanie 32-bitowych pozycji przewijania.

Struktura SCROLLINFO zawiera informacje o pasku przewijania, w tym minimalne i maksymalne pozycje przewijania, rozmiar strony i położenie pola przewijania (kciuk). SCROLLINFO Zobacz temat struktury w zestawie Windows SDK, aby uzyskać więcej informacji na temat zmieniania domyślnych ustawień struktury.

Programy obsługi komunikatów systemu Windows MFC wskazujące położenie paska przewijania, CWnd::OnHScrolli CWnd::OnVScroll, zawierają tylko 16 bitów danych położenia. GetScrollInfo i SetScrollInfo podaj 32 bity danych położenia paska przewijania. W związku z tym aplikacja może wywołać GetScrollInfo funkcję podczas przetwarzania CWnd::OnHScroll lub CWnd::OnVScroll uzyskać 32-bitowe dane położenia paska przewijania.

Przykład

Zobacz przykład dla elementu CWnd::OnHScroll.

CScrollBar::GetScrollLimit

Pobiera maksymalną pozycję przewijania paska przewijania.

int GetScrollLimit();

Wartość zwracana

Określa maksymalną pozycję paska przewijania w przypadku powodzenia; w przeciwnym razie 0.

Przykład

Zobacz przykład dla elementu CWnd::OnHScroll.

CScrollBar::GetScrollPos

Pobiera bieżącą pozycję pola przewijania.

int GetScrollPos() const;

Wartość zwracana

Określa bieżącą pozycję pola przewijania, jeśli operacja się powiedzie; w przeciwnym razie 0.

Uwagi

Bieżące położenie jest wartością względną, która zależy od bieżącego zakresu przewijania. Jeśli na przykład zakres przewijania wynosi od 100 do 200, a pole przewijania znajduje się w środku paska, bieżąca pozycja to 150.

Przykład

Zobacz przykład dla elementu CWnd::OnHScroll.

CScrollBar::GetScrollRange

Kopiuje bieżące minimalne i maksymalne pozycje paska przewijania dla danego paska przewijania do lokalizacji określonych przez lpMinPos i lpMaxPos.

void GetScrollRange(
    LPINT lpMinPos,
    LPINT lpMaxPos) const;

Parametry

lpMinPos
Wskazuje zmienną całkowitą, która ma otrzymać minimalną pozycję.

lpMaxPos
Wskazuje zmienną całkowitą, która ma otrzymać maksymalną pozycję.

Uwagi

Domyślny zakres kontrolki paska przewijania jest pusty (obie wartości to 0).

Przykład

Zobacz przykład dla elementu CWnd::OnHScroll.

CScrollBar::SetScrollInfo

Ustawia informacje, które SCROLLINFO struktura utrzymuje na pasku przewijania.

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

Parametry

lpScrollInfo
Wskaźnik do SCROLLINFO struktury.

bRedraw
Określa, czy pasek przewijania ma zostać ponownie wyrysowyny, aby odzwierciedlić nowe informacje. Jeśli bRedraw ma wartość TRUE, pasek przewijania zostanie ponownie narysowane. Jeśli jest to FALSEwartość , nie zostanie ona ponownie wyrysowana. Pasek przewijania jest domyślnie ponownie rysowany.

Wartość zwracana

Jeśli operacja powiedzie się, zwraca wartość TRUE. W przeciwnym razie jest to FALSE.

Uwagi

Należy podać wartości wymagane przez SCROLLINFO parametry struktury, w tym wartości flagi.

Struktura SCROLLINFO zawiera informacje o pasku przewijania, w tym minimalne i maksymalne pozycje przewijania, rozmiar strony i położenie pola przewijania (kciuk). SCROLLINFO Zobacz temat struktury w zestawie Windows SDK, aby uzyskać więcej informacji na temat zmieniania domyślnych ustawień struktury.

Przykład

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

Ustawia bieżące położenie pola przewijania do określonego przez nPos i, jeśli określono, ponownie rysuje pasek przewijania, aby odzwierciedlić nową pozycję.

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

Parametry

nPos
Określa nowe położenie pola przewijania. Musi znajdować się w zakresie przewijania.

bRedraw
Określa, czy pasek przewijania ma zostać ponownie wyrysowyny, aby odzwierciedlić nową pozycję. Jeśli bRedraw ma wartość TRUE, pasek przewijania zostanie ponownie narysowane. Jeśli jest to FALSEwartość , nie zostanie ona ponownie wyrysowana. Pasek przewijania jest domyślnie ponownie rysowany.

Wartość zwracana

Określa poprzednie położenie pola przewijania, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Ustaw bRedraw wartość na FALSE zawsze, gdy pasek przewijania zostanie ponownie narysowany przez kolejne wywołanie innej funkcji, aby uniknąć ponownego narysowania paska przewijania dwa razy w krótkim odstępie czasu.

Przykład

Zobacz przykład CScrollBar::SetScrollRange.

CScrollBar::SetScrollRange

Ustawia wartości minimalnej i maksymalnej pozycji dla danego paska przewijania.

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

Parametry

nMinPos
Określa minimalną pozycję przewijania.

nMaxPos
Określa maksymalną pozycję przewijania.

bRedraw
Określa, czy pasek przewijania ma zostać ponownie wyrysowyny, aby odzwierciedlić zmianę. Jeśli bRedraw ma TRUEwartość , pasek przewijania zostanie ponownie narysowane; jeśli FALSEparametr nie zostanie ponownie narysowane. Domyślnie jest ona rysowana ponownie.

Uwagi

Ustaw nMinPos wartość i nMaxPos na 0, aby ukryć standardowe paski przewijania.

Nie należy wywoływać tej funkcji, aby ukryć pasek przewijania podczas przetwarzania komunikatu powiadomienia paska przewijania.

Jeśli wywołanie polecenia SetScrollRange natychmiast następuje wywołanie funkcji składowej SetScrollPos , ustaw bRedraw SetScrollPos wartość na 0, aby zapobiec dwukrotnemu ponownemu rysowaniu paska przewijania.

Różnica między wartościami określonymi przez nMinPos i nMaxPos nie może być większa niż 32 767. Domyślny zakres kontrolki paska przewijania jest pusty (zarówno, jak nMinPos i nMaxPos 0).

Przykład

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

Wyświetla lub ukrywa pasek przewijania.

void ShowScrollBar(BOOL bShow = TRUE);

Parametry

bShow
Określa, czy pasek przewijania jest wyświetlany, czy ukryty. Jeśli ten parametr to TRUE, zostanie wyświetlony pasek przewijania; w przeciwnym razie jest ukryty.

Uwagi

Aplikacja nie powinna wywoływać tej funkcji, aby ukryć pasek przewijania podczas przetwarzania komunikatu powiadomienia paska przewijania.

Przykład

Zobacz przykład dla elementu CScrollBar::Create.

Zobacz też

CWnd Klasa
Wykres hierarchii
CButton Klasa
CComboBox Klasa
CEdit Klasa
CListBox Klasa
CStatic Klasa
CDialog Klasa