Zpracování vlastního nastavení oznámení
Windows běžné ovládací panel nástrojů obsahuje předdefinované vlastní funkcí včetně systémem definované vlastní dialogové okno, které uživateli umožní vložit, odstranit nebo změnit uspořádání tlačítek panelu nástrojů.Aplikace určuje, zda jsou k dispozici funkce úprav 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 na panelu nástrojů CCS_ADJUSTABLE styl.Přizpůsobení funkce umožňují uživateli, přetáhněte tlačítko na nové místo nebo přetažením mimo panel nástrojů tlačítko Odebrat.Kromě toho lze uživatele poklepejte 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 panelu nástrojů.Aplikace mohou pomocí zobrazení dialogového okna vlastní členské funkce.
Ovládací panel nástrojů odešle oznámení nadřazené okno v každém kroku procesu úprav.Pokud uživatel drží klávesu SHIFT, začíná přetáhnete tlačítko panelu nástrojů automaticky zpracovává operace přetažení.Odešle na panelu nástrojů TBN_QUERYDELETE oznámení k nadřazené okno určit, zda mohou být odstraněny na tlačítko.Operace přetažení končí vrátí nadřazené okno FALSE.Jinak panelu nástrojů zachycuje myši a čeká na uživateli, uvolněte tlačítko myši.
Když uživatel uvolní tlačítko myši, ovládací panel nástrojů Určuje umístění kurzoru myši.Pokud je kurzor mimo panel nástrojů, na tlačítko se zrušuje.Pokud je kurzor na jiné tlačítko panelu nástrojů, panelu nástrojů odešle TBN_QUERYINSERT oznámení k nadřazené okno k určení, pokud lze vložit tlačítko vlevo na dané tlačítko.Vkládá se tlačítka vrátí nadřazené okno TRUE; jinak není.Odešle na panelu nástrojů TBN_TOOLBARCHANGE oznámení signál na konci operace přetažení.
Pokud uživatel začne operace přetažení bez držení klávesy SHIFT, odešle ovládacího panelu nástrojů TBN_BEGINDRAG oznámení na okno.Aplikaci, která implementuje vlastní kód přetažením tlačítka lze tuto zprávu jako signál zahájit operaci přetažení.Odešle na panelu nástrojů TBN_ENDDRAG oznámení signál na konci operace přetažení.
Ovládací panel nástrojů odešle oznámení uživatel upravuje pomocí panelu nástrojů Přizpůsobit panel nástrojů dialogové okno.Odešle na panelu nástrojů TBN_BEGINADJUST oznámení po poklepání na panel nástrojů, ale před dialogového okna je vytvořena pole.V dalším panelu nástrojů začíná odesílání řadu TBN_QUERYINSERT oznamovací zprávy k určení, zda panel nástrojů umožňuje vložení tlačítek.Když se vrátí nadřazené okno TRUE, panelu nástrojů ukončí odesílání TBN_QUERYINSERT oznamovací zprávy.Pokud nadřazené okno nevrátí TRUE pro každé tlačítko panelu nástrojů ničí dialogové okno.
Pokud tlačítka mohou být odstraněny z panelu nástrojů odesláním jeden dále určuje ovládací panel nástrojů TBN_QUERYDELETE oznámení pro jednotlivá tlačítka panelu nástrojů.Nadřazené okno vrátí TRUE označuje, že tlačítko odstraněny; v ostatních případech vrátí hodnotu FALSE.Panelu nástrojů všechna tlačítka panelu nástrojů přidá do dialogového okna, ale grays, které nelze odstranit.
Vždy, když je ovládací panel nástrojů informace o tlačítku v dialogovém okně Přizpůsobit panel nástrojů, odešle TBN_GETBUTTONINFO oznámení, určení indexu tlačítko, které potřebuje informace a adresu TBNOTIFY struktury.Nadřazené okno musí vyplnit struktury příslušné informace.
Přizpůsobit panel nástrojů dialogové okno obsahuje tlačítko Nápověda a tlačítko Reset.Když uživatel klepne na tlačítko Nápověda, odešle ovládacího panelu nástrojů TBN_CUSTHELP oznámení.Nadřazené okno by měly odpovídat zobrazením informací nápovědy.Dialogové okno odešle TBN_RESET oznámení po klepnutí na tlačítko Obnovit.Tato zpráva signály, že panel nástrojů bude znovu inicializovat dialogové okno.
Tyto zprávy jsou všechny WM_NOTIFY zprávy a mohou být zpracovány v okně Vlastník přidáním položky mapy zprávy následující formuláře zprávy mapy okna vlastníka:
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Oznamovací zprávy kód identifikátoru jako TBN_BEGINADJUST.idControl
Identifikátor ovládacího prvku odesílání oznámení.memberFxn
Členské funkce volané při doručení tohoto oznámení.
Členské funkce by deklarována s následující prototypu:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Pokud popisovač oznámení vrátí hodnotu, je by jej vložíte LRESULT odkazuje výsledek.
Pro každou zprávu pNotifyStruct body buď NMHDR struktury nebo TBNOTIFY struktury.Tyto struktury jsou popsány 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í.Tento popisovač převést 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 určitého typu ovládacího prvku, například TBN_BEGINADJUST nebo TTN_NEEDTEXT, nebo může být jedna z hodnot společné oznámení uvedených níže:NM_CLICK uživatel klepne levé tlačítko 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í prvek nelze dokončit operaci, 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 pravým tlačítkem myši v ovládacím prvku.
NM_RETURN ovládací prvek má fokus vstupu 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, které jsou společné pro všechny WM_NOTIFY zprávy.Položky
Index tlačítka přidruženého k oznámení.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:
TBN_BEGINADJUST odeslána, když uživatel začne vlastní nastavení ovládacího panelu nástrojů.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vrátit libovolnou konkrétní hodnotu.
TBN_BEGINDRAG odeslána, když uživatel začne přetáhnete tlačítko v ovládacím panelu nástrojů.Ukazatel odkazuje TBNOTIFY struktury.Položky z nuly vycházející index tlačítko taženého obsahuje člena.Obslužná rutina nemusí vrátit libovolnou 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ů.Vrácená hodnota.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vrátit libovolnou konkrétní hodnotu.
TBN_ENDADJUST odeslána, když uživatel přestane vlastní nastavení ovládacího panelu nástrojů.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vrátit libovolnou konkrétní hodnotu.
TBN_ENDDRAG odeslána, když uživatel přestane přetahovat tlačítka v ovládacím panelu nástrojů.Ukazatel odkazuje TBNOTIFY struktury.Položky z nuly vycházející index tlačítko taženého obsahuje člena.Obslužná rutina nemusí vrátit libovolnou konkrétní hodnotu.
TBN_GETBUTTONINFO odeslána, když uživatel je vlastní nastavení ovládacího panelu nástrojů.Panel nástrojů používá toto oznámení získat informace potřebné v dialogovém okně Přizpůsobit panel nástrojů.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ů aktuální text tlačítka.Aplikace by vyplnit strukturu s informace o tlačítku.Vrátit TRUE Pokud byl zkopírován tlačítko informace o struktuře, nebo FALSE jinak.
TBN_QUERYDELETE odeslána, zatímco uživatel je přizpůsobení panelu nástrojů k určení, zda tlačítka mohou být odstraněny z ovládacího panelu nástrojů.Ukazatel odkazuje TBNOTIFY struktury.Položky člen obsahuje z nuly vycházející index na tlačítko Odstranit.Vrátit TRUE povolit tlačítko Odstranit nebo FALSE na tlačítko zabránit odstranění.
TBN_QUERYINSERT odeslány, zatímco uživatel je vlastní nastavení ovládacího panelu nástrojů k určení, zda lze vložit tlačítko vlevo na dané tlačítko.Ukazatel odkazuje TBNOTIFY struktury.Položky člen obsahuje z nuly vycházející index tlačítko Vložit.Vrátit TRUE tlačítko Vložit z dané tlačítko Povolit nebo FALSE tlačítko zabránit vložen.
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í vrátit libovolnou konkrétní hodnotu.
TBN_TOOLBARCHANGE po uživatel upravil ovládací panel nástrojů.Ukazatel odkazuje NMHDR strukturu, která obsahuje informace o oznámení.Obslužná rutina nemusí vrátit libovolnou konkrétní hodnotu.