Obsługa powiadomień dotyczących dostosowania
Formant wspólnych narzędzi systemu Windows ma dostosowywania wbudowanych funkcji, w tym okno dialogowe Dostosowywanie zdefiniowanych przez system, które pozwalają użytkownikowi na wstawianie, usuwanie lub zmienianie kolejności przycisków paska narzędzi.Aplikacja określa, czy funkcje dostosowywania są dostępne i określa zakres, do którego użytkownik może dostosować paska narzędzi.
Można udostępnić te funkcje dostosowywania do użytkownika przez nadanie pasku narzędzi CCS_ADJUSTABLE styl.Funkcje dostosowywania pozwalają użytkownikowi przeciągnij przycisk do nowego położenia lub usunąć przycisk, przeciągając go poza pasek narzędzi.Ponadto użytkownik może kliknąć dwukrotnie pasek narzędzi, aby wyświetlić Dostosuj pasek narzędzi okno dialogowe, które pozwala na dodawanie, usuwanie i zmienianie kolejności przycisków paska narzędzi.Aplikacja może wyświetlać okna dialogowego za pomocą Dostosuj funkcji składowej.
Formantu toolbar wysyła komunikaty powiadamiające do okna nadrzędnego na każdym etapie procesu dostosowania.Jeśli użytkownik trzyma klawisz SHIFT i rozpocznie przeciąganie przycisku, pasku narzędzi automatycznie obsługuje operacji przeciągania.Wysyła pasku narzędzi TBN_QUERYDELETE komunikat z powiadomieniem do okna nadrzędnego do określenia, czy przycisk mogą zostać usunięte.Operacja przeciągania kończy się, jeśli okno nadrzędne zwraca FALSE.W przeciwnym wypadku pasku narzędzi przechwytuje dane wejściowe z myszy i czeka na użytkownika zwolnić przycisk myszy.
Gdy użytkownik zwolni przycisk myszy, formantu toolbar określa położenie kursora myszy.Jeśli kursor znajduje się poza pasku narzędzi, przycisk jest usuwany.Jeśli kursor znajduje się na inny przycisk paska narzędzi, paska narzędzi wysyła TBN_QUERYINSERT komunikat z powiadomieniem do okna nadrzędnego do określenia, jeśli przycisk może być dodany do lewej strony danego przycisku.Przycisk jest wstawiany, jeżeli okno nadrzędne zwraca TRUE; w przeciwnym wypadku nie jest.Wysyła pasku narzędzi TBN_TOOLBARCHANGE komunikat z powiadomieniem do sygnalizowania zakończenia operacji przeciągania.
Jeśli użytkownik rozpoczyna operacji przeciągania bez przytrzymywania naciśniętego klawisza SHIFT, formantu toolbar wysyła TBN_BEGINDRAG komunikat z powiadomieniem do okna właściciela.Aplikacji, która implementuje własny kod przeciągania przycisku można użyć tej wiadomości jako sygnał do rozpoczęcia operacji przeciągania.Wysyła pasku narzędzi TBN_ENDDRAG komunikat z powiadomieniem do sygnalizowania zakończenia operacji przeciągania.
Formantu toolbar wysyła komunikaty powiadamiające, gdy użytkownik dostosowuje pasek narzędzi przy użyciu Dostosuj pasek narzędzi okno dialogowe.Wysyła pasku narzędzi TBN_BEGINADJUST komunikat z powiadomieniem po użytkownik kliknie dwukrotnie pasek narzędzi, ale przed okna dialogowego pole jest tworzony.Następnie, pasku narzędzi rozpoczyna wysyłanie serii TBN_QUERYINSERT komunikaty powiadamiające, aby ustalić, czy pasek narzędzi umożliwia przyciski do wstawienia.Kiedy okno nadrzędne zwraca TRUE, pasku narzędzi zatrzymuje wysyłanie TBN_QUERYINSERT komunikaty powiadamiające.Jeśli okno nadrzędne nie zwraca TRUE dowolnym przycisku paska narzędzi niszczy okna dialogowego.
Następnie formantu toolbar Określa, jeżeli żaden z przycisków mogą zostać usunięte z paska narzędzi, wysyłając jedną TBN_QUERYDELETE komunikat z powiadomieniem dla każdego przycisku na pasku narzędzi.Okno nadrzędne zwraca TRUE do wskazania, że przycisk mogą zostać usunięte; w przeciwnym wypadku zwraca FALSE.Pasku narzędzi dodaje wszystkie przyciski paska narzędzi do okna dialogowego, ale szarości tych, które nie mogą zostać usunięte.
W każdym przypadku, gdy formantu toolbar potrzebuje informacji o przycisku w oknie dialogowym Dostosuj pasek narzędzi, wysyła on TBN_GETBUTTONINFO komunikat z powiadomieniem, określanie indeksu przycisk, dla której konieczne jest uzyskanie informacji i adres TBNOTIFY struktury.Okno nadrzędne wypełnienie struktury z odpowiednimi informacjami.
Dostosuj pasek narzędzi okno dialogowe zawiera przycisk Pomoc oraz przycisk Reset.Po wybraniu przycisku Pomoc formantu toolbar wysyła TBN_CUSTHELP komunikat z powiadomieniem.Okno nadrzędne powinien odpowiadać przez wyświetlenie informacji pomocy.Okno dialogowe wysyła TBN_RESET komunikat z powiadomieniem, gdy użytkownik wybierze przycisk Wyzeruj.Ten komunikat sygnalizuje, że pasek narzędzi znajduje się około ponownie zainicjować okna dialogowego.
Te komunikaty są wszystkie WM_NOTIFY wiadomości i ich może odbywać się w oknie właściciela przez dodanie do okna właściciela wiadomość mapę wpisy mapy wiadomość następującą postać:
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Takie jak wiadomość powiadamiającą kod identyfikatora TBN_BEGINADJUST.idControl
Identyfikator formantu wysyła powiadomienie o.memberFxn
Element członkowski funkcja ma być wywoływana po otrzymania tego powiadomienia.
Mogłoby być zadeklarowane swojej funkcji członka o następującym prototypie:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Jeśli komunikat z powiadomieniem obsługi zwraca wartość, to należy go umieścić w LRESULT wskazywanego przez wynik.
Dla każdej wiadomości pNotifyStruct wskazuje albo NMHDR struktury lub TBNOTIFY struktury.Poniżej opisano te struktury:
NMHDR struktura 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 formantu, który wysyła powiadomienia.Aby przekonwertować ten uchwyt, aby CWnd wskaźnik wykorzystania CWnd::FromHandle.idFrom
Identyfikator formantu wysyła powiadomienie o.Kod
Kod powiadomienia.Ten element może być wartości specyficznych dla typu, takich jak TBN_BEGINADJUST lub TTN_NEEDTEXT, lub może być jedną z wartości wspólne powiadomienie wymienionych poniżej:NM_CLICK po kliknięciu lewym przyciskiem myszy wewnątrz formantu.
NM_DBLCLK użytkownika został kliknięty dwukrotnie lewym przyciskiem myszy wewnątrz formantu.
NM_KILLFOCUS formantu utracił fokus wprowadzania.
NM_OUTOFMEMORY formantu nie można ukończyć operacji, ponieważ nie ma dostępnej wystarczającej ilości pamięci.
NM_RCLICK po kliknięciu prawym przyciskiem myszy wewnątrz formantu.
NM_RDBLCLK użytkownik ma dwukrotnym kliknięciu prawym przyciskiem myszy wewnątrz formantu.
NM_RETURN formant ma fokus wprowadzania i użytkownik nacisnął klawisz ENTER.
NM_SETFOCUS formant uzyskał fokus wprowadzania.
TBNOTIFY struktura 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;
Uwagi
HDR
Informacje odnoszące się do wszystkich WM_NOTIFY wiadomości.Towaru
Indeks przycisku skojarzonego z powiadomień.tbButton
TBBUTTONStruktura, która zawiera informacje o przycisku paska narzędzi związanych z powiadomienia.cchText
Liczba znaków w tekście przycisku.lpszText
Wskaźnik tekstu przycisku.
Powiadomienia, które wysyła pasku narzędzi są następujące:
TBN_BEGINADJUST wysyłane, gdy użytkownik rozpocznie Dostosowywanie formantu toolbar.Wskaźnik wskazuje na NMHDR strukturę, która zawiera informacje dotyczące powiadomienia.Program obsługi nie trzeba zwróciło żadnej określonej wartości.
TBN_BEGINDRAG wysyłane, gdy użytkownik rozpocznie przeciąganie przycisk w formancie toolbar.Wskaźnik wskazuje na TBNOTIFY struktury.Towaru element członkowski zawiera wartość indeksu przycisk przeciągany.Program obsługi nie trzeba zwróciło żadnej określonej wartości.
TBN_CUSTHELP wysyłane, gdy użytkownik wybierze przycisk Pomoc w oknie dialogowym Dostosuj pasek narzędzi.Nie zwraca żadnej wartości.Wskaźnik wskazuje na NMHDR strukturę, która zawiera informacje o komunikat z powiadomieniem.Program obsługi nie trzeba zwróciło żadnej określonej wartości.
TBN_ENDADJUST wysyłane, gdy użytkownik przestanie Dostosowywanie formantu toolbar.Wskaźnik wskazuje na NMHDR strukturę, która zawiera informacje o komunikat z powiadomieniem.Program obsługi nie trzeba zwróciło żadnej określonej wartości.
TBN_ENDDRAG wysyłane, gdy użytkownik przestanie przeciągać przycisk w formancie toolbar.Wskaźnik wskazuje na TBNOTIFY struktury.Towaru element członkowski zawiera wartość indeksu przycisk przeciągany.Program obsługi nie trzeba zwróciło żadnej określonej wartości.
TBN_GETBUTTONINFO wysyłane, gdy użytkownik jest Dostosowywanie formantu toolbar.Pasku narzędzi używa ten komunikat z powiadomieniem do pobierania informacji wymaganych przez okno dialogowe Dostosuj pasek narzędzi.Wskaźnik wskazuje na TBNOTIFY struktury.Towaru Członkowskich określa wartość indeksu przycisku.PszText i cchText członków określić adres i długość w znakach dany tekst przycisku.Aplikacja powinna wypełnić strukturę z informacjami o przycisku.Zwraca TRUE Jeśli przycisk informacje zostały skopiowane do struktury, lub FALSE inaczej.
TBN_QUERYDELETE wysłane w czasie, gdy użytkownik jest dostosowanie paska narzędzi do określenia, czy przycisk może zostać wykreślony z formantem paska narzędzi.Wskaźnik wskazuje na TBNOTIFY struktury.Towaru element członkowski zawiera wartość indeksu przycisk, który ma zostać usunięty.Zwraca TRUE zezwalająca na przycisku, który ma zostać usunięty lub FALSE aby zapobiec usunięciu przycisku.
TBN_QUERYINSERT wysłane w czasie, gdy użytkownik jest Dostosowywanie formantu toolbar, aby ustalić, czy przycisk może być umieszczony z lewej strony danego przycisku.Wskaźnik wskazuje na TBNOTIFY struktury.Towaru element członkowski zawiera wartość indeksu przycisk ma zostać wstawiony.Zwraca TRUE zezwalająca na przycisk ma zostać wstawiony przed danym przycisk lub FALSE aby zapobiec wstawieniu przycisku.
TBN_RESET wysyłane, gdy użytkownik resetuje zawartość okna dialogowego Dostosuj pasek narzędzi.Wskaźnik wskazuje na NMHDR strukturę, która zawiera informacje o komunikat z powiadomieniem.Program obsługi nie trzeba zwróciło żadnej określonej wartości.
TBN_TOOLBARCHANGE wysyłane po użytkownik ma niestandardowy formant paska narzędzi.Wskaźnik wskazuje na NMHDR strukturę, która zawiera informacje o komunikat z powiadomieniem.Program obsługi nie trzeba zwróciło żadnej określonej wartości.