Aggiornamento del testo di un riquadro barra di stato

Questo articolo illustra come modificare il testo visualizzato in un riquadro della barra di stato MFC. Una barra di stato, ovvero un oggetto finestra della classe CStatusBar , contiene diversi "riquadri". Ogni riquadro è un'area rettangolare della barra di stato che è possibile usare per visualizzare le informazioni. Ad esempio, molte applicazioni visualizzano lo stato di C piattaforma di strumenti analitici LOCK, NUM LOCK e altre chiavi nei riquadri più a destra. Le applicazioni spesso visualizzano testo informativo nel riquadro più a sinistra (riquadro 0), talvolta denominato "riquadro messaggi". Ad esempio, la barra di stato MFC predefinita usa il riquadro dei messaggi per visualizzare una stringa che spiega la voce di menu o il pulsante della barra degli strumenti attualmente selezionato. La figura in Barre di stato mostra una barra di stato da un'applicazione MFC creata dalla Creazione guidata applicazione.

Per impostazione predefinita, MFC non abilita un CStatusBar riquadro quando crea il riquadro. Per attivare un riquadro, è necessario utilizzare la macro ON_UPDATE_COMMAND_UI per ogni riquadro sulla barra di stato e aggiornare i riquadri. Poiché i riquadri non inviano WM_COMMAND messaggi (non sono come i pulsanti della barra degli strumenti), è necessario digitare il codice manualmente.

Si supponga, ad esempio, che un riquadro abbia ID_INDICATOR_PAGE come identificatore di comando e che contenga il numero di pagina corrente in un documento. La procedura seguente descrive come creare un nuovo riquadro nella barra di stato.

Per creare un nuovo riquadro

  1. Definire l'ID comando del riquadro.

    Scegliere Visualizzazione risorse dal menu Visualizza. Fare clic con il pulsante destro del mouse sulla risorsa del progetto e scegliere Simboli risorsa. Nella finestra di dialogo Simboli risorsa fare clic su New. Digitare un nome ID comando, ID_INDICATOR_PAGEad esempio . Specificare un valore per l'ID o accettare il valore suggerito dalla finestra di dialogo Simboli risorsa. Ad esempio, per ID_INDICATOR_PAGEaccettare il valore predefinito. Chiudere la finestra di dialogo Simboli risorsa.

  2. Definire una stringa predefinita da visualizzare nel riquadro.

    Con Visualizzazione risorse aperta, fare doppio clic su Tabella stringhe nella finestra in cui sono elencati i tipi di risorse per l'applicazione. Con l'editor tabella stringhe aperto scegliere Nuova stringa dal menu Inserisci . Selezionare l'ID comando del riquadro (ad esempio, ID_INDICATOR_PAGE) e digitare un valore stringa predefinito, ad esempio "Page". Chiudere l'editor di stringhe. È necessaria una stringa predefinita per evitare un errore del compilatore.

  3. Aggiungere il riquadro alla matrice di indicatori .

    Nel file MAINFRM. CPP, individuare la matrice di indicatori . Questa matrice elenca gli ID comando per tutti gli indicatori della barra di stato, in ordine da sinistra a destra. Nel punto appropriato nella matrice immettere l'ID comando del riquadro, come illustrato di seguito per ID_INDICATOR_PAGE:

    static UINT indicators[] =
    {
       ID_SEPARATOR,           // status line indicator
       ID_INDICATOR_CAPS,
       ID_INDICATOR_NUM,
       ID_INDICATOR_SCRL,
       ID_INDICATOR_PAGE,
    };
    

Il modo consigliato per visualizzare il testo in un riquadro consiste nel chiamare la SetText funzione membro della classe CCmdUI in una funzione del gestore di aggiornamento per il riquadro. Ad esempio, è possibile impostare una variabile integer m_nPage che contiene il numero di pagina corrente e usare SetText per impostare il testo del riquadro su una versione stringa di tale numero.

Nota

L'approccio SetText è consigliato. È possibile eseguire questa attività a un livello leggermente inferiore chiamando la CStatusBar funzione SetPaneTextmembro . Anche in questo caso, è ancora necessario un gestore di aggiornamento. Senza un gestore di questo tipo per il riquadro, MFC disabilita automaticamente il riquadro, cancellandone il contenuto.

La procedura seguente illustra come usare una funzione del gestore di aggiornamento per visualizzare il testo in un riquadro.

Per visualizzare il testo di un riquadro

  1. Aggiungere un gestore di aggiornamento dei comandi per il comando .

    Aggiungere manualmente un prototipo per il gestore, come illustrato qui per ID_INDICATOR_PAGE (in MAINFRM. H):

    afx_msg void OnUpdatePage(CCmdUI* pCmdUI);
    
  2. Nell'oggetto appropriato. File CPP, aggiungere la definizione del gestore, come illustrato qui per ID_INDICATOR_PAGE (in MAINFRM. CPP:

    void CMainFrame::OnUpdatePage(CCmdUI* pCmdUI)
    {
       pCmdUI->Enable();
       CString strPage;
       strPage.Format(_T("Page %d"), m_nPage);
       pCmdUI->SetText(strPage);
    }
    

    Le ultime tre righe di questo gestore sono il codice che visualizza il testo.

  3. Nella mappa dei messaggi appropriata aggiungere la macro ON_UPDATE_COMMAND_UI, come illustrato qui per ID_INDICATOR_PAGE (in MAINFRM. CPP:

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

Dopo aver definito il valore della variabile membro m_nPage (di classe CMainFrame), questa tecnica fa sì che il numero di pagina venga visualizzato nel riquadro durante l'elaborazione inattiva nello stesso modo in cui l'applicazione aggiorna altri indicatori. Se m_nPage cambia, la visualizzazione cambia durante il ciclo di inattività successivo.

Cosa vuoi sapere di più su

Vedi anche

Implementazione della barra di stato in MFC
Classe CStatusBar