Condividi tramite


Notifiche di personalizzazione di gestione

Un controllo comune della barra degli strumenti finestre ha funzionalità di personalizzazione incorporate, inclusa una finestra di dialogo definita dal sistema di personalizzazione, che consentono all'utente da inserire, eliminare, o riordinano i pulsanti della barra degli strumenti.L'applicazione determina se le funzionalità di personalizzazione disponibili e controllare l'ambito a cui l'utente può personalizzare la barra degli strumenti.

È possibile rendere disponibili le funzionalità di personalizzazione utente fornendo la barra degli strumenti che CCS_ADJUSTABLE traccia.Le funzionalità di personalizzazione consentono all'utente creare un pulsante in una nuova posizione o rimuovere un pulsante trascinandolo dalla barra degli strumenti.Inoltre, l'utente può fare doppio clic sulla barra degli strumenti per visualizzare la finestra di dialogo di Customize Toolbar , che consente all'utente di aggiungere, rimuovere e ridisponga i pulsanti della barra degli strumenti.L'applicazione può visualizzare la finestra di dialogo mediante la funzione membro di personalizzare .

Il controllo toolbar invia i messaggi di notifica alla finestra padre a ogni passaggio nel processo di personalizzazione.Se l'utente tiene premuto MAIUSC e avvia trascinando un pulsante, la barra degli strumenti effettua automaticamente l'operazione di trascinamento.La barra degli strumenti invia il messaggio di notifica di TBN_QUERYDELETE alla finestra padre per determinare se il pulsante può essere eliminato.l'operazione di trascinamento termina se la finestra padre restituisce FALSE.In caso contrario, la barra degli strumenti deve acquisire l'input del mouse e attende che l'utente per rilasciare il pulsante del mouse.

Quando l'utente rilascia il pulsante del mouse, il controllo toolbar determina la posizione del cursore del mouse.Se il cursore si trova al di fuori della barra degli strumenti, il pulsante viene eliminato.Se il cursore si trova in un altro pulsante della barra degli strumenti, la barra degli strumenti invia il messaggio di notifica di TBN_QUERYINSERT alla finestra padre per determinare se un pulsante può essere inserito a sinistra del pulsante specificato.Il pulsante viene inserito se la finestra padre restituisce TRUE; in caso contrario, non è.La barra degli strumenti invia il messaggio di notifica di TBN_TOOLBARCHANGE per segnalare la fine dell'operazione di trascinamento.

Se l'utente inizia un'operazione di trascinamento senza tenere premuto il tasto MAIUSC, il controllo toolbar invia il messaggio di notifica di TBN_BEGINDRAG alla finestra proprietaria.Un'applicazione che implementa il proprio codice pulsante-trascinante possibile utilizzare questo messaggio come segnale iniziare un'operazione di trascinamento.La barra degli strumenti invia il messaggio di notifica di TBN_ENDDRAG per segnalare la fine dell'operazione di trascinamento.

Un controllo toolbar invia i messaggi di notifica quando l'utente personalizza la barra degli strumenti mediante la finestra di dialogo Customize Toolbar .La barra degli strumenti invia il messaggio di notifica di TBN_BEGINADJUST dopo che l'utente fa doppio clic sulla barra degli strumenti, ma prima della finestra di dialogo venga creata.Dopo, inizia la barra degli strumenti che inviano una serie di messaggi di notifica di TBN_QUERYINSERT per determinare se la barra degli strumenti consente i pulsanti da inserire.Quando la finestra padre restituisce TRUE, la barra degli strumenti smette di inviare messaggi di notifica di TBN_QUERYINSERT .Se la finestra padre non restituisce TRUE per un pulsante, la barra degli strumenti elimina la finestra di dialogo.

