TN031: Barre di controllo

Questa nota descrive le classi di barre di controllo in MFC: il generale CControlBar, CStatusBar, CToolBar, CDialogBare CDockBar.

CControlBar

Un ControlBar è un CWnd-derivati classe che:

Barre di controllo supportano gli stili aggiuntivi:

Le classi derivate da CControlBar forniscono implementazioni più interessante:

Gli oggetti barra di controllo tutti i/windows sarà finestre figlio di qualche finestra cornice padre. Di solito vengono aggiunti come un fratello all'area client del telaio (ad esempio, un Client MDI o visualizzazione). L'ID della finestra figlio di una barra di controllo è importante. Il layout predefinito della barra di controllo funziona solo per barre di controllo con ID nella gamma da AFX_IDW_CONTROLBAR_FIRST a AFX_IDW_CONTROLBAR_LAST. Si noti che anche se c'è una vasta gamma di 256 controllo barra IDs, i primi 32 di questi barra di controllo ID sono speciali dal momento che essi sono supportate direttamente dall'architettura anteprima di stampa.

La classe CControlBar dà implementazione standard per

Oggetti C++ controllo barra di solito verranno incorporati come membri di un CFrameWnd classe derivata e saranno ripuliti a quando l'oggetto e l'HWND genitore sono distrutti. Se avete bisogno di allocare un oggetto barra di controllo sull'heap, si può semplicemente impostare il membro m_bAutoDestruct su TRUE per rendere il controllo barra "eliminare questo" quando viene distrutto l' HWND.

Importa&ntenbsp;  Se si crea il proprio CControlBar-classe derivata, piuttosto che usare una delle MFC derivata classi, ad esempio CToolBar, CStatusBaro CDialogBar, sarà necessario impostare il membro dati m_dwStyle . Questo può essere fatto nell'override di Create:

 / / CMyControlBar è derivato da CControlBar
BOOL CMyControlBar::Create (UI&NT nID, CWnd * pParentWnd, DWORD dwStyle)
{
 nbsp; m_dwStyle = dwStyle;

.
   .
   .
}

Algoritmo di Layout barra di controllo

L'algoritmo di layout di barra di controllo è molto semplice. La finestra cornice Invia un messaggio WM_SIZEPARENT a tutti i bambini della gamma di barra di controllo. Insieme a questo messaggio, viene passato un puntatore a rettangolo client del genitore. Questo messaggio viene inviato ai bambini nell'ordine Z. I bambini della barra di controllo utilizzano queste informazioni per posizionarsi e ridurre le dimensioni dell'area client del genitore. Il rettangolo finale che viene lasciato per l'area client normale (meno barre di controllo) è usato per posizionare la finestra principale cliente (di solito una cliente, vista o splitter finestra MDI).

Per ulteriori dettagli, vedere CWnd::RepositionBars e RecalcLayout.

Messaggi privati MFC Windows, tra cui WM_SIZEPARENT, sono documentati nella tecnica nota 24.

CStatusBar

Una barra di stato è una barra di controllo che ha una riga di testo uscita riquadri. Ci sono due modi comuni per utilizzare testo uscita riquadri:

Il tipo di carattere per la barra di stato è a 10 punti "MS Sans Serif" (dettata dalla guida alla progettazione di Windows interfaccia applicazione o la corrispondenza migliore del mapper dei caratteri di un font proporzionale Svizzera 10 punti). In alcune versioni di Windows, come l'edizione giapponese e Windows 4.0, sono diversi i font selezionati.

I colori utilizzati nella barra di stato sono anche coerenti con la raccomandazione di Windows Application Interface Design Guide. Questi colori non sono codificati duro e vengono modificati dinamicamente in risposta alla personalizzazione utente tramite il pannello di controllo.

Elemento Valore del colore di Windows Predefinita RGB
Sfondo di barra di stato COLOR_BTNFACE RGB (192, 192, 192)
Testo della barra di stato COLOR_BTNTEXT RGB (000, 000, 000)
Barra bordi in alto a sinistra di stato COLOR_BTNHIGHLIGHT RGB (255, 255, 255)
Barra bordi bot/destra di stato COLOR_BTNSHADOW RGB (128, 128, 128)

Supporto CCmdUI per CStatusBar

