Condividi tramite


Classe CStatusBarCtrl

Fornisce la funzionalità del controllo barra di stato comune di Windows.

Sintassi

class CStatusBarCtrl : public CWnd

Membri

Costruttori pubblici

Nome Descrizione
CStatusBarCtrl::CStatusBarCtrl Costruisce un oggetto CStatusBarCtrl.

Metodi pubblici

Nome Descrizione
CStatusBarCtrl::Create Crea un controllo barra di stato e lo collega a un CStatusBarCtrl oggetto .
CStatusBarCtrl::CreateEx Crea un controllo barra di stato con gli stili estesi di Windows specificati e lo associa a un CStatusBarCtrl oggetto .
CStatusBarCtrl::D rawItem Chiamato quando cambia un aspetto visivo di un controllo barra di stato di disegno proprietario.
CStatusBarCtrl::GetBorders Recupera le larghezze correnti dei bordi orizzontali e verticali di un controllo barra di stato.
CStatusBarCtrl::GetIcon Recupera l'icona per una parte (nota anche come riquadro) nel controllo barra di stato corrente.
CStatusBarCtrl::GetParts Recupera un conteggio delle parti in un controllo barra di stato.
CStatusBarCtrl::GetRect Recupera il rettangolo di delimitazione di una parte in un controllo barra di stato.
CStatusBarCtrl::GetText Recupera il testo dalla parte specificata di un controllo barra di stato.
CStatusBarCtrl::GetTextLength Recuperare la lunghezza, in caratteri, del testo dalla parte specificata di un controllo barra di stato.
CStatusBarCtrl::GetTipText Recupera il testo della descrizione comando per un riquadro in una barra di stato.
CStatusBarCtrl::IsSimple Controlla un controllo finestra di stato per determinare se è in modalità semplice.
CStatusBarCtrl::SetBkColor Imposta il colore di sfondo in una barra di stato.
CStatusBarCtrl::SetIcon Imposta l'icona per un riquadro in una barra di stato.
CStatusBarCtrl::SetMinHeight Imposta l'altezza minima dell'area di disegno di un controllo barra di stato.
CStatusBarCtrl::SetParts Imposta il numero di parti in un controllo barra di stato e la coordinata del bordo destro di ogni parte.
CStatusBarCtrl::SetSimple Specifica se un controllo barra di stato visualizza testo semplice o visualizza tutte le parti di controllo impostate da una chiamata precedente a SetParts.
CStatusBarCtrl::SetText Imposta il testo nella parte specificata di un controllo barra di stato.
CStatusBarCtrl::SetTipText Imposta il testo della descrizione comando per un riquadro in una barra di stato.

Osservazioni:

Un "controllo barra di stato" è una finestra orizzontale, in genere visualizzata nella parte inferiore di una finestra padre, in cui un'applicazione può visualizzare vari tipi di informazioni sullo stato. Il controllo barra di stato può essere diviso in parti per visualizzare più tipi di informazioni.

Questo controllo (e quindi la CStatusBarCtrl classe ) è disponibile solo per i programmi in esecuzione in Windows 95/98 e Windows NT versione 3.51 e successive.

Per altre informazioni sull'uso CStatusBarCtrldi , vedere Controlli e uso di CStatusBarCtrl.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CStatusBarCtrl

Requisiti

Intestazione: afxcmn.h

CStatusBarCtrl::Create

Crea un controllo barra di stato e lo collega a un CStatusBarCtrl oggetto .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametri

dwStyle
Specifica lo stile del controllo barra di stato. Applicare qualsiasi combinazione di stili di controllo barra di stato elencati in Stili di controllo comuni in Windows SDK. Questo parametro deve includere lo stile WS_CHILD. Deve includere anche lo stile WS_VISIBLE.

rect
Specifica le dimensioni e la posizione del controllo barra di stato. Può essere un oggetto CRect o una struttura RECT .

pParentWnd
Specifica la finestra padre del controllo barra di stato, in genere un oggetto CDialog. Non deve essere NULL.

nID
Specifica l'ID del controllo barra di stato.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Si costruisce un oggetto CStatusBarCtrl in due passaggi. Chiamare innanzitutto il costruttore e quindi chiamare Create, che crea il controllo barra di stato e lo collega all'oggetto CStatusBarCtrl .

