Udostępnij za pośrednictwem


Aktualizowanie tekstu w okienku paska stanu

W tym artykule wyjaśniono, jak zmienić tekst wyświetlany w okienku paska stanu MFC. Pasek stanu — obiekt okna klasy CStatusBar — zawiera kilka "okienk". Każde okienko to prostokątny obszar paska stanu, którego można użyć do wyświetlania informacji. Na przykład wiele aplikacji wyświetla stan blokady CAPS LOCK, NUM LOCK i innych kluczy w okienkach po prawej stronie. Aplikacje często wyświetlają również tekst informacyjny w okienku po lewej stronie (okienko 0), czasami nazywane "okienko komunikatów". Na przykład domyślny pasek stanu MFC używa okienka komunikatów do wyświetlania ciągu objaśniającego aktualnie wybrany element menu lub przycisk paska narzędzi. Rysunek na pasku stanu przedstawia pasek stanu z aplikacji utworzonej przez Kreatora aplikacji MFC.

Domyślnie MFC nie włącza CStatusBar okienka podczas tworzenia okienka. Aby aktywować okienko, należy użyć makra ON_UPDATE_COMMAND_UI dla każdego okienka na pasku stanu i zaktualizować okienka. Ponieważ okienka nie wysyłają komunikatów WM_COMMAND (nie są one jak przyciski paska narzędzi), musisz wpisać kod ręcznie.

Załóżmy na przykład, że jedno okienko ma ID_INDICATOR_PAGE jako identyfikator polecenia i że zawiera bieżący numer strony w dokumencie. Poniższa procedura opisuje sposób tworzenia nowego okienka na pasku stanu.

Aby utworzyć nowe okienko

  1. Zdefiniuj identyfikator polecenia okienka.

    W menu Widok kliknij pozycję Widok zasobów. Kliknij prawym przyciskiem myszy zasób projektu i kliknij pozycję Symbole zasobów. W oknie dialogowym Symbole zasobów kliknij pozycję New. Wpisz nazwę identyfikatora polecenia: na przykład ID_INDICATOR_PAGE. Określ wartość identyfikatora lub zaakceptuj wartość sugerowaną przez okno dialogowe Symbole zasobu. Na przykład w polu ID_INDICATOR_PAGEzaakceptuj wartość domyślną. Zamknij okno dialogowe Symbole zasobów.

  2. Zdefiniuj ciąg domyślny do wyświetlenia w okienku.

    Po otwarciu widoku zasobu kliknij dwukrotnie tabelę ciągów w oknie zawierającym listę typów zasobów dla aplikacji. Po otwarciu edytora tabel ciągów wybierz pozycję Nowy ciąg z menu Wstaw . Wybierz identyfikator polecenia okienka (na przykład ID_INDICATOR_PAGE) i wpisz domyślną wartość ciągu, taką jak "Strona". Zamknij edytor ciągów. (Aby uniknąć błędu kompilatora, potrzebny jest ciąg domyślny).

  3. Dodaj okienko do tablicy wskaźników .

    W pliku MAINFRM. CPP, znajdź tablicę wskaźników . Ta tablica wyświetla identyfikatory poleceń dla wszystkich wskaźników paska stanu w kolejności od lewej do prawej. W odpowiednim momencie w tablicy wprowadź identyfikator polecenia okienka, jak pokazano tutaj dla ID_INDICATOR_PAGEpolecenia :

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

Zalecanym sposobem wyświetlania tekstu w okienku jest wywołanie SetText funkcji składowej klasy CCmdUI w funkcji obsługi aktualizacji dla okienka. Na przykład możesz skonfigurować zmienną całkowitą m_nPage zawierającą bieżący numer strony i użyć SetText polecenia , aby ustawić tekst okienka na wersję ciągu tego numeru.

Uwaga

Zalecane SetText jest podejście. To zadanie można wykonać na nieco niższym poziomie przez wywołanie funkcji SetPaneTextskładowej CStatusBar . Mimo to nadal potrzebna jest procedura obsługi aktualizacji. Bez takiego programu obsługi dla okienka usługa MFC automatycznie wyłącza okienko, wymazując jego zawartość.

Poniższa procedura przedstawia sposób używania funkcji obsługi aktualizacji do wyświetlania tekstu w okienku.

Aby utworzyć tekst wyświetlany w okienku

  1. Dodaj program obsługi aktualizacji poleceń dla polecenia .

    Ręcznie dodaj prototyp programu obsługi, jak pokazano tutaj (w pliku ID_INDICATOR_PAGE MAINFRM. H):

    afx_msg void OnUpdatePage(CCmdUI* pCmdUI);
    
  2. W odpowiednim pliku . Plik CPP, dodaj definicję programu obsługi, jak pokazano tutaj ID_INDICATOR_PAGE (w mainFRM. CPP):

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

    Ostatnie trzy wiersze tego programu obsługi to kod, który wyświetla tekst.

  3. Na odpowiedniej mapie komunikatów dodaj makro ON_UPDATE_COMMAND_UI, jak pokazano tutaj ID_INDICATOR_PAGE (w mainFRM. CPP):

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

Po zdefiniowaniu wartości zmiennej składowej m_nPage (klasy CMainFrame) ta technika powoduje, że numer strony będzie wyświetlany w okienku podczas przetwarzania bezczynności w taki sam sposób, jak aplikacja aktualizuje inne wskaźniki. Jeśli m_nPage się zmieni, ekran zmieni się podczas następnej pętli bezczynności.

Co chcesz dowiedzieć się więcej o

Zobacz też

Implementacja paska stanu w MFC
Klasa CStatusBar