Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Typowa kontrolka paska narzędzi systemu Windows ma wbudowane funkcje dostosowywania, w tym okno dialogowe dostosowywania zdefiniowane przez system, które umożliwia użytkownikowi wstawianie, usuwanie lub zmienianie układu przycisków paska narzędzi. Aplikacja określa, czy funkcje dostosowywania są dostępne i kontroluje zakres, w jakim użytkownik może dostosować pasek narzędzi.
Te funkcje dostosowywania można udostępnić użytkownikowi, nadając paskowi narzędzi styl CCS_ADJUSTABLE. 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. Aplikacja może wyświetlić okno dialogowe, używając funkcji członkowskiej Dostosuj.
Kontrolka paska narzędzi wysyła komunikaty powiadomień do okna nadrzędnego w każdym kroku procesu dostosowywania. Jeśli użytkownik trzyma SHIFT w dół i zaczyna przeciągać przycisk, pasek narzędzi automatycznie obsługuje operację przeciągania. Pasek narzędzi wysyła komunikat powiadomienia TBN_QUERYDELETE do okna nadrzędnego, aby określić, czy przycisk może zostać usunięty. Operacja przeciągania kończy się, jeśli okno nadrzędne zwraca FALSE. W przeciwnym razie pasek narzędzi przechwytuje dane wejściowe myszy i czeka, aż użytkownik zwolni przycisk myszy.
Gdy użytkownik zwolni przycisk myszy, kontrolka paska narzędzi określa lokalizację kursora myszy. Jeśli kursor znajduje się poza paskiem narzędzi, przycisk zostanie usunięty. Jeśli kursor znajduje się na innym przycisku paska narzędzi, pasek narzędzi wysyła komunikat powiadomienia TBN_QUERYINSERT do okna nadrzędnego, aby określić, czy przycisk może zostać wstawiony po lewej stronie danego przycisku. Przycisk jest wstawiany, jeśli okno nadrzędne zwraca TRUE; w przeciwnym razie nie jest. Pasek narzędzi wysyła komunikat powiadomienia TBN_TOOLBARCHANGE , aby zasygnalizować koniec operacji przeciągania.
Jeśli użytkownik rozpocznie operację przeciągania bez przytrzymywania SHIFT, kontrolka paska narzędzi wysyła komunikat powiadomienia TBN_BEGINDRAG do okna właściciela. Aplikacja, która implementuje własny kod przeciągania przycisku, może użyć tego komunikatu jako sygnału, aby rozpocząć operację przeciągania. Pasek narzędzi wysyła komunikat powiadomienia TBN_ENDDRAG , aby zasygnalizować koniec operacji przeciągania.
Kontrolka paska narzędzi wysyła komunikaty powiadomień, gdy użytkownik dostosowuje pasek narzędzi przy użyciu okna dialogowego Dostosowywanie paska narzędzi . Pasek narzędzi wysyła komunikat powiadomienia TBN_BEGINADJUST po dwukrotnym kliknięciu paska narzędzi przez użytkownika, ale przed utworzeniem okna dialogowego. Następnie pasek narzędzi rozpoczyna wysyłanie serii komunikatów powiadomień TBN_QUERYINSERT w celu określenia, czy pasek narzędzi zezwala na wstawianie przycisków. Gdy okno nadrzędne zwróci wartość TRUE, pasek narzędzi przestanie wysyłać TBN_QUERYINSERT wiadomości powiadomień. Jeśli okno nadrzędne nie zwraca wartości TRUE dla żadnego przycisku, pasek narzędzi niszczy okno dialogowe.
Następnie kontrolka paska narzędzi określa, czy wszystkie przyciski mogą zostać usunięte z paska narzędzi, wysyłając jeden TBN_QUERYDELETE komunikat powiadomienia dla każdego przycisku na pasku narzędzi. Okno nadrzędne zwraca wartość TRUE , aby wskazać, że przycisk może zostać usunięty; w przeciwnym razie zwraca wartość FALSE. Pasek narzędzi dodaje wszystkie przyciski do okna dialogowego, ale te, które nie mogą zostać usunięte, są wyszarzane.
Za każdym razem, gdy kontrolka paska narzędzi potrzebuje informacji o przycisku w oknie dialogowym Dostosowywanie paska narzędzi, wysyła TBN_GETBUTTONINFO komunikat powiadomienia, określając indeks przycisku, dla którego potrzebuje informacji i adresu struktury TBNOTIFY . Okno nadrzędne musi wypełnić strukturę odpowiednimi informacjami.
Okno dialogowe Dostosowywanie paska narzędzi zawiera przycisk Pomoc i przycisk Resetuj. Gdy użytkownik wybierze przycisk Pomoc, kontrolka paska narzędzi wysyła komunikat powiadomienia TBN_CUSTHELP . Okno nadrzędne powinno odpowiedzieć, wyświetlając informacje pomocy. Okno dialogowe wysyła komunikat powiadomienia TBN_RESET , gdy użytkownik wybierze przycisk Resetuj. Ten komunikat sygnalizuje, że pasek narzędzi ma na celu ponowne inicjowanie okna dialogowego.
Te komunikaty to WM_NOTIFY i mogą być obsługiwane w oknie właściciela, poprzez dodanie wpisów do mapy komunikatów w następującej formie:
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Kod identyfikatora komunikatu powiadomienia, taki jak TBN_BEGINADJUST.
idControl
Identyfikator kontrolki wysyłającej powiadomienie.
memberFxn
Funkcja składowa, która ma być wywoływana w momencie odbioru tego powiadomienia.
Twoja funkcja członkowska musi zostać zadeklarowana przy użyciu następującego prototypu:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Jeśli procedura obsługi komunikatów powiadomień zwraca wartość, powinna umieścić ją w elemecie LRESULT wskazywanym przez wynik.
Dla każdego komunikatu pNotifyStruct wskazuje strukturę NMHDR lub strukturę TBNOTIFY . Te struktury zostały opisane poniżej:
Struktura NMHDR zawiera następujące elementy:
typedef struct tagNMHDR {
HWND hwndFrom; // handle of control sending message
UINT idFrom;// identifier of control sending message
UINT code; // notification code; see below
} NMHDR;
hwndFrom
Uchwyt okna kontrolki, która wysyła powiadomienie. Aby przekonwertować ten uchwyt na
CWndwskaźnik, użyj CWnd::FromHandle.idFrom
Identyfikator kontrolki wysyłającej powiadomienie.
kod
Kod powiadomienia. Ten element członkowski może być wartością specyficzną dla typu kontrolki, takiego jak TBN_BEGINADJUST lub TTN_NEEDTEXT, lub może być jedną z typowych wartości powiadomień wymienionych poniżej:
NM_CLICK Użytkownik kliknął lewy przycisk myszy w kontrolce.
NM_DBLCLK Użytkownik dwukrotnie kliknął lewy przycisk myszy w kontrolce.
NM_KILLFOCUS Kontrolka straciła fokus wejściowy.
NM_OUTOFMEMORY Kontrolka nie mogła ukończyć operacji, ponieważ nie ma wystarczającej ilości dostępnej pamięci.
NM_RCLICK Użytkownik kliknął prawy przycisk myszy w kontrolce.
NM_RDBLCLK Użytkownik dwukrotnie kliknął prawym przyciskiem myszy w kontrolce.
NM_RETURN Kontrolka ma fokus wejściowy, a użytkownik nacisnął ENTER.
NM_SETFOCUS Kontrolka otrzymała fokus wejściowy.
Struktura TBNOTIFY zawiera następujące elementy:
typedef struct {
NMHDR hdr; // information common to all WM_NOTIFY messages
int iItem; // index of button associated with notification
TBBUTTON tbButton; // info about button associated withnotification
int cchText; // count of characters in button text
LPSTR lpszText;// address of button text
} TBNOTIFY, FAR* LPTBNOTIFY;
Hdr
Informacje wspólne dla wszystkich komunikatów WM_NOTIFY .
iItem
Indeks przycisku skojarzonego z powiadomieniem.
tbButton
STRUKTURA TBBUTTON zawierająca informacje o przycisku paska narzędzi skojarzonego z powiadomieniem.
cchText
Liczba znaków w tekście przycisku.
lpszText
Wskaźnik do tekstu przycisku.
Powiadomienia wysyłane przez pasek narzędzi są następujące:
TBN_BEGINADJUST
Wysłane po rozpoczęciu dostosowywania kontrolki paska narzędzi przez użytkownika. Wskaźnik wskazuje strukturę NMHDR zawierającą informacje o powiadomieniu. Program obsługi nie musi zwracać żadnej określonej wartości.
TBN_BEGINDRAG
Wysłane, gdy użytkownik zacznie przeciągać przycisk w kontrolce paska narzędzi. Wskaźnik wskazuje strukturę TBNOTIFY . Element członkowski iItem zawiera indeks zerowy przeciąganego przycisku. Program obsługi nie musi zwracać żadnej określonej wartości.
TBN_CUSTHELP
Wysłane, gdy użytkownik wybierze przycisk Pomoc w oknie dialogowym Dostosowywanie paska narzędzi. Brak wartości zwracanej. Wskaźnik wskazuje strukturę NMHDR zawierającą informacje o komunikacie powiadomienia. Program obsługi nie musi zwracać żadnej określonej wartości.
TBN_ENDADJUST
Wysłane, gdy użytkownik przestanie dostosowywać kontrolkę paska narzędzi. Wskaźnik wskazuje strukturę NMHDR zawierającą informacje o komunikacie powiadomienia. Program obsługi nie musi zwracać żadnej określonej wartości.
TBN_ENDDRAG
Wysłane, gdy użytkownik przestanie przeciągać przycisk w kontrolce paska narzędzi. Wskaźnik wskazuje strukturę TBNOTIFY . Element członkowski iItem zawiera indeks zerowy przeciąganego przycisku. Program obsługi nie musi zwracać żadnej określonej wartości.
TBN_GETBUTTONINFO
Wysyłane, gdy użytkownik dostosowuje kontrolkę paska narzędzi. Pasek narzędzi używa tego komunikatu powiadomienia do pobierania informacji wymaganych przez okno dialogowe Dostosowywanie paska narzędzi. Wskaźnik wskazuje strukturę TBNOTIFY . Element iItem określa indeks oparty na zerze przycisku. Elementy pszText i cchText określają adres oraz długość, wyrażoną w znakach, bieżącego tekstu przycisku. Aplikacja powinna wypełnić strukturę informacjami o przycisku. Zwróć TRUE, jeśli informacje o przycisku zostały skopiowane do struktury, w przeciwnym razie FALSE.
TBN_QUERYDELETE
Wysłane podczas dostosowywania paska narzędzi przez użytkownika w celu określenia, czy przycisk może zostać usunięty z kontrolki paska narzędzi. Wskaźnik wskazuje strukturę TBNOTIFY . Członek iItem zawiera indeks zerowy przycisku, który ma zostać usunięty. Zwróć TRUE, aby zezwolić na usunięcie przycisku lub FALSE, aby zapobiec jego usunięciu.
TBN_QUERYINSERT
Wysłane, gdy użytkownik dostosowuje kontrolkę paska narzędzi, aby określić, czy przycisk może zostać wstawiony z lewej strony danego przycisku. Wskaźnik wskazuje strukturę TBNOTIFY . Element iItem zawiera indeks zaczynający się od zera dla przycisku, który ma zostać wstawiony. Zwróć TRUE, aby umożliwić wstawienie przycisku przed danym przyciskiem lub FALSE, aby zapobiec wstawieniu przycisku.
TBN_RESET
Wysłane, gdy użytkownik resetuje zawartość okna dialogowego Dostosowywanie paska narzędzi. Wskaźnik wskazuje strukturę NMHDR zawierającą informacje o komunikacie powiadomienia. Program obsługi nie musi zwracać żadnej określonej wartości.
TBN_TOOLBARCHANGE
Wysłane po dostosowaniu kontrolki paska narzędzi przez użytkownika. Wskaźnik wskazuje strukturę NMHDR zawierającą informacje o komunikacie powiadomienia. Program obsługi nie musi zwracać żadnej określonej wartości.