La posizione predefinita di una finestra di stato si trova nella parte inferiore della finestra padre, ma è possibile specificare lo stile CCS_TOP in modo che venga visualizzato nella parte superiore dell'area client della finestra padre. È possibile specificare lo stile SBARS_SIZEGRIP per includere un grip di ridimensionamento alla fine destra della finestra di stato. Non è consigliabile combinare gli stili CCS_TOP e SBARS_SIZEGRIP, perché il grip di ridimensionamento risultante non è funzionale anche se il sistema lo disegna nella finestra di stato.

Per creare una barra di Createstato con stili di finestra estesi, chiamare CStatusBarCtrl::CreateEx anziché .

Esempio

VERIFY(m_wndSBC.Create(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP,
                       CRect(0, 0, 0, 0), this, IDC_STATUSBARCTRL));

CStatusBarCtrl::CreateEx

Crea un controllo (una finestra figlio) e lo associa all'oggetto CStatusBarCtrl .

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametri

dwExStyle
Specifica lo stile esteso del controllo da creare. Per un elenco degli stili di Windows estesi, vedere il parametro dwExStyle per CreateWindowEx in Windows SDK.

dwStyle
Specifica lo stile del controllo barra di stato. Applicare qualsiasi combinazione di stili di controllo barra di stato elencati in Stili di controllo comuni in Windows SDK. Questo parametro deve includere lo stile WS_CHILD. Deve includere anche lo stile WS_VISIBLE.

rect
Riferimento a una struttura RECT che descrive le dimensioni e la posizione della finestra da creare, nelle coordinate client di pParentWnd.

pParentWnd
Puntatore alla finestra padre del controllo.

nID
ID finestra figlio del controllo.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Usare CreateEx invece di Crea per applicare stili di Windows estesi, specificati dalla prefazione dello stile esteso di Windows WS_EX_.

CStatusBarCtrl::CStatusBarCtrl

Costruisce un oggetto CStatusBarCtrl.

CStatusBarCtrl();

CStatusBarCtrl::D rawItem

Chiamato dal framework quando cambia un aspetto visivo di un controllo barra di stato di disegno proprietario.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parametri

lpDrawItemStruct
Puntatore lungo a una struttura DRAWITEMSTRUCT contenente informazioni sul tipo di disegno richiesto.

Osservazioni:

Il itemAction membro della DRAWITEMSTRUCT struttura definisce l'azione di disegno da eseguire.

Per impostazione predefinita, questa funzione membro non esegue alcuna operazione. Eseguire l'override di questa funzione membro per implementare il disegno per un oggetto di disegno CStatusBarCtrl proprietario.

L'applicazione deve ripristinare tutti gli oggetti GDI (Graphics Device Interface) selezionati per il contesto di visualizzazione fornito in lpDrawItemStruct prima che questa funzione membro termini.

CStatusBarCtrl::GetBorders

Recupera le larghezze correnti del controllo barra di stato dei bordi orizzontali e verticali e dello spazio tra rettangoli.

BOOL GetBorders(int* pBorders) const;

BOOL GetBorders(
    int& nHorz,
    int& nVert,
    int& nSpacing) const;

Parametri

pBorders
Indirizzo di una matrice integer con tre elementi. Il primo elemento riceve la larghezza del bordo orizzontale, la seconda riceve la larghezza del bordo verticale e la terza riceve la larghezza del bordo tra rettangoli.

nHorz
Riferimento a un numero intero che riceve la larghezza del bordo orizzontale.

nVert
Riferimento a un numero intero che riceve la larghezza del bordo verticale.

nSpacing
Riferimento a un numero intero che riceve la larghezza del bordo tra rettangoli.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Questi bordi determinano la spaziatura tra il bordo esterno del controllo e i rettangoli all'interno del controllo che contengono testo.

Esempio

RECT rectPane1;
VERIFY(m_wndSBC.GetRect(1, &rectPane1));

int borderArray[3];
VERIFY(m_wndSBC.GetBorders(borderArray));

int nHorz, nVert, nSpacing;
VERIFY(m_wndSBC.GetBorders(nHorz, nVert, nSpacing));