Il modo in cui gli indicatori di solito vengono aggiornati è attraverso il meccanismo ON_UPDATE_COMMAND_UI . Il tempo di inattività, la barra di stato chiamerà il gestore ON_UPDATE_COMMAND_UI con l'ID di stringa del riquadro indicatore.

Può chiamare il gestore ON_UPDATE_COMMAND_UI:

Si prega di fare riferimento alla classe CStatusBar in Riferimento alla libreria di classi per informazioni dettagliate sulla creazione di CStatusBar e personalizzazione API. La maggior parte di personalizzazione delle barre di stato dovrebbe essere fatto prima che la barra di stato inizialmente viene reso visibile.

La barra di stato supporta solo un riquadro elastico, di solito il primo riquadro. Le dimensioni di tale riquadro sono davvero una dimensione minima. Se la barra di stato è più grande rispetto alla dimensione minima di tutti i riquadri, qualsiasi larghezza aggiuntiva sarà data al riquadro elastico. L'applicazione predefinita con una barra di stato ha allineato a destra indicatori per CAP, NUM e SCRL, dato che il primo riquadro è elastico.

CToolBar

Una barra degli strumenti è una barra di controllo con una fila di pulsanti bitmap che possono includere separatori. Sono supportati due stili di pulsanti: casella di controllo pulsanti e pulsanti. Funzionalità di gruppo radio può essere costruita con la casella di controllo pulsanti e ON_UPDATE_COMMAND_UI.

Tutti i pulsanti bitmap nella barra degli strumenti sono presi da una bitmap. Questa bitmap deve contenere una immagine o glifo per ciascun pulsante. In genere l'ordine dei glifi/immagini della bitmap è lo stesso ordine che essi saranno disegnate sullo schermo. (Questo può essere modificato mediante la personalizzazione API.)

Ogni pulsante deve avere le stesse dimensioni. Il valore predefinito è standard 24 x 22 pixel. Ogni glifo/immagine deve avere le stesse dimensioni e deve essere fianco a fianco della bitmap. La dimensione immagine/icona predefinita è il pixel 16 x 15. Pertanto, per una barra degli strumenti con 10 tasti (utilizzando formati standard), avete bisogno di una bitmap è 160 pixel di larghezza e 15 pixel di altezza.

Ogni pulsante ha uno e un solo immagine/glifo. Il pulsante diverso Stati e stili (per esempio, pressato, su, giù, disabili, disabilitato giù, indeterminato) algoritmicamente vengono generate da tale una immagine/glifo. Qualsiasi colore bitmap o DIB può essere utilizzato in teoria. L'algoritmo per generare il pulsante diverso afferma opere meglio se l'immagine originale è la tonalità di grigio. Guardate i pulsanti della barra degli strumenti standard e la barra degli strumenti pulsante clipart fornito nel campione generale MFC CLIPART per esempi.

I colori utilizzati nella barra degli strumenti sono anche coerenti con la raccomandazione di Windows Application Interface Design Guide. Questi colori non sono codificati duro e vengono modificati dinamicamente in risposta alla personalizzazione utente tramite il pannello di controllo.

Elemento Valore del colore di Windows Predefinita RGB
Sfondo della barra degli strumenti COLOR_BTNFACE RGB(192,192,192)
Bordi in alto a sinistra i pulsanti barra degli strumenti COLOR_BTNHIGHLIGHT RGB(255,255,255)
ToolBar pulsanti bordi destra/bot COLOR_BTNSHADOW RGB(128,128,128)

Inoltre, la barra di navigazione di bitmap vengono ricolorati come se fossero controllo pulsante di Windows standard. Ricolorazione di questo si verifica quando la bitmap viene caricata dalla risorsa e in risposta a un cambiamento di colori di sistema in risposta alla personalizzazione utente tramite il pannello di controllo. Seguenti colori in una bitmap toolbar saranno automaticamente ricolorati così che deve essere usati con cautela. Se non si desidera avere una porzione della bitmap ricolorata, quindi utilizzare un colore che approssima strettamente uno dei valori RGB mappati. Il mapping viene fatto basato su valori RGB esatti.