Successivamente, il controllo toolbar determina se i pulsanti possono essere eliminati dalla barra degli strumenti inviando un messaggio di notifica di TBN_QUERYDELETE per ciascun pulsante nella barra degli strumenti.La finestra padre restituisce TRUE per indicare che un pulsante può essere eliminato; in caso contrario, restituisce FALSE.La barra degli strumenti aggiunge tutti i pulsanti della barra degli strumenti alla finestra di dialogo, ma ingrigisce quelle che non possono essere eliminati.

Ogni volta che il controllo toolbar disponga delle informazioni su un pulsante nella finestra di dialogo della barra degli strumenti di personalizzare, invia il messaggio di notifica di TBN_GETBUTTONINFO , specificando l'indice del pulsante per il quale si disponga delle informazioni e l'indirizzo di una struttura di TBNOTIFY .La finestra padre deve riempire la struttura di informazioni rilevanti.

La finestra di dialogo di Customize Toolbar include un pulsante? e un pulsante reimposta.Quando l'utente sceglie il pulsante?, il controllo toolbar invia il messaggio di notifica di TBN_CUSTHELP .La finestra padre deve rispondere visualizzare le informazioni della guida.La finestra di dialogo invia il messaggio di notifica di TBN_RESET quando l'utente seleziona il pulsante reimposta.Questo messaggio segnala che la barra degli strumenti sta per reinitialize la finestra di dialogo.

Questi messaggi sono tutti i messaggi di WM_NOTIFY e possono essere gestiti nella finestra proprietaria aggiungendo voci della mappa messaggi nel formato seguente alla mappa messaggi della finestra proprietaria:

ON_NOTIFY( wNotifyCode, idControl, memberFxn )

  • wNotifyCode
    Codice d'identificazione del messaggio di notifica, come TBN_BEGINADJUST.

  • idControl
    L'identificatore del controllo che invia una notifica.

  • memberFxn
    La funzione membro da chiamare quando questa notifica viene ricevuta.

La funzione membro è dichiarata con il prototipo indicato di seguito:

afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );

Se il gestore di messaggio di notifica restituisce un valore, è necessario inserirlo in LRESULT puntato in base al risultato.

Per ogni messaggio, i punti di pNotifyStruct a una struttura di NMHDR o a una struttura di TBNOTIFY .Queste strutture sono descritte di seguito:

la struttura di NMHDR contiene i seguenti membri:

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
    Handle della finestra del controllo che si sta inviando notifiche.Per convertire questi handle a un puntatore di CWnd , utilizzare CWnd::FromHandle.

  • idFrom
    Identificatore del controllo che invia una notifica.

  • code
    Codice della notifica.Questo membro può essere un valore specifico di un tipo di controllo, come TBN_BEGINADJUST o TTN_NEEDTEXT, oppure può essere uno dei valori comuni di notifica elencati di seguito:

    • NM_CLICK l'utente ha fatto clic sul pulsante sinistro del mouse all'interno del controllo.

    • NM_DBLCLK l'utente ha fatto doppio clic sul pulsante sinistro del mouse all'interno del controllo.

    • NM_KILLFOCUS il controllo non è più lo stato attivo per l'input.

    • NM_OUTOFMEMORY il controllo non può completare un'operazione perché non c " è sufficiente memoria disponibile.

    • NM_RCLICK l'utente ha fatto clic con il pulsante destro del mouse all'interno del controllo.

    • NM_RDBLCLK l'utente ha fatto doppio clic sul pulsante destro del mouse all'interno del controllo.

    • NM_RETURN il controllo con lo stato attivo per l'input e aver premuto INVIO.

    • NM_SETFOCUS il controllo ha ricevuto lo stato attivo per l'input.

la struttura di TBNOTIFY contiene i seguenti membri:

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;

Note

  • hdr
    Comune a informazioni su tutti i messaggi di WM_NOTIFY .

  • iItem
    Indice del pulsante associato alla notifica.

  • tbButton
    struttura diTBBUTTON contenente informazioni sul pulsante della barra degli strumenti associato alla notifica.

  • cchText
    Numero di caratteri nel testo del pulsante.

  • lpszText
    Puntatore al testo del pulsante.

