Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Společný ovládací prvek panelu nástrojů Windows obsahuje integrované funkce přizpůsobení, včetně dialogového okna pro přizpůsobení definované systémem, které uživateli umožňují vkládat, odstraňovat nebo měnit uspořádání tlačítek panelu nástrojů. Aplikace určuje, zda jsou funkce přizpůsobení k dispozici a řídí rozsah, v jakém může uživatel přizpůsobit panel nástrojů.
Tyto funkce přizpůsobení můžete zpřístupnit uživateli tak, že nastavíte panel nástrojů na styl CCS_ADJUSTABLE. Funkce přizpůsobení umožňují uživateli přetáhnout tlačítko na nové místo nebo odebrat tlačítko přetažením mimo panel nástrojů. Uživatel navíc může poklikáním na panel nástrojů zobrazit dialogové okno Přizpůsobit panel nástrojů , které uživateli umožňuje přidávat, odstraňovat a měnit uspořádání tlačítek panelu nástrojů. Aplikace může dialogové okno zobrazit pomocí funkce Přizpůsobit člena.
Ovládací prvek panelu nástrojů odesílá zprávy s oznámeními do nadřazeného okna v každém kroku procesu přizpůsobení. Pokud uživatel drží klávesu SHIFT dolů a začne přetahovat tlačítko, panel nástrojů automaticky zpracuje operaci přetažení. Panel nástrojů odešle TBN_QUERYDELETE zprávu s oznámením do nadřazeného okna a určí, jestli se tlačítko může odstranit. Operace přetažení skončí, pokud nadřazené okno vrátí hodnotu FALSE. V opačném případě panel nástrojů zachytí vstup myši a počká, až uživatel uvolní tlačítko myši.
Když uživatel uvolní tlačítko myši, ovládací prvek panelu nástrojů určuje umístění kurzoru myši. Pokud je kurzor mimo panel nástrojů, tlačítko se odstraní. Pokud je kurzor na jiném tlačítku panelu nástrojů, panel nástrojů odešle TBN_QUERYINSERT zprávu s oznámením do nadřazeného okna a určí, jestli se tlačítko může vložit doleva od daného tlačítka. Tlačítko se vloží, pokud nadřazené okno vrátí hodnotu TRUE; jinak to není. Panel nástrojů odešle zprávu TBN_TOOLBARCHANGE oznámení, která signaluje konec operace přetažení.
Pokud uživatel zahájí operaci přetažení bez podržení klávesy SHIFT, ovládací prvek panelu nástrojů odešle oznámení zprávu TBN_BEGINDRAG do okna vlastníka. Aplikace, která implementuje vlastní kód přetahování tlačítek, může tuto zprávu použít jako signál k zahájení operace přetažení. Panel nástrojů odešle oznámení zprávy TBN_ENDDRAG ke signalizování konce operace přetažení.
Ovládací prvek panelu nástrojů odesílá zprávy s oznámením, když uživatel přizpůsobí panel nástrojů pomocí dialogového okna Přizpůsobit panel nástrojů . Panel nástrojů odešle zprávu TBN_BEGINADJUST oznámení poté, co uživatel poklikne na panel nástrojů, ale před vytvořením dialogového okna. V dalším kroku panel nástrojů začíná odesílat řadu oznamovacích zpráv TBN_QUERYINSERT, čímž se zjistí, zda panel nástrojů umožňuje vložení tlačítek. Když nadřazené okno vrátí hodnotu TRUE, panel nástrojů přestane odesílat TBN_QUERYINSERT zprávy s oznámením. Pokud nadřazené okno nevrátí hodnotu PRAVDA pro žádné tlačítko, panel nástrojů zničí dialogové okno.
Dále ovládací prvek panelu nástrojů určuje, jestli se některá tlačítka můžou odstranit z panelu nástrojů odesláním jedné TBN_QUERYDELETE zprávy s oznámením o každém tlačítku na panelu nástrojů. Nadřazené okno vrátí hodnotu TRUE , která označuje, že tlačítko může být odstraněno; v opačném případě vrátí hodnotu FALSE. Panel nástrojů přidá do dialogového okna všechna tlačítka panelu nástrojů, ale zneaktivní ta tlačítka, která nelze odstranit.
Kdykoli ovládací prvek panelu nástrojů potřebuje získat informace o tlačítku v dialogovém okně Přizpůsobit panel nástrojů, odešle oznámení zprávu TBN_GETBUTTONINFO, která určuje index tlačítka, pro které potřebuje informace; a adresu struktury TBNOTIFY. Nadřazené okno musí vyplnit strukturu příslušnými informacemi.
Dialogové okno Přizpůsobit panel nástrojů obsahuje tlačítko Nápověda a tlačítko Obnovit. Když uživatel vybere tlačítko Nápověda, ovládací prvek panelu nástrojů odešle oznámení zprávu TBN_CUSTHELP. Nadřazené okno by mělo reagovat zobrazením informací nápovědy. Dialogové okno odešle oznámení TBN_RESET, když uživatel vybere tlačítko Obnovit. Tato zpráva signalizuje, že se panel nástrojů chystá znovu inicializovat dialogové okno.
Všechny tyto zprávy jsou WM_NOTIFY zprávy a lze je zpracovat v okně vlastníka přidáním položek mapy zpráv z následujícího formuláře do mapy zpráv okna vlastníka:
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Kód identifikátoru zprávy oznámení, například TBN_BEGINADJUST.
idControl
Identifikátor ovládacího prvku, který oznámení odesílá.
memberFxn
Členská funkce, která se volá při přijetí tohoto oznámení.
Vaše členová funkce by byla deklarována pomocí následujícího prototypu:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Pokud obslužná rutina zprávy oznámení vrátí hodnotu, měla by být umístěna do LRESULT, na který ukazuje výsledek.
U každé zprávy pNotifyStruct odkazuje na strukturu NMHDR nebo na strukturu TBNOTIFY . Tyto struktury jsou popsány níže:
Struktura NMHDR obsahuje následující členy:
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
Držadlo okna ovládacího prvku, který odesílá oznámení. Chcete-li převést tento popisovač na
CWndukazatel, použijte CWnd::FromHandle.IDFrom
Identifikátor ovládacího prvku, který oznámení odesílá.
kód
Kód oznámení. Tento člen může být hodnota specifická pro typ ovládacího prvku, například TBN_BEGINADJUST nebo TTN_NEEDTEXT, nebo může být jednou z běžných hodnot oznámení uvedených níže:
NM_CLICK Uživatel v ovládacím prvku kliknul na levé tlačítko myši.
NM_DBLCLK Uživatel dvakrát kliknul na levé tlačítko myši v ovládacím prvku.
NM_KILLFOCUS Ovládací prvek ztratil vstupní fokus.
NM_OUTOFMEMORY Ovládací prvek nemohl dokončit operaci, protože není k dispozici dostatek paměti.
NM_RCLICK Uživatel v ovládacím prvku kliknul na pravé tlačítko myši.
NM_RDBLCLK Uživatel dvakrát kliknul na pravé tlačítko myši v ovládacím prvku.
NM_RETURN Ovládací prvek má fokus vstupu a uživatel stiskl klávesu ENTER.
NM_SETFOCUS Ovládací prvek obdržel vstupní fokus.
Struktura TBNOTIFY obsahuje následující členy:
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
Informace společné pro všechny WM_NOTIFY zprávy.
iPoložka
Index tlačítka přidruženého k oznámení
tbButton
TBBUTTON struktura, která obsahuje informace o tlačítku panelu nástrojů přidružené k oznámení.
cchText
Počet znaků v textu tlačítka
lpszText
Ukazatel na text tlačítka
Oznámení, která panel nástrojů odesílá, jsou následující:
TBN_BEGINADJUST
Odesláno, když uživatel začne přizpůsobovat ovládací prvek panelu nástrojů. Ukazatel odkazuje na strukturu NMHDR , která obsahuje informace o oznámení. Obslužná rutina nemusí vracet žádnou konkrétní hodnotu.
TBN_BEGINDRAG
Odesláno, když uživatel začne přetahovat tlačítko v ovládacím prvku panelu nástrojů. Ukazatel odkazuje na strukturu TBNOTIFY . Člen iItem obsahuje index od nuly tlačítka, které je přetahováno. Obslužná rutina nemusí vracet žádnou konkrétní hodnotu.
TBN_CUSTHELP
Odesláno, když uživatel zvolí tlačítko Nápověda v dialogovém okně Přizpůsobit panel nástrojů. Žádná návratová hodnota. Ukazatel odkazuje na strukturu NMHDR , která obsahuje informace o oznamovací zprávě. Obslužná rutina nemusí vracet žádnou konkrétní hodnotu.
TBN_ENDADJUST
Odesláno, když uživatel přestane přizpůsobovat ovládací prvek panelu nástrojů. Ukazatel odkazuje na strukturu NMHDR , která obsahuje informace o oznamovací zprávě. Obslužná rutina nemusí vracet žádnou konkrétní hodnotu.
TBN_ENDDRAG
Odesláno, když uživatel přestane přetahovat tlačítko v ovládacím prvku panelu nástrojů. Ukazatel odkazuje na strukturu TBNOTIFY . Člen iItem obsahuje index od nuly tlačítka, které je přetahováno. Obslužná rutina nemusí vracet žádnou konkrétní hodnotu.
TBN_GETBUTTONINFO
Odesláno, když uživatel upravuje ovládací prvek panelu nástrojů. Panel nástrojů používá tuto zprávu oznámení k načtení informací potřebných v dialogovém okně Přizpůsobit panel nástrojů. Ukazatel odkazuje na strukturu TBNOTIFY . Člen iItem určuje index tlačítka založený na nule. Položky pszText a cchText určují adresu a délku textu aktuálního tlačítka v počtu znaků. Aplikace by měla vyplnit strukturu informacemi o tlačítku. Vrátí TRUE, pokud byly informace o tlačítku zkopírovány do struktury, nebo FALSE jinak.
TBN_QUERYDELETE
Odesláno, když uživatel upravuje panel nástrojů, aby určil, jestli může být tlačítko odstraněno z ovládacího prvku panelu nástrojů. Ukazatel odkazuje na strukturu TBNOTIFY . Člen iItem obsahuje nulový index tlačítka, který se má odstranit. Vrácením hodnoty TRUE povolíte odstranění tlačítka nebo NEPRAVDA, aby se zabránilo odstranění tlačítka.
TBN_QUERYINSERT
Odesláno, když uživatel upravuje ovládací prvek panelu nástrojů, aby určil, jestli se tlačítko může vložit doleva od daného tlačítka. Ukazatel odkazuje na strukturu TBNOTIFY . Člen iItem obsahuje index tlačítka, který začíná od nuly a má být vložen. Vrátit TRUE pro umožnění vložení tlačítka před dané tlačítko nebo FALSE pro zamezení vložení tlačítka.
TBN_RESET
Odesláno, když uživatel resetuje obsah dialogového okna Přizpůsobit panel nástrojů. Ukazatel odkazuje na strukturu NMHDR , která obsahuje informace o oznamovací zprávě. Obslužná rutina nemusí vracet žádnou konkrétní hodnotu.
TBN_TOOLBARCHANGE
Odesláno poté, co uživatel přizpůsobil ovládací prvek panelu nástrojů. Ukazatel odkazuje na strukturu NMHDR , která obsahuje informace o oznamovací zprávě. Obslužná rutina nemusí vracet žádnou konkrétní hodnotu.