Valore RGB Valore di colore in modo dinamico mappato
RGB (000, 000, 000) COLOR_BTNTEXT
RGB (128, 128, 128) COLOR_BTNSHADOW
RGB (192, 192, 192) COLOR_BTNFACE
RGB (255, 255, 255) COLOR_BTNHIGHLIGHT

Fare riferimento alla classe CToolBar il Riferimento alla libreria di classi per informazioni dettagliate sulla creazione di CToolBar e personalizzazione API. La maggior parte di personalizzazione delle barre degli strumenti dovrebbe essere fatto prima che la barra degli strumenti viene inizialmente resa visibile.

La personalizzazione API possono essere utilizzate per regolare il pulsante IDs, stili, larghezza spaziatore e quale immagine/glifo è utilizzato per il quale pulsante. Per impostazione predefinita non è necessario utilizzare queste API.

Supporto CCmdUI per CToolBar

Il modo di pulsanti della barra degli strumenti vengono sempre aggiornati è attraverso il meccanismo ON_UPDATE_COMMAND_UI . Il tempo di inattività, la barra degli strumenti chiamerà il gestore ON_UPDATE_COMMAND_UI con l'ID di comando del pulsante. ON_UPDATE_COMMAND_UI non viene chiamato per separatori, ma esso è chiamato per la casella di controllo pulsanti e pulsanti.

Può chiamare il gestore ON_UPDATE_COMMAND_UI:

Casella di controllo pulsanti sono "AUTO" casella di controllo pulsanti; cioè, quando l'utente preme loro immediatamente cambieranno dello stato. Controllato è stato inattivo o depresso. Non non c'è alcun modo di interfaccia utente predefiniti per cambiare un pulsante con lo stato "indeterminato"; che deve essere eseguita tramite codice.

La personalizzazione API vi permetterà di modificare lo stato di un pulsante della barra degli strumenti specificata, preferibilmente si dovrebbero cambiare questi stati nel gestore ON_UPDATE_COMMAND_UI per il comando che rappresenta il pulsante della barra degli strumenti. Ricordate, l'elaborazione di inattività cambierà lo stato dei pulsanti della barra degli strumenti con il gestore ON_UPDATE_COMMAND_UI , così tutte le modifiche a questi stati effettuati tramite SetButtonStyle possono perdersi dopo il successivo inattivo.

Barra di navigazione invierà messaggi WM_COMMAND come normali pulsanti o voci di menu e normalmente sono gestiti da un gestore ON_COMMAND nella stessa classe che fornisce il gestore ON_UPDATE_COMMAND_UI.

Ci sono quattro Toolbar pulsante stili (valori TBBS_) utilizzati per gli Stati di visualizzazione:

I sei stili dei pulsanti interfaccia Windows Application Design Guide ufficiali sono rappresentati dai seguenti valori del TBBS:

CDialogBar

Una barra della finestra di dialogo è una barra di controllo che contiene i controlli standard di Windows. Esso agisce come una finestra di dialogo che contiene i controlli e supporta la tabulazione tra di loro. Agisce anche come una finestra di dialogo, in quanto esso utilizza un modello di dialogo per rappresentare il bar.

Un CDialogBar viene utilizzato per la barra degli strumenti anteprima di stampa, che contiene controlli pulsante standard.

Utilizzando un CDialogBar è simile all'utilizzo di un CFormView. È necessario definire un modello di finestra di dialogo per la barra della finestra di dialogo e rimuovere tutti gli stili, ad eccezione di WS_CHILD. Si noti che la finestra di dialogo non devono essere visibile.

Le notifiche di controllo per un CDialogBar saranno inviate al padre della barra di controllo (come pulsanti della barra degli strumenti).

Supporto CCmdUI per CDialogBar

Pulsanti della barra di dialo&go dovrebbero essere aggiornato attraverso il meccanismo del gestore ON_UPDATE_COMMAND_UI . Al tempo di inattività, barra di dialogo chiamerà il gestore ON_UPDATE_COMMAND_UI con l'ID di comando di tutti i pulsanti che hanno una ID gt; = 0x8000 (che è, nella gamma ID di comando).

Può chiamare il gestore ON_UPDATE_COMMAND_UI:

Personalizzazione può essere fatto attraverso il gestore di finestre standard API.

&Note tecniche per numero |nbsp; Note tecniche per la categoria

Index