Krzysztof Mossakowski
Materiały dla studentów
 

Kontrolki

MFC
Spis treści

Kontrolki
Informacje ogólne
Rodzaje kontrolek dostępne w MFC
Sposób użycia kontrolek
Standardowe kontrolki Windows
Hierarchia klas

  •  Informacje ogólne

    • Kontrolki (controls) to obiekty dające możliwośc wymiany informacji pomiędzy użytkownikiem i aplikacją

    • Najczęściej są umieszczane na oknach dialogowych oraz na control bars, które z założenia są podstawowym sposobem wymiany informacji

    • Najczęściej kontrolki są oknami w systemie Windows (mają własne uchwyty HWND)

      • możliwe jest wykonywanie na nich wszystkich operacji, które są możliwe do wykonania na zwykłych oknach

[początek strony]

  •  Rodzaje kontrolek dostępne w MFC

    • Standardowe kontrolki Windows

      • dla większości standardowych kontrolek Windows MFC dostarcza klasy zawierające ich pełną funkcjonalność

      • zwykle klasy te mają nazwy pochodzące od nazw kontrolek, np. CStatic, CButton

    • Kontrolki ActiveX

      • najprostszy sposób wykorzystania przy użyciu MFC:
        - przy pomocy edytora zasobów dodać kontrolkę ActiveX do projektowanego okna dialogowego
        - dodać do klasy okna dialogowego składową reprezentującą tę kontorlkę
        - przez tą składową będzie można uzyskać dostęp do wszystkich własności i metod kontrolki

    • Dodatkowe kontrolki MFC

      • dodane dla ułatwienia pracy programiście, rozszerzają możliwości standardowych kontrolek

      • CBitmapButton
        - przycisk z bitmapą zamiast tekstu
        - możliwe jest zdefiniowanie czterech bitmap dla czterech możliwych stanów: normalnego, wciśniętego, z fokusem, niedostępnego

      • CCheckListBox
        - lista pozycji (niekoniecznie tekstowych) z polami zaznaczeń (checkbox) dla każdej pozycji

      • CDragListBox
        - lista z możliwością przestawiania pozycji

[początek strony]

  •  Sposób użycia kontrolek

    • Wiekszość standardowych kontrolek oraz kontrolki ActiveX mogą być dodawane do projektowanego okna dialogowego przy uzyciu edytora zasobów

    • Do klasy okna dialogowego można dodać składową reprezentującą kontrolkę lub (dla niektórych standardowych kontrolek) jej zawartość

    • Istnieją dwa sposoby tworzenia własnych kontrolek dziedziczących z klas dostępnych w MFC

      • tworzenie i umieszczanie na oknie dialogowym w kodzie programu (taka kontrolka nie będzie widoczna w podglądzie tego okna dialogowego w edytorze zasobów):
        - zadeklarować własną klasę kontrolki dziedziczącą z klasy MFC
        - utworzyć obiekt własnej klasy
        - utworzyć okno kontrolki w systemi Windows (przy użyciu funkcji CWnd::Create lub CWnd::CreateEx)
        - po zakończeniu używania zniszczyć okno (funkcja CWnd::DestroyWindow)
        - zniszczyć obiekt własnej klasy

      • wykorzystanie klasy bazowej (taka kontrolka będzie widoczna w edytorze zasobów ale pod postacią definiowaną przez klasę bazową):
        - do okna dialogowego dodać kontrolkę klasy bazowej
        - w CDialog::OnInitDialog wywołać CWnd::SubclassDlgItem (np. dla przycisku m_wndMyBtn klasy CMyButton dziedziczącej z klasy CButton: m_wndMyBtn.SubclassDlgItem(IDC_MYBTN,this))

    • Zawiadomienia (notifications) z kontrolek

      • kontrolki są oknami potomnymi wysyłającymi do swoich rodziców zawiadomienia o akcjach użytkownika

      • większość kontrolek wysyła jako zawiadomienie komunikat WM_NOTIFY

      • stare kontrolki z Windows 3.x wysyłają zawiadomienia jako komunikaty WM_COMMAND

[początek strony]

  •  Standardowe kontrolki Windows

    • button (klasa CButton w MFC)

    • combo box (CComboBox)

    • edit control (CEdit)

    • list box (CListBox)

    • rich edit control (CRichEditCtrl)

    • scroll bar (CScrollBar)

    • static (CStatic)

    • animation control (CAnimationCtrl)

    • combo box ex (CComboBoxEx)

    • date and time picker (CDateTime)

    • drag list box

    • flat scroll bar

    • header control (CHeaderCtrl)

    • hot key control (CHotKeyCtrl)

    • image list (CImageList)

    • IP address (CIPAddress)

    • month calendar control (CMonthCalCtrl)

    • pager control

    • progress bar (CProgressCtrl)

    • property sheet

    • rebar control (CReBarCtrl)

    • status bar (CStatusBarCtrl)

    • tab control (CTabCtrl)

    • toolbar control (CToolBarCtrl)

    • tooltip control (CToolTipCtrl)

    • trackbar control (CSliderCtrl)

    • tree view control (CTreeCtrl)

    • up-down control (CSpinButtonCtrl)

[początek strony]

  •  Hierarchia klas

    CObject - informacja w trakcie wykonywania, dynamiczne tworzenie, serializacja
        CCmdTarget - obsługa komunikatów Windows
            CWnd - okno
                kontrolki

[początek strony]