Udostępnij za pośrednictwem


Informacje o kontrolkach Up-Down

Kontrola góra-dół to para przycisków strzałek, które użytkownik może kliknąć, aby zwiększyć lub zmniejszyć wartość, taką jak pozycja przewijania lub liczba wyświetlana w kontrolce pomocniczej (nazywana oknem pomocniczym).

Dla użytkownika kontrolka góra-dół i sąsiednie okno często wyglądają jak pojedyncza kontrolka. Możesz określić, że kontrolka góra-dół automatycznie umieszcza się obok powiązanego okna i automatycznie ustawia etykietę powiązanego okna na swojej bieżącej pozycji. Na przykład możesz użyć kontrolki góra-dół z kontrolką edycji, aby użytkownik wprowadził dane liczbowe. Na poniższej ilustracji przedstawiono kontrolkę góra-dół z kontrolką edycji jako okno współpracujące, kombinację, która jest czasami określana jako kontrolka suwaka.

zrzut ekranu przedstawiający krótką, szeroką prostokątną kontrolkę ze strzałkami w górę i w dół na prawej krawędzi

W tej sekcji omówiono następujące tematy.

Style sterowania Up-Down

Za pomocą stylów okien można manipulować cechami kontrolki góra-dół, takimi jak pozycjonowanie się względem powiązanego okna, ustawianie tekstu powiązanego okna oraz przetwarzanie klawiszy STRZAŁKA W GÓRĘ i STRZAŁKA W DÓŁ.

Kontrolka góra-dół ze stylem UDS_ALIGNLEFT lub UDS_ALIGNRIGHT jest wyrównana do lewej lub prawej krawędzi powiązanego okna. Szerokość okna pomocniczego jest zmniejszona, aby pomieścić szerokość przycisku góra-dół.

Kontrolka strzałek góra-dół o stylu UDS_SETBUDDYINT ustawia tytuł okna pomocniczego za każdym razem, gdy bieżąca pozycja się zmienia. Kontrolka wstawia separator tysięcy między trzema cyframi ciągu dziesiętnego, chyba że określono styl UDS_NOTHOUSANDS. Jeśli okno kumpla jest polem listy, kontrolka w górę ustawia bieżące zaznaczenie zamiast podpisu.

Możesz określić styl UDS_ARROWKEYS, aby zapewnić interfejs klawiatury dla kontrolki góra-dół. Jeśli ten styl zostanie określony, kontrolka przetwarza naciśnięcia strzałki w górę i strzałki w dół. Kontrolka również podklasuje okno kumpla, dzięki czemu może przetwarzać te klucze, gdy okno kumpla ma fokus.

Jeśli używasz kontrolki góra-dół do przewijania w poziomie, możesz określić styl UDS_HORZ. Ten styl powoduje, że strzałki kontrolki w górę w dół wskazują w lewo i w prawo zamiast w górę i w dół.

Domyślnie bieżąca pozycja nie zmienia się, jeśli użytkownik próbuje jej zwiększać lub zmniejszać poza maksymalną lub minimalną wartość. To zachowanie można zmienić przy użyciu stylu UDS_WRAP, aby pozycja "zawijała się" na przeciwny kraniec. Na przykład, zwiększanie wartości poza górną granicę powoduje, że pozycja zostaje zawinięta z powrotem do dolnej granicy.

Położenie i przyspieszenie

Po utworzeniu kontrolki w górę w dół można zmienić bieżącą pozycję kontrolki, pozycję minimalną i maksymalną pozycję, wysyłając komunikaty. Możesz również zmienić bazę promieniową używaną do wyświetlania bieżącej pozycji w oknie kumpla i szybkości, z jaką bieżąca pozycja zmienia się po kliknięciu strzałki w górę lub w dół.

