Condividi tramite


TN031: barre di controllo

[!NOTA]

La seguente nota tecnica non è stata aggiornata dalla prima volta che viene inclusa nella documentazione online.Di conseguenza, alcune procedure e argomenti potrebbero non essere aggiornati o errati.Per le informazioni più recenti, è consigliabile cercare l'argomento di interesseindice della documentazione online.

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

CControlBar

ControlBar è CWndclasse derivata da che:

  • Viene allineato all'inizio o alla fine di una finestra cornice.

  • Può contenere elementi figlio che sono a controlli basati su HWND, ad esempio CDialogBar) o elementi non based diHWND (ad esempio, CToolBar, CStatusBar).

Le barre di controllo supportano gli stili aggiuntivi:

  • Pin diCBRS_TOP(impostazione predefinita) la barra di controllo all'inizio.

  • Pin diCBRS_BOTTOMla barra di controllo alla fine.

  • CBRS_NOALIGN non riposiziona la barra di controllo al padre viene ridimensionato.

Le classi derivate da CControlBar forniscono le implementazioni più interessanti:

  • La barra di stato diCStatusBarA, elementi è riquadri della barra di stato che contengono il testo.

  • La barra degli strumenti diCToolBarA, elementi è pulsanti bitmap allineati in una riga.

  • Frame del tipo di barra degli strumenti diCDialogBarche contiene i controlli standard windows (creati da una risorsa modello di finestra di dialogo).

  • CDockBar A generalized ancoraggio di area per altri oggetti derivati CControlBar .Le funzioni membro e le variabili specifiche disponibili in questa classe è probabile subire modifiche nelle versioni successive.

Tutti gli oggetti o finestre della barra di controllo saranno finestre figlio della finestra cornice padre.Generalmente aggiunte come elemento di pari livello all'area client del frame (ad esempio, un client MDI o una visualizzazione.La finestra figlio ID di una barra di controllo è importante.Il layout predefinito di funzionamento della barra di controllo solo per le barre di controllo con gli ID ordine di AFX_IDW_CONTROLBAR_FIRST a AFX_IDW_CONTROLBAR_LAST.Si noti che anche se esiste un intervallo di 256 barre di controllo ID, i primi 32 di questa barra di controllo ID sono speciali poiché sono direttamente supportate dall'architettura di anteprima di stampa.

La classe di CControlBar fornisce l'implementazione standard per:

  • Allineare la barra di controllo all'inizio, alla fine, oppure a qualsiasi lato del frame.

  • Allocare le matrici dell'elemento del controllo.

  • Supporto dell'implementazione delle classi derivate.

Gli oggetti della barra di controllo C++ in genere verranno incorporati come membri di una classe derivata di CFrameWnd e vengono puliti quando il padre HWND e l'oggetto viene eliminato.Se è necessario allocare un oggetto di barre di controllo nell'heap, è possibile impostare semplicemente il membro di m_bAutoDestruct a TRUE per visualizzare la barra di controllo “delete this„ quando HWND viene eliminato.

[!NOTA]

Se si crea un proprio CControlBarclasse derivata da, anziché utilizzare una delle classi derivate di MFC, come CStatusBar, CToolBar, o CDialogBar, sarà necessario impostare il membro dati di m_dwStyle .Questa operazione può essere eseguita nell'override di Create:

// CMyControlBar is derived from CControlBar
BOOL CMyControlBar::Create( CWnd* pParentWnd, DWORD dwStyle, UINT nID )
{
   m_dwStyle = dwStyle;

   .
   .
   .
}

Algoritmo di layout della barra di controllo

L'algoritmo di layout della barra di controllo è molto semplice.La finestra cornice invia un messaggio WM_SIZEPARENT a tutti gli elementi figlio nell'intervallo di barre di controllo.Con questo messaggio, un puntatore al rettangolo client padre viene passato.Questo messaggio viene inviato agli elementi figlio nell'ordine Z.Gli elementi figlio della barra di controllo utilizza tali informazioni per posizionarsi e per ridurre la dimensione dell'area client del padre.Il rettangolo finale che rimane per l'area client normale (meno barre di controllo) viene utilizzato per posizionare la finestra client principale (in genere un client, visualizzazione o finestra con separatore MDI).

Vedere CWnd::RepositionBars e CFrameWnd::RecalcLayout per ulteriori informazioni.

I messaggi privati delle finestre MFC, inclusi WM_SIZEPARENT, sono documentati in nota tecnica 24.

CStatusBar

Una barra di stato è una barra di controllo che contiene una riga dei riquadri di output di testo.Esistono due metodi comuni utilizzare i riquadri di output di testo:

  • Come riga del messaggio

    Ad esempio, la riga del messaggio standard della guida del menu).Questi vengono generalmente utilizzati da un in base 0 indicizzato

  • Come indicatori di stato

    Ad esempio, gli indicatori NUMERICI e di SCRL FINE,).Si tratta in genere si accede dall'ID comando/stringa

Il tipo di carattere per la barra di stato è 10 punti MS Sans Serif (base alle finestre collegare la guida di progetto di applicazione o corrispondenza dei mapper del carattere una migliore di un tipo di carattere proporzionale a 10 svizzeri del punto).In alcune versioni di windows, come l'edizione giapponese, tipi di carattere si seleziona sono diversi.

