Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un controllo comune della barra degli strumenti di Windows include funzionalità di personalizzazione predefinite, inclusa una finestra di dialogo di personalizzazione definita dal sistema, che consente all'utente di inserire, eliminare o riorganizzare i pulsanti della barra degli strumenti. L'applicazione determina se le funzionalità di personalizzazione sono disponibili e controlla la misura in cui l'utente può personalizzare la barra degli strumenti.
È possibile rendere disponibili queste funzionalità di personalizzazione all'utente assegnando alla barra degli strumenti lo stile di CCS_ADJUSTABLE . Le funzionalità di personalizzazione consentono all'utente di trascinare un pulsante in una nuova posizione o di 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 Personalizza barra degli strumenti , che consente all'utente di aggiungere, eliminare e riorganizzare i pulsanti della barra degli strumenti. L'applicazione può visualizzare la finestra di dialogo usando la funzione Personalizza membro.
Il controllo barra degli strumenti invia messaggi di notifica alla finestra padre in ogni passaggio del processo di personalizzazione. Se l'utente mantiene il tasto MAIUSC verso il basso e inizia a trascinare un pulsante, la barra degli strumenti gestisce automaticamente l'operazione di trascinamento. La barra degli strumenti invia il messaggio di notifica 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 acquisisce l'input del mouse e attende che l'utente rilasci il pulsante del mouse.
Quando l'utente rilascia il pulsante del mouse, il controllo barra degli strumenti determina la posizione del cursore del mouse. Se il cursore si trova all'esterno della barra degli strumenti, il pulsante viene eliminato. Se il cursore si trova su un altro pulsante della barra degli strumenti, la barra degli strumenti invia il messaggio di notifica 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 lo è. La barra degli strumenti invia il messaggio di notifica TBN_TOOLBARCHANGE per segnalare la fine dell'operazione di trascinamento.
Se l'utente avvia un'operazione di trascinamento senza tenere premuto MAIUSC, il controllo barra degli strumenti invia il messaggio di notifica TBN_BEGINDRAG alla finestra del proprietario. Un'applicazione che implementa il proprio codice di trascinamento dei pulsanti può usare questo messaggio come segnale per avviare un'operazione di trascinamento. La barra degli strumenti invia il messaggio di notifica TBN_ENDDRAG per segnalare la fine dell'operazione di trascinamento.
Un controllo barra degli strumenti invia messaggi di notifica quando l'utente personalizza una barra degli strumenti utilizzando la finestra di dialogo Personalizza barra degli strumenti . La barra degli strumenti invia il messaggio di notifica TBN_BEGINADJUST dopo che l'utente fa doppio clic sulla barra degli strumenti, ma prima della creazione della finestra di dialogo. Successivamente, la barra degli strumenti inizia a inviare una serie di messaggi di notifica TBN_QUERYINSERT per determinare se la barra degli strumenti consente l'inserimento dei pulsanti. Quando la finestra padre restituisce TRUE, la barra degli strumenti smette di inviare notifiche di TBN_QUERYINSERT. Se la finestra padre non restituisce TRUE per alcun pulsante, la barra degli strumenti elimina definitivamente la finestra di dialogo.
Successivamente, il controllo barra degli strumenti determina se eventuali pulsanti possono essere eliminati dalla barra degli strumenti inviando un messaggio di notifica TBN_QUERYDELETE per ogni pulsante sulla 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 grigia quelli che potrebbero non essere eliminati.
Ogni volta che il controllo barra degli strumenti necessita di informazioni su un pulsante nella finestra di dialogo Personalizza barra degli strumenti, invia il messaggio di notifica TBN_GETBUTTONINFO , specificando l'indice del pulsante per cui sono necessarie informazioni e l'indirizzo di una struttura TBNOTIFY . La finestra padre deve riempire la struttura con le informazioni pertinenti.
La finestra di dialogo Personalizza barra degli strumenti include un pulsante Aiuto e un pulsante Reimposta. Quando l'utente sceglie il pulsante Guida, il controllo della barra degli strumenti invia il messaggio di notifica TBN_CUSTHELP. La finestra principale deve rispondere visualizzando le informazioni di aiuto. La finestra di dialogo invia il messaggio di notifica TBN_RESET quando l'utente seleziona il pulsante Reimposta. Questo messaggio segnala che la barra degli strumenti sta per reinizializzare la finestra di dialogo.
Questi messaggi sono tutti WM_NOTIFY messaggi e possono essere gestiti nella finestra del proprietario aggiungendo voci della mappa messaggi del modulo seguente alla mappa messaggi della finestra del proprietario:
ON_NOTIFY( wNotifyCode, idControl, memberFxn )
wNotifyCode
Codice dell'identificatore del messaggio di notifica, ad esempio TBN_BEGINADJUST.
idControl
Identificatore del controllo che invia la notifica.
memberFxn
Funzione membro da chiamare quando viene ricevuta questa notifica.
La funzione membro verrà dichiarata con il prototipo seguente:
afx_msg void memberFxn( NMHDR * pNotifyStruct, LRESULT * result );
Se il gestore dei messaggi di notifica restituisce un valore, deve inserirlo nel valore LRESULT a cui punta il risultato.
Per ogni messaggio, pNotifyStruct punta a una struttura NMHDR o a una struttura TBNOTIFY . Queste strutture sono descritte di seguito:
La struttura NMHDR contiene i membri seguenti:
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 invia la notifica. Per convertire questo handle in un
CWndpuntatore, usare CWnd::FromHandle.idFrom
Identificatore del controllo che invia la notifica.
codice
Codice di notifica. Questo membro può essere un valore specifico di un tipo di controllo, ad esempio TBN_BEGINADJUST o TTN_NEEDTEXT, oppure può essere uno dei valori di notifica comuni 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 ha perso lo stato attivo di input.
NM_OUTOFMEMORY Il controllo non è riuscito a completare un'operazione perché non è disponibile memoria sufficiente.
NM_RCLICK L'utente ha fatto clic sul 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 ha lo stato attivo per l'input e l'utente ha premuto il tasto INVIO.
NM_SETFOCUS Il controllo ha ricevuto la focalizzazione.
La struttura TBNOTIFY contiene i membri seguenti:
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
Informazioni comuni a tutti i messaggi di WM_NOTIFY .
elemento
Indice del pulsante associato alla notifica.
tbButton
Struttura TBBUTTON che contiene informazioni sul pulsante della barra degli strumenti associato alla notifica.
cchText
Numero di caratteri nel testo del pulsante.
lpszText
Identificatore del testo del pulsante.
Le notifiche inviate dalla barra degli strumenti sono le seguenti:
TBN_BEGINADJUST
Inviato quando l'utente inizia a personalizzare un controllo barra degli strumenti. Il puntatore punta a una struttura NMHDR che contiene informazioni sulla notifica. Il gestore non deve restituire alcun valore specifico.
TBN_BEGINDRAG
Inviato quando l'utente inizia a trascinare un pulsante in un controllo barra degli strumenti. Il puntatore punta a una struttura TBNOTIFY . Il membro iItem contiene l'indice in base zero del pulsante trascinato. Il gestore non deve restituire alcun valore specifico.
TBN_CUSTHELP
Inviato quando l'utente sceglie il pulsante Aiuto nella finestra di dialogo Personalizza la barra degli strumenti. Nessun valore restituito. Il puntatore punta a una struttura NMHDR che contiene informazioni sul messaggio di notifica. Il gestore non deve restituire alcun valore specifico.
TBN_ENDADJUST
Inviato quando l'utente smette di personalizzare un controllo barra degli strumenti. Il puntatore punta a una struttura NMHDR che contiene informazioni sul messaggio di notifica. Il gestore non deve restituire alcun valore specifico.
TBN_ENDDRAG
Inviato quando l'utente smette di trascinare un pulsante in un controllo barra degli strumenti. Il puntatore punta a una struttura TBNOTIFY . Il membro iItem contiene l'indice in base zero del pulsante trascinato. Il gestore non deve restituire alcun valore specifico.
TBN_GETBUTTONINFO
Inviato quando l'utente personalizza un controllo barra degli strumenti. La barra degli strumenti usa questo messaggio di notifica per recuperare le informazioni necessarie nella finestra di dialogo Personalizza barra degli strumenti. Il puntatore punta a una struttura TBNOTIFY . Il membro iItem specifica l'indice in base zero di un pulsante. I membri pszText e cchText specificano l'indirizzo e la lunghezza, in caratteri, del testo del pulsante corrente. Un'applicazione deve riempire la struttura con informazioni sul pulsante. Restituisce TRUE se le informazioni sul pulsante sono state copiate nella struttura o FALSE in caso contrario.
TBN_QUERYDELETE
Inviato mentre l'utente personalizza una barra degli strumenti per determinare se un pulsante può essere eliminato da un controllo barra degli strumenti. Il puntatore punta a una struttura TBNOTIFY . Il membro iItem contiene l'indice in base zero del pulsante da eliminare. Restituisce TRUE per consentire l'eliminazione del pulsante o FALSE per impedire l'eliminazione del pulsante.
TBN_QUERYINSERT
Inviato mentre l'utente personalizza un controllo barra degli strumenti per determinare se un pulsante può essere inserito a sinistra del pulsante specificato. Il puntatore punta a una struttura TBNOTIFY . Il membro iItem contiene l'indice in base zero del pulsante da inserire. Restituisce TRUE per consentire l'inserimento di un pulsante davanti al pulsante specificato o FALSE per impedire l'inserimento del pulsante.
TBN_RESET
Inviato quando l'utente reimposta il contenuto della finestra di dialogo Personalizza barra degli strumenti. Il puntatore punta a una struttura NMHDR che contiene informazioni sul messaggio di notifica. Il gestore non deve restituire alcun valore specifico.
TBN_TOOLBARCHANGE
Inviato dopo che l'utente ha personalizzato un controllo barra degli strumenti. Il puntatore punta a una struttura NMHDR che contiene informazioni sul messaggio di notifica. Il gestore non deve restituire alcun valore specifico.