Condividi tramite


CControlBar Class

Classe di base per le classi della barra di controllo CStatusBar, CToolBar, CDialogBar, CReBar e COleResizeBar.

Sintassi

class CControlBar : public CWnd

Membri

Costruttori protetti

Nome Descrizione
CControlBar::CControlBar Costruisce un oggetto CControlBar.

Metodi pubblici

Nome Descrizione
CControlBar::CalcDynamicLayout Restituisce le dimensioni di una barra di controllo dinamica come oggetto CSize .
CControlBar::CalcFixedLayout Restituisce le dimensioni della barra di controllo come oggetto CSize .
CControlBar::CalcInsideRect Restituisce le dimensioni correnti dell'area della barra di controllo; inclusi i bordi.
CControlBar::D oPaint Esegue il rendering dei bordi e del gripper della barra di controllo.
CControlBar::D rawBorders Esegue il rendering dei bordi della barra di controllo.
CControlBar::D rawGripper Esegue il rendering del gripper della barra di controllo.
CControlBar::EnableDocking Consente l'ancoraggio o la spostamento di una barra di controllo.
CControlBar::GetBarStyle Recupera le impostazioni di stile della barra dei controlli.
CControlBar::GetBorders Recupera i valori del bordo della barra di controllo.
CControlBar::GetCount Restituisce il numero di elementi non HWND nella barra di controllo.
CControlBar::GetDockingFrame Restituisce un puntatore al frame a cui è ancorata una barra di controllo.
CControlBar::IsFloating Restituisce un valore diverso da zero se la barra di controllo in questione è una barra di controllo mobile.
CControlBar::OnUpdateCmdUI Chiama i gestori dell'interfaccia utente del comando.
CControlBar::SetBarStyle Modifica le impostazioni di stile della barra di controllo.
CControlBar::SetBorders Imposta i valori del bordo della barra di controllo.
CControlBar::SetInPlaceOwner Modifica il proprietario sul posto di una barra di controllo.

Membri dati pubblici

Nome Descrizione
CControlBar::m_bAutoDelete Se diverso da zero, l'oggetto CControlBar viene eliminato quando la barra di controllo di Windows viene eliminata definitivamente.
CControlBar::m_pInPlaceOwner Proprietario sul posto della barra di controllo.

Osservazioni:

Una barra di controllo è una finestra in genere allineata a sinistra o a destra di una finestra cornice. Può contenere elementi figlio che sono controlli basati su HWND, ovvero finestre che generano e rispondono ai messaggi di Windows o agli elementi non basati su HWND, che non sono finestre e sono gestiti dal codice dell'applicazione o dal codice framework. Caselle di riepilogo e controlli di modifica sono esempi di controlli basati su HWND; I riquadri della barra di stato e i pulsanti bitmap sono esempi di controlli non basati su HWND.

Le finestre della barra di controllo sono in genere finestre figlio di una finestra cornice padre e in genere sono di pari livello alla visualizzazione client o al client MDI della finestra cornice. Un CControlBar oggetto usa informazioni sul rettangolo client della finestra padre per posizionarsi. Informa quindi la finestra padre su quanto spazio rimane non allocato nell'area client della finestra padre.

Per altre informazioni su CControlBar, vedere:

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CControlBar

Requisiti

Intestazione: afxext.h

CControlBar::CalcDynamicLayout

Il framework chiama questa funzione membro per calcolare le dimensioni di una barra degli strumenti dinamica.

virtual CSize CalcDynamicLayout(
    int nLength,
    DWORD nMode);

Parametri

nLength
Dimensione richiesta della barra di controllo, orizzontale o verticale, a seconda di dwMode.

nMode
I flag predefiniti seguenti vengono usati per determinare l'altezza e la larghezza della barra di controllo dinamica. Usare l'operatore OR bit per bit (|) per combinare i flag.