Aby pobrać bieżącą pozycję kontrolki typu góra-dół, użyj komunikatu UDM_GETPOS. W przypadku kontrolki góra-dół z oknem pomocniczym bieżąca pozycja to liczba w nagłówku okna pomocniczego. Ponieważ podpis mógł ulec zmianie (na przykład użytkownik mógł edytować tekst kontrolki edycji), kontrolka w górę w dół pobiera bieżący podpis i odpowiednio aktualizuje jego bieżące położenie.

Podpis okna towarzysza może być ciągiem dziesiętnym lub szesnastkowym, w zależności od podstawy liczbowej (czyli 10 lub 16) kontrolki góra-dół. Bazę można ustawić przy użyciu komunikatu UDM_SETBASE i pobrać bazę przy użyciu komunikatu UDM_GETBASE.

Komunikat UDM_SETPOS ustawia bieżącą pozycję okna pomocniczego. Należy pamiętać, że w przeciwieństwie do paska przewijania kontrolka w górę w dół automatycznie zmienia swoją bieżącą pozycję po kliknięciu strzałek w górę i w dół. W związku z tym aplikacja nie musi ustawiać bieżącego położenia podczas przetwarzania komunikatu WM_VSCROLL lub WM_HSCROLL.

Możesz zmienić minimalne i maksymalne pozycje kontrolki w górę w dół przy użyciu komunikatu UDM_SETRANGE. Maksymalna pozycja może być mniejsza niż minimalna, a w takim przypadku kliknięcie przycisku strzałki w górę zmniejsza bieżącą pozycję. Inaczej mówiąc, "w górę" oznacza ruch w kierunku maksymalnej pozycji. Aby pobrać minimalne i maksymalne pozycje dla kontrolki typu góra-dół, użyj komunikatu UDM_GETRANGE.

Możesz kontrolować szybkość zmiany położenia, gdy użytkownik trzyma wciśnięty przycisk strzałki, poprzez ustawienie przyspieszenia kontrolki strzałek. Przyspieszenie jest definiowane przez tablicę struktur UDACCEL. Każda struktura określa interwał czasu i liczbę jednostek, według których należy zwiększać lub dekrementować na końcu tego interwału. Aby ustawić przyspieszenie, użyj komunikatu UDM_SETACCEL. Aby pobrać informacje o przyspieszaniu, użyj komunikatu UDM_GETACCEL.

Domyślne Up-Down kontroluje przetwarzanie komunikatów

W tej sekcji opisano standardowe komunikaty systemu Windows przetwarzane przez kontrolkę góra-dół.

Komunikat Przetwarzanie wykonane
WM_CREATE Przydziela i inicjuje prywatną strukturę danych oraz zapisuje jej adres jako dane okna.
WM_DESTROY Zwalnia dane przydzielone podczas przetwarzania WM_CREATE.
WM_ENABLE Unieważnia okno.
WM_KEYDOWN Zmienia bieżącą pozycję po naciśnięciu klawisza STRZAŁKA W GÓRĘ lub STRZAŁKA W DÓŁ.
WM_KEYUP Dokonuje zmiany miejsca.
WM_LBUTTONDOWN Przechwytuje mysz. Jeśli okno kumpla jest kontrolką edycji lub polem listy, ustawia fokus na okno kumpla. Jeśli mysz znajduje się nad przyciskiem w górę lub w dół, rozpoczyna zmianę położenia i ustawia czasomierz.
WM_LBUTTONUP Kończy zmianę położenia i zwalnia przechwytywanie kursora myszki, gdy kontrolka strzałek góra/dół przechwyci mysz. Jeśli okno kumpla jest kontrolką edycji, wybiera cały tekst w kontrolce edycji.
WM_PAINT Maluje kontrolkę góra-dół. Jeśli parametr wParam ma wartość inną niż NULL, kontrolka zakłada, że wartość jest HDC i maluje przy użyciu tego kontekstu urządzenia.
WM_TIMER Zmienia bieżącą pozycję, jeśli mysz jest trzymana w dół przez przycisk i upłynął wystarczający interwał.