Zpracování oznámení o přizpůsobení
Ovládací prvek společných nástrojů systému Windows má integrované funkce přizpůsobení, včetně systémem definované vlastní dialogové okno, které uživateli umožní vložit, odstranit nebo změnit uspořádání tlačítek na panelu nástrojů.Aplikace určuje, zda funkce vlastního nastavení jsou k dispozici a míry, do které uživatel může přizpůsobit panel nástrojů ovládací prvky.
Můžete zpřístupnit tyto možnosti přizpůsobení pro uživatele tím, že panelu nástrojů CCS_ADJUSTABLE stylu.Funkce přizpůsobení umožňují uživateli přetáhněte tlačítko na nové místo nebo odebrat tlačítko přetáhněte mimo panel nástrojů.Kromě toho uživatel poklepáním na panelu nástrojů Přizpůsobit panel nástrojů dialogové okno, které umožňuje uživateli přidat, odstranit a změnit uspořádání tlačítek na panelu nástrojů.Aplikace můžete pomocí zobrazení dialogového okna vlastní členské funkce.
Ovládací panel nástrojů odesílá oznamovací zprávy nadřazené okno na každém kroku v procesu úprav.Pokud uživatel drží klávesu SHIFT, zahájí přetahování tlačítka panelu nástrojů automaticky zpracovává operace přetažení.Odešle na panelu nástrojů TBN_QUERYDELETE oznámení na nadřazené okno Chcete-li zjistit, zda lze na tlačítko Odstranit.Operace přetažení konce nadřazené okno vrátí FALSE.Panel nástrojů jinak zachytí myš vstup a čeká na uživatele, uvolněte tlačítko myši.
Když uživatel uvolní tlačítko myši, panelu nástrojů ovládací prvek určuje umístění ukazatele myši.Pokud je kurzor mimo panel nástrojů, tlačítka se zrušuje.Pokud je kurzor na jiné tlačítko na panelu nástrojů, panelu nástrojů odešle TBN_QUERYINSERT oznámení na nadřazené okno k určení, pokud lze vložit tlačítko vlevo od dané tlačítko.Vložení tlačítka vrátí nadřazené okno TRUE; jinak není.Odešle na panelu nástrojů TBN_TOOLBARCHANGE oznámení na signál na konci operace přetažení.
Pokud uživatel začíná operace přetažení bez stisknuté klávesy SHIFT, odešle ovládací panel nástrojů TBN_BEGINDRAG oznámení do okna vlastníka.Aplikaci, která implementuje vlastní kód přetažením tlačítka můžete použít tuto zprávu jako signál k zahájení operace přetažení.Odešle na panelu nástrojů TBN_ENDDRAG oznámení na signál na konci operace přetažení.
Uživatel upravuje pomocí panelu nástrojů ovládací prvek panelu nástrojů odešle zprávy s oznámením Přizpůsobit panel nástrojů dialogové okno.Odešle na panelu nástrojů TBN_BEGINADJUST oznámení po poklepání panel nástrojů, ale před dialogové okno pole vytvořil.Dále panel začíná odesílání sérii TBN_QUERYINSERT oznamovací zprávy k určení, zda umožňuje panel nástrojů tlačítka, která má být vložena.Pokud nadřazené okno vrátí TRUE, panelu nástrojů ukončí odesílání TBN_QUERYINSERT zprávy s oznámením.Pokud nadřazené okno nevrátí TRUE pro každé tlačítko panelu nástrojů ničí dialogové okno.
Dále nástrojů ovládací prvek určuje, pokud mohou být odstraněny všechny tlačítka z panelu nástrojů zasláním jednoho TBN_QUERYDELETE oznámení každého tlačítka na panelu nástrojů.Vrací nadřazené okno TRUE označíte, že tlačítka mohou být odstraněny; v opačném případě se vrátí FALSE.Panel nástrojů všechna tlačítka panelu nástrojů přidá do dialogového okna, ale šedě, které nelze odstranit.
Vždy, když ovládací prvek panelu nástrojů je informace o tlačítku v dialogovém okně Přizpůsobit panel nástrojů, pošle TBN_GETBUTTONINFO oznámení, určení indexu tlačítko, pro které potřebné informace a adresy TBNOTIFY struktury.Nadřazené okno musí vyplnit strukturu s příslušnými informacemi.
Přizpůsobit panel nástrojů dialogové okno obsahuje tlačítko Nápověda a tlačítko Reset.Když uživatel vybere tlačítko Nápověda, odešle ovládací panel nástrojů TBN_CUSTHELP oznámení.Zobrazí informace nápovědy by měly odpovídat nadřazené okno.Dialogové okno odešle TBN_RESET oznámení po klepnutí na tlačítko Obnovit.Tato zpráva signalizuje, že panel nástrojů se chystá znovu inicializovat dialogové okno.
Tyto zprávy jsou všechny WM_NOTIFY zpráv a jejich lze zpracovat v nadřazené okno přidáním nadřazené okno zprávy mapy mapu zpráv položky v následujícím formátu:
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Oznamovací zprávy identifikační kód jako TBN_BEGINADJUST.idControl
Identifikátor ovládacího prvku odesílání oznámení.memberFxn
Členská funkce, která má být volána po obdržení tohoto oznámení.
Členské funkce by deklarována s následující prototyp:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Pokud obslužné rutiny oznámení vrací hodnotu, je měli umístit do LRESULT odkazuje výsledek.
Pro každou zprávu pNotifyStruct buď odkazuje NMHDR strukturu nebo TBNOTIFY struktury.Tyto struktury jsou uvedeny níže:
NMHDR struktura 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
Popisovač okna ovládacího prvku, který odesílá oznámení.Chcete-li převést tento popisovač CWnd ukazatel, použití CWnd::FromHandle.idFrom
Identifikátor ovládacího prvku odesílání oznámení.kód
Kód upozornění.Tento člen může být hodnota specifické pro typ ovládacího prvku, jako například TBN_BEGINADJUST nebo TTN_NEEDTEXT, nebo to může být společné oznámení hodnot uvedených níže:NM_CLICK uživatel klepnul levým tlačítkem myši v ovládacím prvku.
NM_DBLCLK uživatel má poklepali na levé tlačítko myši v ovládacím prvku.
NM_KILLFOCUS ztratil ovládací prvek fokus vstupu.
NM_OUTOFMEMORY ovládacího prvku nelze operaci dokončit, protože není k dispozici dostatek paměti.
NM_RCLICK uživatel klepne pravým tlačítkem myši v ovládacím prvku.
NM_RDBLCLK uživatel má poklepali na pravé tlačítko myši v ovládacím prvku.
NM_RETURN ovládací prvek vstupní fokus a uživatel stisknul klávesu ENTER.
NM_SETFOCUS obdržela ovládací prvek fokus vstupu.
TBNOTIFY struktura 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;
Poznámky
HDR
Informace společné všem WM_NOTIFY zprávy.Položky
Index tlačítka související s oznámením.tbButton
TBBUTTONStruktura, která obsahuje informace o tlačítku panelu nástrojů související s oznámením.cchText
Počet znaků v textu tlačítka.lpszText
Ukazatel myši na tlačítko text.
Oznámení, která odešle na panelu nástrojů jsou následující:
TBN_BEGINADJUST odeslána, když uživatel začne vlastní nastavení panelu nástrojů ovládací prvek.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vracet jakékoli konkrétní hodnotu.
TBN_BEGINDRAG odeslána, když uživatel zahájí přetahování tlačítka v ovládacím panelu nástrojů.Ukazatel odkazuje TBNOTIFY struktury.Položky člen obsahuje z nuly vycházející index tlačítka přetažen.Obslužná rutina nemusí vracet jakékoli konkrétní hodnotu.
TBN_CUSTHELP odeslána, když uživatel klepne na tlačítko Nápověda v dialogovém okně Přizpůsobit panel nástrojů.Žádné návratové hodnoty.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vracet jakékoli konkrétní hodnotu.
TBN_ENDADJUST odeslána, když uživatel zastaví přizpůsobení panelu nástrojů ovládací prvek.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vracet jakékoli konkrétní hodnotu.
TBN_ENDDRAG odeslány, jakmile uživatel přestane přetahovat tlačítka v ovládacím panelu nástrojů.Ukazatel odkazuje TBNOTIFY struktury.Položky člen obsahuje z nuly vycházející index tlačítka přetažen.Obslužná rutina nemusí vracet jakékoli konkrétní hodnotu.
TBN_GETBUTTONINFO odeslána, když uživatel je vlastní ovládací prvek na panelu nástrojů.Panel nástrojů používá k načtení informací vyžadovaných v dialogovém okně Přizpůsobit panel nástrojů tohoto oznámení.Ukazatel odkazuje TBNOTIFY struktury.Položky určuje člen z nuly vycházející index tlačítka.PszText a cchText členy zadat adresu a délku znaků textu aktuálního tlačítka.Aplikace by měla vyplnit strukturu s informacemi o tlačítku.Návrat TRUE je-li tlačítko informace zkopírovány do struktury nebo FALSE jinak.
TBN_QUERYDELETE odeslána, když uživatel je přizpůsobení panelu nástrojů k určení, zda mohou být odstraněny tlačítko z panelu nástrojů ovládací prvek.Ukazatel odkazuje TBNOTIFY struktury.Položky člen obsahuje z nuly vycházející index na tlačítko Odstranit.Návrat TRUE Chcete-li povolit tlačítko Odstranit nebo FALSE Chcete-li zabránit odstranění tlačítka.
TBN_QUERYINSERT odeslána, když uživatel je vlastní ovládací prvek panelu nástrojů k určení, zda lze vložit tlačítko vlevo od dané tlačítko.Ukazatel odkazuje TBNOTIFY struktury.Položky člen obsahuje z nuly vycházející index tlačítko Vložit.Návrat TRUE Chcete-li povolit tlačítko Vložit před dané tlačítko nebo FALSE zabránit vkládaný tlačítka.
TBN_RESET odeslána, když uživatel obnoví obsah v dialogovém okně Přizpůsobit panel nástrojů.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vracet jakékoli konkrétní hodnotu.
TBN_TOOLBARCHANGE odeslané po uživatel upravil nastavení ovládacího panelu nástrojů.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vracet jakékoli konkrétní hodnotu.
Viz také
Referenční dokumentace
Používání atributu CToolBarCtrl