CStatusBarCtrl::GetIcon

Recupera l'icona per una parte (nota anche come riquadro) nel controllo barra di stato corrente.

HICON GetIcon(int iPart) const;

Parametri

iPart
[in] Indice in base zero della parte che contiene l'icona da recuperare. Se questo parametro è -1, si presuppone che la barra di stato sia una barra di stato in modalità semplice.

Valore restituito

Handle dell'icona se il metodo ha esito positivo; in caso contrario, NULL.

Osservazioni:

Questo metodo invia il messaggio di SB_GETICON , descritto in Windows SDK.

Un controllo barra di stato è costituito da una riga di riquadri di output di testo, noti anche come parti. Per altre informazioni sulla barra di stato, vedere Implementazione della barra di stato in MFC e Impostazione della modalità di un oggetto CStatusBarCtrl.

Esempio

Il primo esempio di codice definisce una variabile, m_statusBar, usata per accedere al controllo della barra di stato corrente. Questa variabile viene usata nell'esempio riportato di seguito.

public:
CStatusBarCtrl m_statusBar;

Nell'esempio di codice seguente un'icona viene copiata in due riquadri del controllo barra di stato corrente. In una sezione precedente dell'esempio di codice è stato creato un controllo barra di stato con tre riquadri e quindi è stata aggiunta un'icona al primo riquadro. Questo esempio recupera l'icona dal primo riquadro e quindi la aggiunge al secondo e al terzo riquadro.

// Get the icon from pane 1 and set it in panes 2 and 3.
HICON hIcon = m_statusBar.GetIcon(0);
m_statusBar.SetIcon(1, hIcon);
m_statusBar.SetIcon(2, hIcon);

CStatusBarCtrl::GetParts

Recupera un conteggio delle parti in un controllo barra di stato.

int GetParts(
    int nParts,
    int* pParts) const;

Parametri

nParts
Numero di parti per cui recuperare le coordinate. Se questo parametro è maggiore del numero di parti nel controllo, il messaggio recupera le coordinate solo per le parti esistenti.

pParts
Indirizzo di una matrice integer con lo stesso numero di elementi del numero di parti specificato da nParts. Ogni elemento nella matrice riceve la coordinata client del bordo destro della parte corrispondente. Se un elemento è impostato su - 1, la posizione del bordo destro per tale parte si estende al bordo destro della barra di stato.

Valore restituito

Numero di parti nel controllo in caso di esito positivo o zero in caso contrario.

Osservazioni:

Questa funzione membro recupera anche la coordinata del bordo destro del numero specificato di parti.

Esempio

int pParts[2];

int nParts = m_wndSBC.GetParts(2, pParts);

CStatusBarCtrl::GetRect

Recupera il rettangolo di delimitazione di una parte in un controllo barra di stato.

BOOL GetRect(
    int nPane,
    LPRECT lpRect) const;

Parametri

nPane
Indice in base zero della parte il cui rettangolo di delimitazione deve essere recuperato.

lpRect
Indirizzo di una struttura RECT che riceve il rettangolo di delimitazione.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Esempio

CRect rectPane1;

VERIFY(m_wndSBC.GetRect(1, &rectPane1));

CStatusBarCtrl::GetText

Recupera il testo dalla parte specificata di un controllo barra di stato.

CString GetText(
    int nPane,
    int* pType = NULL) const;

int GetText(
    LPCTSTR lpszText,
    int nPane,
    int* pType = NULL) const;

Parametri

lpszText
Indirizzo del buffer che riceve il testo. Questo parametro è una stringa con terminazione Null.

nPane
Indice in base zero della parte da cui recuperare il testo.

pType
Puntatore a un numero intero che riceve le informazioni sul tipo. Il tipo può essere uno dei valori seguenti:

  • 0 Il testo viene disegnato con un bordo da visualizzare inferiore al piano della barra di stato.

  • SBT_NOBORDERS Il testo viene disegnato senza bordi.

  • SBT_POPOUT Il testo viene disegnato con un bordo da visualizzare più alto del piano della barra di stato.

  • SBT_OWNERDRAW Se il testo ha il tipo di disegno SBT_OWNERDRAW, pType riceve questo messaggio e restituisce il valore a 32 bit associato al testo anziché alla lunghezza e al tipo di operazione.

