Udostępnij za pośrednictwem


Płaskie paski przewijania

Program Microsoft Internet Explorer 4.0 wprowadził nową technologię wizualną o nazwie płaskie paski przewijania. Funkcjonalnie płaskie paski przewijania zachowują się tak jak standardowe paski przewijania. Różnica polega na tym, że można dostosować ich wygląd do większego zakresu niż standardowe paski przewijania.

Na poniższej ilustracji przedstawiono okno zawierające płaski pasek przewijania.

zrzut ekranu okna zawierającego płaski pasek przewijania

Nuta

Płaskie paski przewijania są obsługiwane przez Comctl32.dll wersji 4.71 do 5.82. Comctl32.dll w wersji 6.00 lub nowszej nie obsługują płaskich pasków przewijania.

 

Używanie płaskich pasków przewijania

W tej sekcji opisano sposób implementowania płaskich pasków przewijania w aplikacji.

Przed rozpoczęciem

Aby użyć funkcji paska przewijania płaskiego, należy uwzględnić commctrl.h w plikach źródłowych i połączyć się z comctl32.lib.

Dodawanie płaskich pasków przewijania do okna

Aby dodać płaskie paski przewijania do okna, wywołaj metodę InitializeFlatSB, przekazując uchwyt do okna. Zamiast używać standardowych funkcji paska przewijania do manipulowania paskami przewijania, należy użyć równoważnej funkcji FlatSB_XXX. Dostępne są płaskie funkcje paska przewijania służące do ustawiania i pobierania informacji przewijania, zakresu i położenia. Jeśli płaskie paski przewijania nie zostały zainicjowane dla okna, interfejs API paska przewijania płaskiego będzie odroczyć odpowiednie standardowe funkcje, jeśli są używane. Dzięki temu można włączać i wyłączać płaskie paski przewijania bez konieczności pisania kodu warunkowego.

Ponieważ aplikacja mogła ustawić metryki niestandardowe dla płaskich pasków przewijania, nie są one automatycznie aktualizowane po zmianie metryk systemowych. Po zmianie metryk paska przewijania systemu jest emitowany komunikat WM_SETTINGCHANGE z wParam ustawiony na SPI_SETNONCLIENTMETRICS. Aby zaktualizować płaskie paski przewijania do nowych metryk systemowych, aplikacje muszą obsługiwać ten komunikat i jawnie zmieniać właściwości zależne od metryk paska przewijania płaskiego.

Aby zaktualizować właściwości paska przewijania, użyj FlatSB_SetScrollProp. Poniższy fragment kodu zmienia właściwości metryki metryki paska przewijania płaskiego na bieżące wartości systemowe.

void FlatSB_UpdateMetrics(HWND hWnd)
{
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXVSCROLL, GetSystemMetrics(SM_CXVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHSCROLL, GetSystemMetrics(SM_CXHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVSCROLL, GetSystemMetrics(SM_CYVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYHSCROLL, GetSystemMetrics(SM_CYHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHTHUMB, GetSystemMetrics(SM_CXHTHUMB), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVTHUMB, GetSystemMetrics(SM_CYVTHUMB), TRUE);
}

Ulepszanie płaskich pasków przewijania

FlatSB_SetScrollProp umożliwia modyfikowanie płaskich pasków przewijania w celu dostosowania wyglądu okna. W przypadku pionowych pasków przewijania można zmienić szerokość paska i wysokość strzałek kierunku. W przypadku poziomych pasków przewijania można zmienić wysokość paska i szerokość strzałek kierunku. Możesz również zmienić kolor tła pasków przewijania poziomego i pionowego.

FlatSB_SetScrollProp pozwala również dostosować sposób wyświetlania płaskich pasków przewijania. Zmieniając właściwości WSB_PROP_VSTYLE i WSB_PROP_HSTYLE, można ustawić typ paska przewijania, którego chcesz użyć. Dostępne są trzy style.

Styl Opis
FSB_ENCARTA_MODE Zostanie wyświetlony standardowy płaski pasek przewijania. Gdy mysz przesuwa się na przycisk kierunku lub kciuk, ta część paska przewijania będzie wyświetlana w 3-W.
FSB_FLAT_MODE Zostanie wyświetlony standardowy płaski pasek przewijania. Gdy mysz przesuwa się na przycisk kierunku lub kciuk, ta część paska przewijania będzie wyświetlana w odwróconych kolorach.
FSB_REGULAR_MODE Zostanie wyświetlony normalny, nieprzechwytny pasek przewijania. Nie zostaną zastosowane żadne specjalne efekty wizualne.

 

Usuwanie płaskich pasków przewijania

Jeśli chcesz usunąć płaskie paski przewijania z okna, wywołaj funkcję UninitializeFlatSB, przekazując uchwyt do okna. Ta funkcja usuwa tylko płaskie paski przewijania z okna w czasie wykonywania. Nie trzeba wywoływać tej funkcji, gdy okno zostanie zniszczone.