Krzysztof Mossakowski
Materiały dla studentów
 

ToolBar
(klasa CToolBar)

MFC
Spis treści

ToolBar
klasa CToolBar
Informacje ogólne
Klasa CToolBar
Hierarchia klas

  •  Informacje ogólne

    • ToolBar to odmiana Control Bar, na której najczęściej umieszczane są następujące obiekty:

      • przyciski (pushbuttons)

      • pola zaznaczeń (checkboxes)
        - zwykle reprezentowane w postaci zwykłych przycisków, które mogą być w jednym z dwóch stanów: normalnym albo wciśniętym

      • pola wyboru (radio buttons)
        - zwykle reprezentowane w postaci grupy zwykłych przycisków, w której włączenie jednego przycisku automatycznie wyłącza pozostałe

      • separatory oddzielające od siebie grupy obiektów

    • ToolBar daje funkcjonalność analogiczną do menu - przyciski jako polecenia menu z możliwością ustawienia jako niedostępnych lub włączonych

      • w aplikacjach MFC przyciski mają najczęściej identyfikatory takie same, jak odpowiadające im pozycje menu, daje to możliwość zarządzania przyciskiem i pozycją menu (np. zmiana stanu) w jednym miejscu kodu programu

    • W MFC 6.0 nie ma wbudowanej obsługi customizeable ToolBars, czyli możliwości definiowania przez użytkownika własnych ToolBars lub zmiany ich poleceń

    • Od wersji 4.0 MFC ToolBars są implementowane w oparciu o standardowe kontrolki Windows przy pomocy klasy CToolBar

      • stare ToolBars są dostępne przy pomocy klasy COldToolBar

[początek strony]

  •  Klasa CToolBar

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

      • przy pomocy metody CToolBar::GetToolBarCtrl istnieje możliwość bezpośredniej zmiany kontrolki ToolBar

      • kontrolka Windows ToolBar ma w MFC swój interfejs w postaci klasy CToolBarCtrl

    • Istnieją dwa sposoby tworzenia ToolBar

      • przy pomocy edytora zasobów:
        - utworzyć zasób ToolBar
        - w kodzie utworzyć obiekt klasy CToolBar
        (lub potomnej)
        - wywołać metodę CToolBar::Create lub CToolBar::CreateEx
        - załadować ToolBar z zasobów przy pomocy metody CToolBar::LoadToolbar

      • bez pomocy edytora zasobów:
        - utworzyć obiekt klasy CToolBar
        (lub potomnej)
        - wywołać CToolBar::Create lub CToolBar::CreateEx
        - wywołac CToolBar::LoadBitmap dla bitmapy zawierającej obrazki przycisków
        - przypisać przyciskom identyfikatory przy pomocy metody CToolBar::SetButtons (specjalny identyfikator ID_SEPARATOR oznacza brak przycisku)

    • Przyciski obiektu ToolBar

      • rozmiary wszystkich przycisków muszą być równe
        - domyślny rozmiar przycisków: 24x22
        - domyślny rozmiar bitmap przycisków: 16x15

      • każdy przycisk ma tylko jedną bitmapę (dla stanu normalnego przycisku), pozostałe (dla wcisniętego, niedostępnego) są generowane automatycznie

      • możliwości zmian dla pojedynczych przycisków:
        - zmiana identyfikatora, stylu i numeru bitmapy: CToolBar::SetButtonInfo
        - zmiana stylu: CToolBar::SetButtonStyle
        - zmiana tekstu: CToolBar::SetButtonText

      • obiekt klasy CToolBar korzysta z zasobu RT_TOOLBAR, który jest jedną bitmapą zawierającą ułożone obok siebie obrazki poszczególnych przycisków
        - edytor zasobów Developers Studio bardzo ułatwia posługiwanie się tym zasobem

      • zalecane jest stosowanie zmian stanu przycisków przy pomocy mechanizmu MFC służącego do obsługi komunikatów i poleceń (z wykorzystaniem makra ON_UPDATE_COMMAND_UI)
        - najprościej jest korzystać z ClassWizard, który daje możliwość prostego dodawania funkcji obsługi poleceń menu i przycisków ToolBar oraz zmiany ich stanu

    • Możliwe jest automatyczne obsługiwanie ToolTips, czyli małych okien z informacjami dla użytkownika o poszczególnych przyciskach:

      • podczas tworzenia ToolBar dodać styl CBRS_TOOLTIPS (standardowo jest dodawany)

      • do ciągu znaków o identyfikatorze przycisku dodać tekst informacji, która ma się pojawiać w ToolTip, poprzedzony znakiem '\n'

[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
                    CToolBar

[początek strony]