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:
Nota tecnica 31: Barre di controllo.
Gerarchia di ereditarietà
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 qualsiasiCControlBar
classe 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