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.
W tej sekcji omówiono następujące tematy.
- Up-Down Style kontrolek
- położenie i przyspieszenie
- domyślne Up-Down kontroluje przetwarzanie komunikatów
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ł. |