Flag della modalità layout Significato
LM_STRETCH Indica se la barra di controllo deve essere estesa alle dimensioni del frame. Impostare se la barra non è una barra di ancoraggio (non disponibile per l'ancoraggio). Non impostato quando la barra è ancorata o mobile (disponibile per l'ancoraggio). Se impostato, LM_STRETCH ignora nLength e restituisce le dimensioni in base allo stato LM_HORZ. LM_STRETCH funziona in modo analogo al parametro bStretch usato in CalcFixedLayout. Per altre informazioni sulla relazione tra stretching e orientamento, vedere tale funzione membro.
LM_HORZ Indica che la barra è orientata orizzontalmente o verticalmente. Impostare se la barra è orientata orizzontalmente e, se è orientata verticalmente, non è impostata. LM_HORZ funziona in modo analogo al parametro bHorz usato in CalcFixedLayout. Per altre informazioni sulla relazione tra stretching e orientamento, vedere tale funzione membro.
LM_MRUWIDTH Larghezza dinamica usata più di recente. Ignora il parametro nLength e usa la larghezza utilizzata più di recente.
LM_HORZDOCK Dimensioni ancorate orizzontali. Ignora il parametro nLength e restituisce le dimensioni dinamiche con la larghezza più grande.
LM_VERTDOCK Dimensioni ancorate verticali. Ignora il parametro nLength e restituisce le dimensioni dinamiche con l'altezza più grande.
LM_LENGTHY Impostare se nLength indica l'altezza (direzione Y) anziché la larghezza.
LM_COMMIT Reimposta LM_MRUWIDTH sulla larghezza corrente della barra di controllo mobile.

Valore restituito

Dimensione della barra di controllo, in pixel, di un oggetto CSize .

Osservazioni:

Eseguire l'override di questa funzione membro per fornire il proprio layout dinamico nelle classi derivate da CControlBar. Le classi MFC derivate da CControlBar, ad esempio CToolbar, eseguono l'override di questa funzione membro e forniscono la propria implementazione.

CControlBar::CalcFixedLayout

Chiamare questa funzione membro per calcolare le dimensioni orizzontali di una barra di controllo.

virtual CSize CalcFixedLayout(
    BOOL bStretch,
    BOOL bHorz);

Parametri

bStretch
Indica se la barra deve essere estesa alle dimensioni del frame. Il parametro bStretch è diverso da zero quando la barra non è una barra di ancoraggio (non disponibile per l'ancoraggio) e è 0 quando è ancorata o mobile (disponibile per l'ancoraggio).

bHorz
Indica che la barra è orientata orizzontalmente o verticalmente. Il parametro bHorz è diverso da zero se la barra è orientata orizzontalmente e è 0 se è orientata verticalmente.

Valore restituito

Dimensione della barra di controllo, in pixel, di un CSize oggetto .

Osservazioni:

Le barre di controllo, ad esempio le barre degli strumenti, possono estendersi orizzontalmente o verticalmente per contenere i pulsanti contenuti nella barra di controllo.

Se bStretch è TRUE, estendere la dimensione lungo l'orientamento fornito da bHorz. In altre parole, se bHorz è FALSE, la barra di controllo viene estesa verticalmente. Se bStretch è FALSE, non viene eseguita alcuna estensione. La tabella seguente illustra le possibili permutazioni e gli stili della barra di controllo risultanti, di bStretch e bHorz.

bStretch bHorz Stiramento Orientamento Ancoraggio/Non ancoraggio
TRUE TRUE Estensione orizzontale Orientato orizzontalmente Non ancoraggio
TRUE FALSE Estensione verticale Orientamento verticale Non ancoraggio
FALSE TRUE Nessuna estensione disponibile Orientato orizzontalmente Ancoraggio
FALSE FALSE Nessuna estensione disponibile Orientamento verticale Ancoraggio

CControlBar::CalcInsideRect

Il framework chiama questa funzione per calcolare l'area client della barra di controllo.

virtual void CalcInsideRect(
    CRect& rect,
    BOOL bHorz) const;