I colori utilizzati nella barra di stato sono coerenti con il requisito della guida di progetto di applicazione dell'interfaccia windows.Questi colori non viene codificato difficile e vengono modificati in modo dinamico in risposta alla personalizzazione utente nel Pannello di controllo.

Elemento

Valore del colore di windows

RGB predefinito

Sfondo della barra di stato

COLOR_BTNFACE

RGB (192, 192, 192)

Testo della barra di stato

COLOR_BTNTEXT

RGB (000, 000, 000)

La barra di stato maggiori/let i bordi

COLOR_BTNHIGHLIGHT

RGB (255, 255, 255)

Bot/il bordo destro della barra di stato

COLOR_BTNSHADOW

RGB (128, 128, 128)

Supporto di CCmdUI a CStatusBar

La modalità degli indicatori in genere vengono aggiornati avviene tramite il meccanismo di ON_UPDATE_COMMAND_UI .In tempo tempo di inattività, la barra di stato chiamato il gestore di ON_UPDATE_COMMAND_UI con ID stringa del riquadro di.

Il gestore di ON_UPDATE_COMMAND_UI possibile chiamare:

  • Abilita: Per abilitare o disabilitare il riquadro.Gli aspetti disabilitati di un riquadro esattamente come un riquadro attivato ma il testo sono invisibili (ovvero disattiva l'indicatore del testo).

  • SetText: Per modificare il testo.Prestare attenzione se si utilizza questo perché il riquadro automaticamente non verrà ridimensionata.

Fare riferimento alla classe CStatusBarin riferimenti alla libreria di classi per informazioni dettagliate sulla creazione di CStatusBar e la personalizzazione API.La maggior parte della personalizzazione delle barre di stato dovrebbe essere eseguita prima della barra di stato inizialmente sia reso visibile.

La barra di stato supporta solo un riquadro oggetto, in genere il primo riquadro.La dimensione del riquadro è in realtà una dimensione minima.Se la barra di stato è superiore alla dimensione minima di tutti i riquadri, una larghezza aggiuntiva verrà fornita al riquadro oggetto.L'applicazione predefinita con una barra di stato presenta indicatori allineati a destra della fine, NUM e SCRL poiché il primo riquadro è oggetto.

CToolBar

Una barra degli strumenti è una barra di controllo con una riga di pulsanti bitmap che può includere i separatori.Due stili dei pulsanti sono supportati: pulsanti e pulsanti della casella di controllo.La funzionalità radiofonica del gruppo può essere compilata con pulsanti e ON_UPDATE_COMMAND_UIdella casella di controllo.

Tutti i pulsanti bitmap nella barra degli strumenti derivano da una bitmap.Questa bitmap deve contenere un immagine icona o per ciascun pulsante.In genere l'ordine delle immagini/glifi nella bitmap è lo stesso ordine in cui vengono tracciati lo schermo.(Ciò può essere modificato mediante la personalizzazione API).

Ogni pulsante deve avere le stesse dimensioni.L'impostazione predefinita dei pixel standard 24x22.Ogni immagine/glifo deve avere le stesse dimensioni e deve essere side-by-side nella bitmap.L'immagine/dimensioni predefinite dei glifi è pixel 16x15.Di conseguenza, per una barra degli strumenti con 10 pulsanti (utilizzando le dimensioni standard), è necessaria una bitmap da 160 pixel di larghezza e 15 pixel di altezza.

Ogni pulsante dispone di un unico immagine/glifo.Gli stati e gli stili diversi del pulsante (ad esempio, premuto, verso il basso, in disabilitato su, disattivare il basso, non definito) in modo algoritmico vengono generati da tali un immagine/glifo.Una bitmap o DIB di colore può essere utilizzato in teoria.L'algoritmo per la generazione di diversi stati del pulsante è ideale quando l'immagine originale è sfumatura di colore grigio.Esaminare i pulsanti della barra degli strumenti standard e clipart del pulsante della barra degli strumenti forniti in generale CLIPART MFC per gli esempi.

I colori utilizzati nella barra degli strumenti sono coerenti con il requisito della guida di progetto di applicazione dell'interfaccia windows.Questi colori non viene codificato difficile e vengono modificati in modo dinamico in risposta alla personalizzazione utente nel Pannello di controllo.

Elemento

Valore del colore di windows

RGB predefinito

Sfondo della barra degli strumenti

COLOR_BTNFACE

RGB (192.192.192)

I pulsanti della barra degli strumenti superiori/consentono ai bordi

COLOR_BTNHIGHLIGHT

RGB (255.255.255)

Bot/il bordo destro dei pulsanti della barra degli strumenti

COLOR_BTNSHADOW

RGB (128.128.128)

Inoltre, i pulsanti bitmap della barra degli strumenti recolored come se fossero pulsanti standard di windows.La ricolorazione si verifica quando la bitmap viene caricata dalla risorsa e in risposta a una modifica a colori i colori di sistema in risposta alla personalizzazione utente nel Pannello di controllo.I seguenti colori in una bitmap della barra degli strumenti recolored automaticamente pertanto devono essere utilizzati con cautela.Se non si desidera ottenere una parte della bitmap recolored, quindi utilizzare un colore da un percorso analogo molto simile a uno dei valori mappati RGB.Il mapping viene eseguito in base ai valori esatti RGB.

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 CToolBaril riferimento della libreria di classi per informazioni dettagliate sulla creazione di CToolBar e la personalizzazione API.La maggior parte della personalizzazione delle barre degli strumenti deve essere eseguita prima della barra degli strumenti inizialmente sia reso visibile.

La personalizzazione API può essere utilizzata per regolare il pulsante ID, gli stili, larghezza di spazio vuoto e che l'immagine/glifo viene utilizzata per il pulsante.Per impostazione predefinita non è necessario utilizzare queste API.

Supporto di CCmdUI a CToolBar

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

Il gestore di ON_UPDATE_COMMAND_UI possibile chiamare:

  • Abilita: Per abilitare o disabilitare il pulsante.Funziona in modo identico per i pulsanti e i pulsanti della casella di controllo.

  • SetCheck: Per impostare lo stato di selezione di un pulsante.Chiamare questo metodo per un pulsante della barra degli strumenti lo trasformerà in un pulsante della casella di controllo.SetCheck accetta un parametro che può essere 0 (non selezionato), 1 (selezionato) o 2 (definito)

  • SetRadio: Metodo sintetico per SetCheck.

I pulsanti della casella di controllo sono pulsanti “AUTOMATICI„ della casella di controllo; ovvero quando l'utente li premere immediatamente modificano lo stato.Viene verificato il basso o lo stato diminuito.Non è possibile incorporata dell'interfaccia utente per modificare un pulsante in stato “indeterminato„; questa operazione deve essere eseguita con codice.

La personalizzazione API consentirà di modificare lo stato di un pulsante della barra degli strumenti specificato, è necessario modificare preferibilmente questi stati nel gestore di ON_UPDATE_COMMAND_UI per il comando che il pulsante della barra degli strumenti rappresenta.È importante ricordare, l'elaborazione dell'inattività modifica lo stato dei pulsanti della barra degli strumenti con il gestore di ON_UPDATE_COMMAND_UI , le modifiche apportate a questi stati eseguiti con SetButtonStyle possono perdersi dopo il seguente vertono al minimo.

I pulsanti della barra degli strumenti invieranno i messaggi di WM_COMMAND quali pulsanti o voci di menu standard e solitamente gestiti da un gestore di ON_COMMAND nella stessa classe che fornisce il gestore di ON_UPDATE_COMMAND_UI .

Esistono quattro stili del pulsante della barra degli strumenti (valori di TBBS_) utilizzati per tenere traccia degli stati di visualizzazione:

  • TBBS_CHECKED:   La casella di controllo è correntemente selezionata ().

  • TBBS_INDETERMINATE:   la casella di controllo è attualmente indeterminata.

  • TBBS_DISABLED:   Il pulsante è attualmente disabilitato.

  • TBBS_PRESSED:   Il pulsante è attualmente premuto.

I sei stili del pulsante ufficiali della guida di progetto di applicazione dell'interfaccia windows sono rappresentati dai seguenti valori di TBBS:

  • = Su 0

  • Mouse TBBS_PRESSED (=| qualsiasi altro stile)

  • Disattivato = TBBS_DISABLED

  • (= TBBS_CHECKED

  • Sarà disabilitato = TBBS_CHECKED | TBBS_DISABLED

  • Indeterminato = TBBS_INDETERMINATE

CDialogBar

Una barra della finestra di dialogo è una barra di controllo che contiene controlli Windows standard.Agisce come una finestra di dialogo in che contiene i controlli e supporta la scheda tra loro.Anche agisce come una finestra di dialogo in quanto utilizza un modello di finestra di dialogo per rappresentare la barra.

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

Utilizzando CDialogBar è analogo a quello CFormView.È necessario definire un modello di finestra di dialogo per la barra della finestra di dialogo e rimuovere tutti gli stili tranne WS_CHILD.Si noti che la finestra di dialogo non deve essere visibile.

Le notifiche di controllo per CDialogBar verranno inviate al padre della barra di controllo (esattamente come i pulsanti della barra degli strumenti).

Supporto di CCmdUI a CDialogBar

I pulsanti della barra della finestra di dialogo devono essere aggiornati tramite il meccanismo di gestione di ON_UPDATE_COMMAND_UI .In fase di inattività, la barra della finestra di dialogo chiamerà il gestore di ON_UPDATE_COMMAND_UI con l'ID di comando di tutti i pulsanti che dispongono di un >= 0x8000 ID ovvero nell'ordine degli ID di comando).

Il gestore di ON_UPDATE_COMMAND_UI possibile chiamare:

  • Abilitare: per abilitare o disabilitare il pulsante.

  • SetText: per modificare il testo del pulsante.

La personalizzazione può essere effettuata mediante gestione finestre standard API.

Vedere anche

Altre risorse

Note tecniche del numero

Note tecniche per categoria