Krzysztof Mossakowski
Materiały dla studentów
 

Status Bar
(klasa CStatusBar)

MFC
Spis treści

Status Bar
klasa CStatusBar
Informacje ogólne
Klasa CStatusBar
Hierarchia klas

  •  Informacje ogólne

    • Status Bar to odmiana Control Bar przeznaczona zwykle do wyświetlania informacji (np. opisu wybranej pozycji menu) lub wskaźników stanu aplikacji (np. stanu klawisza CapsLock)

    • Składa się z paneli, które w widoczny sposób są od siebie oddzielone

      • każdy panel może zawierać tekst lub bitmapy

    • Od wersji 4.0 MFC Status Bars są implementowane w oparciu o standardowe kontrolki Windows przy pomocy klasy CStatusBar

      • stare Status Bars są dostępne przy pomocy klasy COldStatusBar

[początek strony]

  •  Klasa CStatusBar

    • Daje większość możliwości dostępnych dla Status Bar w Windows

      • przy pomocy metody CStatusBar::GetStatusBarCtrl istnieje możliwość bezpośredniej zmiany kontrolki Status Bar

      • kontrolka Windows Status Bar ma w MFC swój interfejs w postaci klasy CStatusBarCtrl

    • Standardowo w aplikacji MFC z wykorzystaniem architektury dokument/widok jest jeden Status Bar, automatycznie tworzony i niszczony wraz z oknem nadrzędnym aplikacji

    • Istnieją trzy sposoby uaktualnienia informacji na obiekcie Status Bar:

      • wykorzystanie mechizmu MFC do obsługi komunikatów i poleceń
        - ponieważ panele Status Bar nie wysyłają komunikatu WM_COMMAND, to nie można skorzystać z pomocy ClassWizard i ręcznie trzeba dodać wpis w mapie komunikatów łączący makrem ON_UPDATE_COMMAND_UI funkcję obsługi z jednym panelem
        - wszystkie ręczne wpisy do mapy komunikatów powinny być umieszczane poza sekcją zarządzaną przez ClassWizard

      • wykorzystanie metody CStatusBar::SetWindowText
        - w ten sposób można zmienić tylko tekst na pierwszym panelu (z numerem 0)

      • wykorzystanie metody CStatusBar::SetPaneText
        - można zmienić tekst dowolnego panela

    • Schemat tworzenia nowego Status Bar

      • utworzyć obiekt klasy CStatusBar (lub potomnej)

      • wywołać CStatusBar::Create lub CStatusBar::CreateEx

      • przypisać identyfikatory panelom przy użyciu funkcji CStatusBar::SetIndicators

    • Schemat dodawania panela do Status Bar

      • zdefiniować identyfikator dla panela

      • zdefiniować w zasobach domyślny tekst dla panela (musi mieć identyfikator panela)

      • dodać identyfikator do tablicy zdefiniowanej w kodzie jako: 
        static UINT BASED_CODE indicators [] = { ... };

      • zalecanym sposobem zmiany tekstu panela jest wywołanie metody CCmdUI::SetText w funkcji obsługi uaktualnienia stanu (przypisanej makrem ON_UPDATE_COMMAND_UI)

[początek strony]

  •  Hierarchia klas

    CObject - informacja w trakcie wykonywania, dynamiczne tworzenie, serializacja
        CCmdTarget - obsługa komunikatów Windows
            CWnd - okno
                CControlBar - klasa podstawowa dla Control Bars
                    CStatusBar

[początek strony]