Parametri

rect
Contiene le dimensioni correnti della barra di controllo; inclusi i bordi.

bHorz
Indica che la barra è orientata orizzontalmente o verticalmente. Il parametro bHorz è diverso da zero se la barra è orientata orizzontalmente e è 0 se è orientata verticalmente.

Osservazioni:

Questa funzione viene chiamata prima che venga disegnata la barra di controllo.

Eseguire l'override di questa funzione per personalizzare il rendering dei bordi e della barra del gripper della barra di controllo.

CControlBar::CControlBar

Costruisce un oggetto CControlBar.

CControlBar();

CControlBar::D oPaint

Chiamato dal framework per eseguire il rendering dei bordi e della barra del gripper della barra di controllo.

virtual void DoPaint(CDC* pDC);

Parametri

pDC
Punta al contesto del dispositivo da usare per il rendering dei bordi e del gripper della barra di controllo.

Osservazioni:

Eseguire l'override di questa funzione per personalizzare il comportamento di disegno della barra di controllo.

Un altro metodo di personalizzazione consiste nell'eseguire l'override delle DrawBorders funzioni e DrawGripper e aggiungere codice di disegno personalizzato per i bordi e il gripper. Poiché questi metodi vengono chiamati dal metodo predefinito DoPaint , non è necessario eseguire l'override di DoPaint .

CControlBar::D rawBorders

Chiamato dal framework per eseguire il rendering dei bordi della barra di controllo.

virtual void DrawBorders(
    CDC* pDC,
    CRect& rect);

Parametri

pDC
Punta al contesto del dispositivo da usare per il rendering dei bordi della barra di controllo.

rect
Oggetto CRect contenente le dimensioni della barra di controllo.

Osservazioni:

Eseguire l'override di questa funzione per personalizzare l'aspetto dei bordi della barra di controllo.

CControlBar::D rawGripper

Chiamato dal framework per eseguire il rendering del gripper della barra di controllo.

virtual void DrawGripper(
    CDC* pDC,
    const CRect& rect);

Parametri

pDC
Punta al contesto del dispositivo da usare per il rendering del gripper della barra di controllo.

rect
Oggetto CRect contenente le dimensioni del gripper della barra di controllo.

Osservazioni:

Eseguire l'override di questa funzione per personalizzare l'aspetto del gripper della barra di controllo.

CControlBar::EnableDocking

Chiamare questa funzione per abilitare l'ancoraggio di una barra di controllo.

void EnableDocking(DWORD dwDockStyle);

Parametri

dwDockStyle
Specifica se la barra di controllo supporta l'ancoraggio e i lati della finestra padre a cui è possibile ancorare la barra di controllo, se supportato. Può essere uno o più degli elementi seguenti:

  • CBRS_ALIGN_TOP Consente l'ancoraggio nella parte superiore dell'area client.

  • CBRS_ALIGN_BOTTOM Consente l'ancoraggio nella parte inferiore dell'area client.

  • CBRS_ALIGN_LEFT Consente l'ancoraggio sul lato sinistro dell'area client.

  • CBRS_ALIGN_RIGHT Consente l'ancoraggio sul lato destro dell'area client.

  • CBRS_ALIGN_ANY Consente l'ancoraggio su qualsiasi lato dell'area client.

  • CBRS_FLOAT_MULTI Consente di spostare più barre di controllo in un'unica finestra con mini frame.

Se 0 ,ovvero senza flag, la barra di controllo non verrà ancorata.

Osservazioni:

I lati specificati devono corrispondere a uno dei lati abilitati per l'ancoraggio nella finestra cornice di destinazione oppure la barra di controllo non può essere ancorata a tale finestra cornice.

CControlBar::GetBarStyle

Chiamare questa funzione per determinare quali impostazioni di CBRS_ (stili barra di controllo) sono attualmente impostate per la barra di controllo.

DWORD GetBarStyle();

Valore restituito

