Informacje o kontrolkach paska narzędzi
Pasek narzędzi to kontrolka zawierająca co najmniej jeden przycisk. Każdy przycisk po kliknięciu przez użytkownika wysyła komunikat polecenia do okna nadrzędnego. Zazwyczaj przyciski na pasku narzędzi odpowiadają elementom w menu aplikacji, zapewniając dodatkowy i bardziej bezpośredni sposób uzyskiwania dostępu do poleceń aplikacji przez użytkownika.
Poniższy zrzut ekranu przedstawia okno zawierające prosty pasek narzędzi dla operacji na plikach. Aplikacja włączyła style wizualne. Przycisk Zapisz jest "gorący", ponieważ kursor został zatrzymany na nim podczas wykonywania zrzutu ekranu. Rzeczywisty wygląd kontrolki różni się w zależności od systemu operacyjnego i wybranego przez użytkownika motywu.
Poniższy zrzut ekranu przedstawia tę samą kontrolkę w aplikacji, która została skompilowana bez włączonych stylów wizualnych.
W poniższych tematach omówiono funkcje, które należy wziąć pod uwagę podczas planowania paska narzędzi. Aby uzyskać szczegółowe informacje na temat implementacji i przykładowego kodu, zobacz Using Toolbar Controls.
- określanie rozmiaru i położenia paska narzędzi
- przezroczyste paski narzędzi
- paski narzędzi w stylu listy
- Definiowanie obrazków przycisków
- definiowanie tekstu dla przycisków
-
dodawanie przycisków paska narzędzi
- style przycisków paska narzędzi
- Stany przycisku paska narzędzi
- Identyfikator polecenia
- Rozmiar i położenie przycisku
- Umożliwianie dostosowywania
- włączanie ciągłego śledzenia
Jeśli tworzysz pasek narzędzi przy użyciu CreateToolbarEx, funkcja umożliwia określenie w pikselach wysokości i szerokości paska narzędzi.
Uwaga
Korzystanie z CreateToolbarEx nie jest zalecane, ponieważ nie obsługuje nowych funkcji pasków narzędzi, w tym list obrazów. Aby uzyskać więcej informacji na temat tworzenia pasków narzędzi, zobacz Using Toolbar Controls.
Funkcja CreateWindowEx nie ma parametrów określających rozmiar paska narzędzi. Procedura okna paska narzędzi automatycznie ustawia rozmiar i położenie okna paska narzędzi. Wysokość jest oparta na wysokości przycisków na pasku narzędzi. Szerokość jest identyczna jak szerokość obszaru klienta w oknie nadrzędnym. Aby zmienić ustawienia automatycznego rozmiaru, wyślij komunikat TB_SETBUTTONSIZE. CCS_TOP oraz CCS_BOTTOM wspólne style kontrolne określają, czy pasek narzędzi jest pozycjonowany wzdłuż górnej lub dolnej krawędzi obszaru klienta. Domyślnie pasek narzędzi ma styl CCS_TOP.
Ponadto procedura okna paska narzędzi automatycznie dostosowuje rozmiar paska narzędzi za każdym razem, gdy otrzyma komunikat WM_SIZE lub TB_AUTOSIZE. Aplikacja powinna wysyłać jeden z tych komunikatów za każdym razem, gdy rozmiar okna nadrzędnego zmieni się lub po wysłaniu komunikatu, który wymaga dostosowania rozmiaru paska narzędzi — na przykład komunikatu TB_SETBUTTONSIZE.
Domyślne zachowania określania rozmiaru i pozycjonowania paska narzędzi można wyłączyć, ustawiając CCS_NORESIZE i CCS_NOPARENTALIGN typowe style kontrolek. Kontrolki paska narzędzi, które są hostowane przez kontrolki rebar, muszą ustawiać te style, ponieważ kontrolki rebar określają rozmiar i pozycję paska narzędzi.
Kontrolki paska narzędzi obsługują przezroczysty wygląd, który pozwala na widoczność obszaru klienta znajdującego się pod paskiem narzędzi. Istnieją dwa rodzaje przezroczystych pasków narzędzi, z płaskimi przyciskami i z trójwymiarowymi przyciskami. Jeśli aplikacja ma być zgodna z interfejsem systemu Windows, użyj płaskiego paska narzędzi stylu przezroczystego.
Poniższy zrzut ekranu przedstawia dwa rodzaje przezroczystych pasków narzędzi, które nie korzystają ze stylów wizualnych.
Poniższy zrzut ekranu przedstawia przezroczysty pasek narzędzi, który może pojawić się w systemie Windows Vista z włączonymi stylami wizualnymi. Kolor tła okna dialogowego został zmieniony, aby zwiększyć przejrzystość.
Aby utworzyć przezroczysty pasek narzędzi, wystarczy dodać TBSTYLE_FLAT lub TBSTYLE_TRANSPARENT do parametru stylu okna CreateWindowEx. Jeśli nie chcesz, aby wiersz był wyświetlany w celu wskazania dolnej części paska narzędzi, nie używaj stylu okna WS_BORDER.
Uwaga
W przypadku używania stylów wizualizacji paski narzędzi mogą być domyślnie płaskie.
Przyciski paska narzędzi umożliwiają wyświetlanie tekstu i map bitowych. Przyciski na pasku narzędzi utworzonym za pomocą stylu TBSTYLE_LIST umieszczają tekst po prawej stronie bitmapy zamiast pod nią.
Poniższy zrzut ekranu przedstawia pasek narzędzi zawierający styl listy.
Możesz użyć stylu paska narzędzi TBSTYLE_LIST w połączeniu z stylem TBSTYLE_FLAT, aby utworzyć pasek narzędzi z płaskimi przyciskami.
Istnieją dwa sposoby określania obrazów dla przycisków — według map bitowych lub list obrazów. Aplikacja musi wybrać metodę do użycia. Nie może używać obu metod z tą samą kontrolką paska narzędzi. Należy pamiętać, że funkcja CreateToolbarEx używa metody mapy bitowej. Aplikacje, które chcą używać metody listy obrazów, muszą używać funkcji CreateWindowEx, aby utworzyć kontrolkę paska narzędzi.
Każdy przycisk na pasku narzędzi może zawierać obraz bitmapowy. Pasek narzędzi używa wewnętrznej listy do przechowywania informacji potrzebnych do narysowania obrazów. Podczas wywoływania funkcji CreateToolbarEx należy określić monochromatyczną lub kolorową mapę bitową zawierającą obrazy początkowe, a pasek narzędzi dodaje informacje do wewnętrznej listy obrazów. Dodatkowe obrazy można dodać później przy użyciu komunikatu TB_ADDBITMAP.
Każdy obraz ma indeks oparty na zerach. Pierwszy obraz dodany do listy wewnętrznej ma indeks 0, drugi obraz ma indeks 1 itd. TB_ADDBITMAP dodaje obrazy na końcu listy i zwraca indeks pierwszego dodanego nowego obrazu. Aby skojarzyć obraz z przyciskiem, należy wysłać komunikat TB_ADDBUTTONS i określić indeks obrazu po dodaniu map bitowych do wewnętrznej listy obrazów.
System Windows zakłada, że wszystkie obrazy z mapami bitowymi paska narzędzi mają taki sam rozmiar. Określasz rozmiar podczas tworzenia paska narzędzi, używając CreateToolbarEx. Jeśli używasz funkcji CreateWindowEx do utworzenia paska narzędzi, rozmiar obrazów jest ustawiony na domyślne wymiary 16 o 15 pikseli. Możesz użyć komunikatu TB_SETBITMAPSIZE, aby zmienić wymiary obrazów map bitowych, ale należy to zrobić przed dodaniem obrazów do listy wewnętrznej.
Ikony przycisków można również przechowywać w zestawie listy obrazów . Lista obrazów jest kolekcją obrazów o tym samym rozmiarze, z których każdy może być określany przez jego indeks. Listy obrazów służą do zarządzania dużymi zestawami ikon lub map bitowych. Do wyświetlania przycisków w różnych stanach można użyć maksymalnie trzech różnych list obrazów, jak pokazano w poniższej tabeli.
Państwo | Opis |
---|---|
Normalny | Przyciski w domyślnym stanie. |
Gorący | Przyciski, które znajdują się pod wskaźnikiem lub są naciskane. Gorące elementy są obsługiwane tylko w kontrolkach paska narzędzi, które mają styl TBSTYLE_FLAT. |
Niepełnosprawny | Przyciski, które są wyłączone. |
Po zniszczeniu paska narzędzi aplikacje muszą zwolnić wszystkie utworzone listy obrazów.
Każdy przycisk może wyświetlać ciąg oprócz obrazu lub zamiast go. Pasek narzędzi obsługuje wewnętrzną listę zawierającą wszystkie ciągi dostępne dla przycisków paska narzędzi. Ciągi są dodawane do listy wewnętrznej przy użyciu komunikatu TB_ADDSTRING, określając adres buforu zawierającego ciągi do dodania. Każdy ciąg musi być zakończony wartością null, a ostatni ciąg musi zostać zakończony dwoma znakami null.
Każdy ciąg ma indeks oparty na zerach. Pierwszy ciąg dodany do wewnętrznej listy ciągów ma indeks 0, drugi ciąg ma indeks 1 itd. TB_ADDSTRING dodaje ciągi na końcu listy i zwraca indeks pierwszego nowego ciągu. Indeks ciągu służy do skojarzenia ciągu z przyciskiem.
Używanie TB_ADDSTRING nie jest jedynym sposobem dodawania ciągów do paska narzędzi. Można wyświetlić napis na przycisku, przekazując wskaźnik napisowy w składniku iString struktury TBBUTTON, który jest przekazywany do TB_ADDBUTTONS. Ponadto możesz użyć TB_SETBUTTONINFO, aby przypisać tekst do przycisku paska narzędzi.
Jeśli używasz funkcji CreateToolbarEx do utworzenia paska narzędzi, możesz dodać przyciski do paska narzędzi, wypełniając tablicę TBBUTTON struktur i określając adres tablicy w wywołaniu funkcji. Jednak funkcja CreateWindowEx nie ma parametru do przekazywania struktury TBBUTTON. CreateWindowEx tworzy pusty pasek narzędzi wypełniany przez wysłanie komunikatu TB_ADDBUTTONS, określając adres struktury TBBUTTON.
Po utworzeniu paska narzędzi można dodawać przyciski, wysyłając komunikat TB_INSERTBUTTON lub TB_ADDBUTTONS. Każdy przycisk jest opisany przez TBBUTTON strukturę, która definiuje atrybuty przycisku, w tym indeksy jej ciągu i mapy bitowej, a także styl, stan, identyfikator polecenia i wartość 32-bitową zdefiniowaną przez aplikację.
Uwaga
Jeśli używasz funkcji CreateWindowEx do utworzenia paska narzędzi, przed dodaniem przycisków musisz wysłać komunikat TB_BUTTONSTRUCTSIZE. Komunikat przekazuje rozmiar struktury TBBUTTON do paska narzędzi.
Styl przycisku określa sposób wyświetlania przycisku i sposób reagowania na dane wejściowe użytkownika. Na przykład styl BTNS_BUTTON tworzy przycisk paska narzędzi, który zachowuje się jak standardowy przycisk. Przycisk, który ma styl BTNS_CHECK, jest podobny do standardowego przycisku, z wyjątkiem tego, że przełącza się między stanem przyciśniętym i nieprzyciśniętym za każdym razem, gdy użytkownik go kliknie.
Grupy przycisków paska narzędzi, które działają jak przyciski radiowe, można tworzyć przy użyciu stylu BTNS_GROUP lub BTNS_CHECKGROUP. Powoduje to, że przycisk pozostaje naciśnięty, dopóki użytkownik nie wybierze innego przycisku w grupie. Grupa jest definiowana jako ciągła kolekcja przycisków, wszystkie ze stylem BTNS_GROUP lub BTNS_CHECKGROUP.
Styl BTNS_SEP tworzy małą lukę między przyciskami lub rysuje linię między przyciskami na płaskich paskach narzędzi. Przycisk ze stylem BTNS_SEP nie otrzymuje wejścia użytkownika.
W wersji 5.80 wspólnych kontrolek wprowadzono niektóre nowe style przycisków paska narzędzi i zmieniono nazwy niektórych starszych stylów. Wszystkie flagi stylu przycisku zaczynają się teraz od BTNS_XXX zamiast TBSTYLE_XXX. Aby zapoznać się z listą i omówieniem stylów przycisków, zobacz Kontrolka paska narzędzi i Style przycisków.
Każdy przycisk na pasku narzędzi ma stan. Pasek narzędzi aktualizuje stan przycisku w celu odzwierciedlenia akcji użytkownika, takich jak kliknięcie przycisku. Stan wskazuje, czy przycisk jest aktualnie naciśnięty, włączony lub wyłączony, ukryty lub widoczny. Mimo że aplikacja ustawia stan początkowy przycisku podczas dodawania przycisku do paska narzędzi, może zmienić i pobrać stan, wysyłając TB_GETSTATE i TB_SETSTATE komunikaty do paska narzędzi. Aby uzyskać listę stanów przycisków paska narzędzi, zobacz stany paska narzędzi .
Każdy przycisk ma skojarzony z nim identyfikator polecenia zdefiniowany przez aplikację. Identyfikatory przycisków są zwykle definiowane w pliku nagłówka aplikacji. Na przykład przycisk Wklej można zdefiniować jako:
#define ID_PASTE 100
Gdy użytkownik wybierze przycisk, pasek narzędzi wysyła do okna nadrzędnego komunikat WM_COMMAND lub WM_NOTIFY, który zawiera identyfikator polecenia przycisku. Okno nadrzędne sprawdza identyfikator polecenia i wykonuje polecenie skojarzone z przyciskiem . Aby uzyskać informacje o tym, kiedy kontrolki wysyłają komunikaty WM_COMMAND i kiedy wysyłają WM_NOTIFY, zobacz sekcję Uwagi w dokumentacji WM_NOTIFY.
Pasek narzędzi śledzi swoje przyciski, przypisując każdemu przyciskowi indeks pozycji. Indeks jest oparty na zera; oznacza to, że lewy przycisk ma indeks 0, następny przycisk po prawej stronie ma indeks 1 itd. Aplikacja musi określić indeks przycisku podczas wysyłania komunikatów w celu pobrania informacji o przycisku lub ustawić atrybuty przycisku.
Pasek narzędzi aktualizuje indeksy pozycji w miarę wstawiania i usuwania przycisków. Aplikacja może pobrać bieżący indeks pozycji przycisku przy użyciu komunikatu TB_COMMANDTOINDEX. Komunikat określa identyfikator polecenia przycisku, a okno paska narzędzi używa identyfikatora do zlokalizowania przycisku i zwrócenia indeksu pozycji.
Wszystkie przyciski na pasku narzędzi mają ten sam rozmiar. Funkcja CreateToolbarEx wymaga ustawienia początkowego rozmiaru przycisków podczas tworzenia paska narzędzi. W przypadku korzystania z funkcji CreateWindowEx rozmiar początkowy jest ustawiany na domyślne wymiary 24 o 22 piksele. Możesz użyć komunikatu TB_SETBUTTONSIZE, aby zmienić rozmiar przycisku, ale należy to zrobić przed dodaniem przycisków do paska narzędzi. Komunikat TB_GETITEMRECT pobiera bieżące wymiary przycisków.
Po dodaniu ciągu, który jest dłuższy niż jakikolwiek ciąg aktualnie na pasku narzędzi, pasek narzędzi automatycznie resetuje szerokość jego przycisków. Szerokość jest ustawiona tak, aby pomieściła najdłuższy ciąg na pasku narzędzi.
Pasek narzędzi ma wbudowane funkcje dostosowywania, które można udostępnić użytkownikowi, nadając paskowi narzędzi CCS_ADJUSTABLE wspólny styl kontrolki. Funkcje dostosowywania umożliwiają użytkownikowi przeciągnięcie przycisku do nowej pozycji lub usunięcie przycisku przez przeciągnięcie go z paska narzędzi. Ponadto użytkownik może kliknąć dwukrotnie pasek narzędzi, aby wyświetlić okno dialogowe Dostosowywanie paska narzędzi, co umożliwia użytkownikowi dodawanie, usuwanie i rozmieszczanie przycisków paska narzędzi. Aby wyświetlić okno dialogowe, użyj komunikatu TB_CUSTOMIZE. Aplikacja określa, czy funkcje dostosowywania są dostępne dla użytkownika i kontroluje zakres, w jakim użytkownik może dostosować pasek narzędzi.
W ramach procesu dostosowywania aplikacje często muszą zapisywać i przywracać stan paska narzędzi. Na przykład wiele aplikacji przechowuje stan paska narzędzi przed rozpoczęciem dostosowywania paska narzędzi w przypadku, gdy użytkownik później chce przywrócić pasek narzędzi do stanu pierwotnego. Kontrolka paska narzędzi nie przechowuje automatycznie stanu przed wprowadzeniem dostosowań. Aby przywrócić ten stan, aplikacja musi zapisać stan paska narzędzi. Aby uzyskać więcej informacji, zobacz Using Toolbar Controls.
Śledzenie na gorąco oznacza, że gdy kursor przechodzi nad elementem, wygląd przycisku ulega zmianie. Po włączeniu stylów wizualnych, paski narzędzi domyślnie obsługują śledzenie na żywo. W przeciwnym razie tylko kontrolki paska narzędzi utworzone za pomocą stylu TBSTYLE_FLAT obsługują śledzenie aktywne. Możesz użyć innych stylów okna w połączeniu z TBSTYLE_FLAT, aby utworzyć paski narzędzi, które umożliwiają śledzenie elementów, ale mają inny wygląd niż standardowy płaski pasek narzędzi. Aby uzyskać więcej informacji, zobacz Używanie elementów sterujących paska narzędzi.