Le notifiche che la barra degli strumenti invia sono le seguenti:

  • TBN_BEGINADJUST inviati quando l'utente avvia la personalizzazione di un controllo barra degli strumenti.I punti del puntatore a NMHDR struttura che contiene informazioni sulla notifica.Il gestore non deve restituire un valore specifico.

  • TBN_BEGINDRAG inviati quando l'utente inizia il trascinamento di un pulsante in un controllo barra degli strumenti.I punti del puntatore a una struttura di TBNOTIFY .Il membro di iItem contiene l'indice in base zero del pulsante che viene trascinato.Il gestore non deve restituire un valore specifico.

  • TBN_CUSTHELP inviati quando l'utente sceglie il pulsante? nella finestra di dialogo della barra degli strumenti di personalizzare.nessun valore restituito.I punti del puntatore a NMHDR struttura che contiene informazioni sul messaggio di notifica.Il gestore non deve restituire un valore specifico.

  • TBN_ENDADJUST inviati quando l'utente smette di personalizzare un controllo barra degli strumenti.I punti del puntatore a NMHDR struttura che contiene informazioni sul messaggio di notifica.Il gestore non deve restituire un valore specifico.

  • TBN_ENDDRAG inviati quando l'utente smette di trascinare un pulsante in un controllo barra degli strumenti.I punti del puntatore a una struttura di TBNOTIFY .Il membro di iItem contiene l'indice in base zero del pulsante che viene trascinato.Il gestore non deve restituire un valore specifico.

  • TBN_GETBUTTONINFO inviati quando l'utente sta personalizzando un controllo barra degli strumenti.La barra degli strumenti utilizza questo messaggio di notifica per recuperare le informazioni necessarie dalla finestra di dialogo della barra degli strumenti di personalizzare.I punti del puntatore a una struttura di TBNOTIFY .Il membro di iItem specifica l'indice in base zero di un pulsante.I membri di cchText e di pszText specificare l'indirizzo e la lunghezza, i caratteri, il testo del pulsante corrente.Un'applicazione deve occupare la struttura di informazioni sul pulsante.TRUE di ritorno se le informazioni sul pulsante sono state copiate nella struttura, o FALSE in caso contrario.

  • TBN_QUERYDELETE inviati quando l'utente sta personalizzando una barra degli strumenti per determinare se un pulsante può essere eliminato da un controllo barra degli strumenti.I punti del puntatore a una struttura di TBNOTIFY .Il membro di iItem contiene l'indice in base zero del pulsante da eliminare.TRUE di ritorno per consentire il pulsante da eliminare o FALSE per impedire il pulsante da eliminare.

  • TBN_QUERYINSERT inviati quando l'utente sta personalizzando un controllo barra degli strumenti per determinare se un pulsante può essere inserito a sinistra del pulsante specificato.I punti del puntatore a una struttura di TBNOTIFY .Il membro di iItem contiene l'indice in base zero del pulsante da inserire.TRUE di ritorno per consentire un pulsante da inserire prima del pulsante specificato o a FALSE per impedire il pulsante di inserimento.

  • TBN_RESET inviati quando l'utente reimposta il contenuto della finestra di dialogo della barra degli strumenti di personalizzare.I punti del puntatore a NMHDR struttura che contiene informazioni sul messaggio di notifica.Il gestore non deve restituire un valore specifico.

  • TBN_TOOLBARCHANGE inviati dopo che l'utente ha personalizzato un controllo barra degli strumenti.I punti del puntatore a NMHDR struttura che contiene informazioni sul messaggio di notifica.Il gestore non deve restituire un valore specifico.

Vedere anche

Riferimenti

Utilizzando CToolBarCtrl

Concetti

Controlli (MFC)