Valore restituito

Lunghezza, in caratteri, del testo o CString contenente il testo corrente.

Esempio

int nType;
TCHAR *pszPaneOneText;

pszPaneOneText = new TCHAR[m_wndSBC.GetTextLength(1, &nType) + 1];
int nTextLength = m_wndSBC.GetText(pszPaneOneText, 1, &nType);

switch (nType)
{
case 0:
   // Text is drawn with a border to appear lower than the
   // plane of the status bar
   break;
case SBT_NOBORDERS:
   // text is drawn without borders
   break;
case SBT_OWNERDRAW:
   // Text is drawn by the parent window
   break;
case SBT_POPOUT:
   // Text is drawn with a border to appear higher than the
   // plane of the status bar
   break;
}

delete pszPaneOneText;

CStatusBarCtrl::GetTextLength

Recupera la lunghezza, in caratteri, del testo dalla parte specificata di un controllo barra di stato.

int GetTextLength(
    int nPane,
    int* pType = NULL) const;

Parametri

nPane
Indice in base zero della parte da cui recuperare il testo.

pType
Puntatore a un numero intero che riceve le informazioni sul tipo. Il tipo può essere uno dei valori seguenti:

  • 0 Il testo viene disegnato con un bordo da visualizzare inferiore al piano della barra di stato.

  • SBT_NOBORDERS Il testo viene disegnato senza bordi.

  • SBT_OWNERDRAW Il testo viene disegnato dalla finestra padre.

  • SBT_POPOUT Il testo viene disegnato con un bordo da visualizzare più alto del piano della barra di stato.

Valore restituito

Lunghezza, in caratteri, del testo.

Esempio

int nType;
int nLength = m_wndSBC.GetTextLength(0, &nType);

switch (nType)
{
case 0:
   // Text is drawn with a border to appear lower than the
   // plane of the status bar
   break;
case SBT_NOBORDERS:
   // text is drawn without borders
   break;
case SBT_OWNERDRAW:
   // Text is drawn by the parent window
   break;
case SBT_POPOUT:
   // Text is drawn with a border to appear higher than the
   // plane of the status bar
   break;
}

CStatusBarCtrl::GetTipText

Recupera il testo della descrizione comando per un riquadro in una barra di stato.

CString GetTipText(int nPane) const;

Parametri

nPane
Indice in base zero del riquadro barra di stato per ricevere il testo della descrizione comando.

Valore restituito

Oggetto CString contenente il testo da utilizzare nella descrizione comando.

Osservazioni:

Questa funzione membro implementa il comportamento del messaggio Win32 SB_GETTIPTEXT, come descritto in Windows SDK.

Esempio

CString csPane0TipText = m_wndSBC.GetTipText(0);

CStatusBarCtrl::IsSimple

Controlla un controllo finestra di stato per determinare se è in modalità semplice.

BOOL IsSimple() const;

Valore restituito

Diverso da zero se il controllo finestra di stato è in modalità semplice; in caso contrario, zero.

Osservazioni:

Questa funzione membro implementa il comportamento del messaggio Win32 SB_ISSIMPLE, come descritto in Windows SDK.

CStatusBarCtrl::SetBkColor

Imposta il colore di sfondo in una barra di stato.

COLORREF SetBkColor(COLORREF cr);

Parametri

Cr
Valore COLORREF che specifica il nuovo colore di sfondo. Specificare il valore CLR_DEFAULT per fare in modo che la barra di stato usi il colore di sfondo predefinito.

Valore restituito

Valore COLORREF che rappresenta il colore di sfondo predefinito precedente.

Osservazioni:

Questa funzione membro implementa il comportamento del messaggio Win32 SB_SETBKCOLOR, come descritto in Windows SDK.

Esempio

m_wndSBC.SetBkColor(RGB(0, 0, 250));

HICON hIcon = AfxGetApp()->LoadIcon(IDI_PANE_0_ICON);
VERIFY(hIcon);
VERIFY(m_wndSBC.SetIcon(0, hIcon));

CStatusBarCtrl::SetIcon

Imposta l'icona per un riquadro in una barra di stato.