Impostazioni correnti CBRS_ (stili barra di controllo) per la barra di controllo. Per l'elenco completo degli stili disponibili, vedere CControlBar::SetBarStyle .

Osservazioni:

Non gestisce gli stili WS_ (stile finestra).

CControlBar::GetBorders

Restituisce i valori del bordo correnti per la barra di controllo.

CRect GetBorders() const;

Valore restituito

Oggetto CRect che contiene la larghezza corrente, espressa in pixel, di ogni lato dell'oggetto barra di controllo. Ad esempio, il valore del membro sinistro , dell'oggetto CRect , è la larghezza del bordo sinistro.

CControlBar::GetCount

Restituisce il numero di elementi non HWND nell'oggetto CControlBar .

int GetCount() const;

Valore restituito

Numero di elementi non HWND nell'oggetto CControlBar . Questa funzione restituisce 0 per un oggetto CDialogBar .

Osservazioni:

Il tipo di elemento dipende dall'oggetto derivato: riquadri per gli oggetti CStatusBar e pulsanti e separatori per gli oggetti CToolBar .

CControlBar::GetDockingFrame

Chiamare questa funzione membro per ottenere un puntatore alla finestra cornice corrente a cui è ancorata la barra di controllo.

CFrameWnd* GetDockingFrame() const;

Valore restituito

Puntatore a una finestra cornice in caso di esito positivo; in caso contrario NULL.

Se la barra di controllo non è ancorata a una finestra cornice, ovvero se la barra di controllo è mobile, questa funzione restituirà un puntatore al relativo CMiniFrameWnd padre.

Osservazioni:

Per altre informazioni sulle barre di controllo ancorabili, vedere CControlBar::EnableDocking e CFrameWnd::D ockControlBar.

CControlBar::IsFloating

Chiamare questa funzione membro per determinare se la barra di controllo è mobile o ancorata.

BOOL IsFloating() const;

Valore restituito

Diverso da zero se la barra di controllo è mobile; in caso contrario, 0.

Osservazioni:

Per modificare lo stato di una barra di controllo da ancorata a mobile, chiamare CFrameWnd::FloatControlBar.

CControlBar::m_bAutoDelete

Se diverso da zero, l'oggetto CControlBar viene eliminato quando la barra di controllo di Windows viene eliminata definitivamente.

BOOL m_bAutoDelete;

Osservazioni:

m_bAutoDelete è una variabile pubblica di tipo BOOL.

Un oggetto barra di controllo viene in genere incorporato in un oggetto finestra cornice. In questo caso, m_bAutoDelete è 0 perché l'oggetto barra di controllo incorporato viene eliminato definitivamente quando la finestra cornice viene eliminata definitivamente.

Impostare questa variabile su un valore diverso da zero se si alloca un CControlBar oggetto nell'heap e non si prevede di chiamare delete.

CControlBar::m_pInPlaceOwner

Proprietario sul posto della barra di controllo.

CWnd* m_pInPlaceOwner;

CControlBar::OnUpdateCmdUI

Questa funzione membro viene chiamata dal framework per aggiornare lo stato della barra degli strumenti o della barra di stato.

virtual void OnUpdateCmdUI(
    CFrameWnd* pTarget,
    BOOL bDisableIfNoHndler) = 0;

Parametri

pTarget
Punta alla finestra cornice principale dell'applicazione. Questo puntatore viene usato per il routing dei messaggi di aggiornamento.

bDisableIfNoHndler
Flag che indica se un controllo senza gestore di aggiornamento deve essere visualizzato automaticamente come disabilitato.

Osservazioni:

Per aggiornare un singolo pulsante o riquadro, utilizzare la macro ON_UPDATE_COMMAND_UI nella mappa dei messaggi per impostare un gestore di aggiornamento in modo appropriato. Per altre informazioni sull'uso di questa macro, vedere ON_UPDATE_COMMAND_UI .

