Condividi tramite


TN031: barre di controllo

Nota

La seguente nota tecnica non è stata aggiornata da quando è stata inclusa per la prima volta nella documentazione online.Di conseguenza, alcune procedure e argomenti potrebbero essere non aggiornati o errati.Per le informazioni più recenti, è consigliabile cercare l'argomento di interesse nell'indice della documentazione online.

Questa nota vengono descritte le classi di barre di controllo in MFC: il CControlBargenerale, CStatusBar, CToolBar, CDialogBar e CDockBar.

CControlBar

ControlBar è CWnd- classe derivata che:

  • Viene allineato alla parte superiore o inferiore di una finestra cornice.

  • Può contenere elementi figlio che sono a controlli basati su HWND, ad esempio CDialogBar) o elementi basati non 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 al bordo inferiore.

  • CBRS_NOALIGN non riposiziona la barra di controllo se l'elemento 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 di windows (creati da una risorsa modello di finestra di dialogo.

  • CDockBar A generalized ancoraggio dell'area per altri oggetti derivati CControlBar. Le funzioni membro e variabili specifiche disponibili in questa classe cambino nelle versioni future.

Tutti gli oggetti o finestre di barre di controllo verranno 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 sequenza 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é direttamente sono supportate dall'architettura di anteprima di stampa.

La classe di CControlBar fornisce l'implementazione standard per:

  • Allineamento della barra di controllo alla parte superiore, inferiore, o su 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 semplicemente impostare il membro di m_bAutoDestruct a TRUE per visualizzare la barra di controllo "elimina questo" quando HWND viene eliminato.

Nota

Se si crea un proprio CControlBar- classe derivata, 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 Crea:

// 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 le dimensioni 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, visualizzare o finestra con separatore MDI).

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

I messaggi privati delle finestre mfc, tra cui WM_SIZEPARENT, sono documentati in Nota tecnica 24.

CStatusBar

Una barra di stato è una barra di controllo che dispone i riquadri di output di testo. Esistono due metodi comuni per 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 0 basato indicizzato

  • Come indicatori di stato

    ad esempio, gli indicatori NUMERICI e di SCRL FINE,). Questi vengono generalmente accedere mediante l'id/comando della stringa

Il carattere per la barra di stato è 10 punti MS Sans Serif (stabilito dalla guida di progetto applicazione dell'interfaccia Windows o corrispondenza dei mapper del tipo di carattere dalla migliore di un tipo di carattere proporzionale a 10 svizzeri point). In alcune versioni di Windows, ad esempio l'edizione giapponese, tipi di carattere selezionato sono diversi.

I colori utilizzati nella barra di stato sono coerenti con il requisito della guida di progetto applicazione dell'interfaccia Windows. Questi colori non viene codificato difficile e vengono modificati in modo dinamico in risposta alla personalizzazione dell'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 barra di stato

COLOR_BTNTEXT

RGB (000, 000, 000)

La parte superiore della barra di stato/let i bordi

COLOR_BTNHIGHLIGHT

RGB (255, 255, 255)

Bot/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 è mediante il meccanismo di ON_UPDATE_COMMAND_UI. In tempo tempo di inattività, la barra di stato verrà chiamato il gestore di ON_UPDATE_COMMAND_UI con ID stringa del riquadro dell'indicatore.

Il gestore di ON_UPDATE_COMMAND_UI può chiamare:

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

  • SetText: Per modificare il testo. Prestare attenzione se si utilizza questo perché il riquadro automaticamente non viene ridimensionato.

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

La barra di stato supporta un solo riquadro effetto, in genere il primo riquadro. Le dimensioni di tale 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 effetto. L'applicazione predefinita con una barra di stato presenta indicatori allineati a destra di l MAIUSC, NUM e SCRL poiché il primo riquadro è effetto.

CToolBar

Una barra degli strumenti è una barra di controllo a 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 di 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 verranno disegnati nello schermo. (Ciò può essere modificato utilizzando le API di personalizzazione.)

Ogni pulsante sia la stessa dimensione. L'impostazione predefinita è rappresentata dai pixel standard 24x22. Ogni immagine/glifo deve avere le stesse dimensioni e deve essere affiancati nella bitmap. L'immagine/dimensioni predefinite dei glifi è 16x15 pixel. Di conseguenza, per una barra degli strumenti con 10 pulsanti (tramite dimensioni standard), è necessaria una bitmap da 160 pixel di larghezza e 15 pixel.

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

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

Elemento

Valore del colore di windows

RGB predefinito

Sfondo della barra degli strumenti

COLOR_BTNFACE

RGB (192.192.192)

La parte superiore dei pulsanti della barra degli strumenti/let i bordi

COLOR_BTNHIGHLIGHT

RGB (255.255.255)

Bot/bordo destro dei pulsanti della barra degli strumenti

COLOR_BTNSHADOW

RGB (128.128.128)

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

Valore RGB

Valore di colore dinamicamente 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 sulle API di creazione e personalizzazione di CToolBar. La maggior parte della personalizzazione delle barre degli strumenti deve essere eseguita prima della barra degli strumenti inizialmente sia resa visibile.

Le API di personalizzazione possono essere utilizzati 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 mediante 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 può chiamare:

  • Abilita: Per abilitare o disabilitare il pulsante. Questa soluzione si fa riferimento 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 si trasformerà in un pulsante della casella di controllo. SetCheck accetta un parametro che può essere 0 (non selezionato), 1 (selezionato) o 2 (non definito)

  • SetRadio: Ovvero una SetCheck.

I pulsanti della casella di controllo disponibili pulsanti "AUTOMATICI" della casella di controllo; ovvero quando l'utente preme si modificheranno immediatamente lo stato. Viene verificato il basso o lo stato diminuito. Non è possibile incorporata dell'interfaccia utente modifica un pulsante in uno stato indeterminato ";" questa operazione deve essere eseguita dal codice.

Le API di personalizzazione consentiranno di modifica dello 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 di inattività modifica lo stato dei pulsanti della barra degli strumenti al gestore di ON_UPDATE_COMMAND_UI, le modifiche apportate a questi stati eseguiti tramite SetButtonStyle possono perdersi dopo il seguente ruotare 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 gli stati di visualizzazione:

  • TBBS_CHECKED:   La casella di controllo è attualmente selezionata (in basso).

  • 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 applicazione dell'interfaccia Windows sono rappresentati dai valori di TBBS:

  • = Su 0

  • Mouse TBBS_PRESSED (=| qualsiasi altro stile)

  • TBBS_DISABLED = disabled

  • Il TBBS_CHECKED =

  • Giù disabilitato = TBBS_CHECKED | TBBS_DISABLED

  • Indeterminato = TBBS_INDETERMINATE

CDialogBar

Una barra della finestra di dialogo è una barra di controllo contenente controlli Windows standard. Si comporti come una finestra di dialogo in quanto dispone i controlli e i supporta la scheda tra esse. 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, contenente controlli di 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 attraverso 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 con ID >= 0x8000 ovvero sequenza degli ID di comando).

Il gestore di ON_UPDATE_COMMAND_UI può chiamare:

  • Abilitare: per abilitare o disabilitare il pulsante.

  • SetText: per modificare il testo del pulsante.

La personalizzazione può essere eseguita mediante le API standard finestre desktopdwmextendframeintoclientarea.

Vedere anche

Altre risorse

Note tecniche per numero

Note tecniche per categoria