BOOL SetIcon(
    int nPane,
    HICON hIcon);

Parametri

nPane
Indice in base zero del riquadro che riceverà l'icona. Se questo parametro è -1, si presuppone che la barra di stato sia una barra di stato semplice.

hIcon
Handle per l'icona da impostare. Se questo valore è NULL, l'icona viene rimossa dalla parte.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Questa funzione membro implementa il comportamento del messaggio Win32 SB_SETICON, come descritto in Windows SDK.

Esempio

Vedere l'esempio per CStatusBarCtrl::SetBkColor.

CStatusBarCtrl::SetMinHeight

Imposta l'altezza minima dell'area di disegno di un controllo barra di stato.

void SetMinHeight(int nMin);

Parametri

nMin
Altezza minima, in pixel, del controllo.

Osservazioni:

L'altezza minima è la somma di nMin e due volte la larghezza, in pixel, del bordo verticale del controllo barra di stato.

Esempio

m_wndSBC.SetMinHeight(40);

CStatusBarCtrl::SetParts

Imposta il numero di parti in un controllo barra di stato e la coordinata del bordo destro di ogni parte.

BOOL SetParts(
    int nParts,
    int* pWidths);

Parametri

nParts
Numero di parti da impostare. Il numero di parti non può essere maggiore di 255.

pWidths
Indirizzo di una matrice integer con lo stesso numero di elementi delle parti specificate da nParts. Ogni elemento nella matrice specifica la posizione, nelle coordinate client, del bordo destro della parte corrispondente. Se un elemento è - 1, la posizione del bordo destro per tale parte si estende al bordo destro del controllo.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Esempio

const int c_nParts = 4;
CRect rect;

m_wndSBC.GetClientRect(&rect);
int aWidths[c_nParts] = {rect.right - 300, rect.right - 200, rect.right - 100,
                         -1};

VERIFY(m_wndSBC.SetParts(c_nParts, aWidths));

CStatusBarCtrl::SetSimple

Specifica se un controllo barra di stato visualizza testo semplice o visualizza tutte le parti di controllo impostate da una chiamata precedente a SetParts.

BOOL SetSimple(BOOL bSimple = TRUE);

Parametri

bSimple
[in] Flag di tipo visualizzato. Se questo parametro è TRUE, il controllo visualizza testo semplice; se è FALSE, vengono visualizzate più parti.

Valore restituito

Restituisce sempre 0.

Osservazioni:

Se l'applicazione modifica il controllo barra di stato da non semplice a semplice o viceversa, il sistema ridisegna immediatamente il controllo.

CStatusBarCtrl::SetText

Imposta il testo nella parte specificata di un controllo barra di stato.

BOOL SetText(
    LPCTSTR lpszText,
    int nPane,
    int nType);

Parametri

lpszText
Indirizzo di una stringa con terminazione null che specifica il testo da impostare. Se nType è SBT_OWNERDRAW, lpszText rappresenta 32 bit di dati.

nPane
Indice in base zero della parte da impostare. Se questo valore è 255, si presuppone che il controllo barra di stato sia un controllo semplice solo con una parte.

nType
Tipo di operazione di disegno. Per un elenco dei possibili valori, vedere SB_SETTEXT messaggio .

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Il messaggio invalida la parte del controllo che è stata modificata, causando la visualizzazione del nuovo testo quando il controllo riceverà il messaggio di WM_PAINT.

Esempio

VERIFY(m_wndSBC.SetText(_T("Text For Pane 1"), 1, 0));

CStatusBarCtrl::SetTipText

Imposta il testo della descrizione comando per un riquadro in una barra di stato.

void SetTipText(
    int nPane,
    LPCTSTR pszTipText);

Parametri

nPane
Indice in base zero del riquadro barra di stato per ricevere il testo della descrizione comando.

pszTipText
Puntatore a una stringa contenente il testo della descrizione comando.

Osservazioni:

Questa funzione membro implementa il comportamento del messaggio Win32 SB_SETTIPTEXT, come descritto in Windows SDK.

Esempio

m_wndSBC.SetTipText(0, _T("This is Pane 0"));

Vedi anche

Classe CWnd
Grafico della gerarchia
Classe CToolBarCtrl