OnUpdateCmdUI viene chiamato dal framework quando l'applicazione è inattiva. La finestra cornice da aggiornare deve essere una finestra figlio, almeno indirettamente, di una finestra cornice visibile. OnUpdateCmdUI è un override avanzato.

CControlBar::SetBarStyle

Chiamare questa funzione per impostare gli stili di CBRS_ desiderati per la barra di controllo.

void SetBarStyle(DWORD dwStyle);

Parametri

dwStyle
Stili desiderati per la barra di controllo. Può essere uno o più degli elementi seguenti:

  • CBRS_ALIGN_TOP Consente di ancorare la barra di controllo all'inizio dell'area client di una finestra cornice.

  • CBRS_ALIGN_BOTTOM Consente di ancorare la barra di controllo nella parte inferiore dell'area client di una finestra cornice.

  • CBRS_ALIGN_LEFT Consente di ancorare la barra di controllo sul lato sinistro dell'area client di una finestra cornice.

  • CBRS_ALIGN_RIGHT Consente di ancorare la barra di controllo sul lato destro dell'area client di una finestra cornice.

  • CBRS_ALIGN_ANY Consente di ancorare la barra di controllo a qualsiasi lato dell'area client di una finestra cornice.

  • CBRS_BORDER_TOP fa sì che un bordo venga disegnato sul bordo superiore della barra di controllo quando sarebbe visibile.

  • CBRS_BORDER_BOTTOM fa sì che un bordo venga disegnato sul bordo inferiore della barra di controllo quando sarebbe visibile.

  • CBRS_BORDER_LEFT fa sì che un bordo venga disegnato sul bordo sinistro della barra di controllo quando sarebbe visibile.

  • CBRS_BORDER_RIGHT Fa sì che un bordo venga disegnato sul bordo destro della barra di controllo quando sarebbe visibile.

  • CBRS_FLOAT_MULTI Consente di spostare più barre di controllo in un'unica finestra con mini frame.

  • CBRS_TOOLTIPS Fa sì che vengano visualizzati i suggerimenti degli strumenti per la barra di controllo.

  • CBRS_FLYBY Fa sì che il testo del messaggio venga aggiornato contemporaneamente ai suggerimenti degli strumenti.

  • CBRS_GRIPPER Fa sì che un gripper, simile a quello utilizzato sulle bande di un CReBar oggetto, venga disegnato per qualsiasi CControlBarclasse derivata da .

Osservazioni:

Non influisce sulle impostazioni WS_ (stile finestra).

CControlBar::SetBorders

Chiamare questa funzione per impostare le dimensioni dei bordi della barra di controllo.

void SetBorders(
    int cxLeft = 0,
    int cyTop = 0,
    int cxRight = 0,
    int cyBottom = 0);

void SetBorders(LPCRECT lpRect);

Parametri

cxLeft
Larghezza in pixel del bordo sinistro della barra di controllo.

cyTop
Altezza in pixel del bordo superiore della barra di controllo.

cxRight
Larghezza in pixel del bordo destro della barra di controllo.

cyBottom
Altezza (in pixel) del bordo inferiore della barra di controllo.

lpRect
Puntatore a un oggetto CRect che contiene la larghezza corrente in pixel di ogni bordo dell'oggetto barra di controllo.

Esempio

L'esempio di codice seguente imposta i bordi superiore e inferiore della barra di controllo su 5 pixel e i bordi sinistro e destro su 2 pixel:

CControlBar &m_myControlBar = m_Rebar;
m_myControlBar.SetBorders(2, 5, 2, 5);

CControlBar::SetInPlaceOwner

Modifica il proprietario sul posto di una barra di controllo.

void SetInPlaceOwner(CWnd* pWnd);

Parametri

pWnd
Puntatore a un oggetto CWnd.

Osservazioni:

Vedi anche

MFC Sample CTRLBARS
Classe CWnd
Grafico della gerarchia
Classe CToolBar
Classe CDialogBar
Classe CStatusBar
Classe CReBar