Push Button Kontrolü
Bilindiği gibi API düzeyinde push button kontrolü CreateWindow fonksiyonu ile “button” sınıf ismi kullanılarak BS_PUSHBUTTON pencere biçiminin de eklenmesiyle yaratılır. Oysa MFC’de CButton isimli sınıf bütün push button işlemlerini yapmaktadır. CButton sınıfının Create fonksiyonu push button kontrolünü yaratır. Ayrıca BS_PUSHBUTTON pencere biçiminin eklenmesine gerek yoktur. Örneğin tipik bir push button kontrolü şöyle yaratılabilir:
m_pButton = new CButton;
m_pButton->Create(”calculate”, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
CRect(10, 10, 100, 100), this, ID_BUTTON);
CButton sınıfının yararlı bazı üye fonksiyonları vardır. Bu üye fonksiyonlar push button kontrolüne BM_XXX mesajlarını göndererek işlemlerinin yapar. Örneğin SetCheck fonksiyonu kontrole basılma hareketini yaptırır. SetIcon fonksiyonu ya da SetBitmap fonksiyonu kontrol üzerine istediğimiz icon ve bitmap görüntülerinin basılmasını sağlar. Push button kontrolü üzerine click yapılıp el çekildiğinde üst pencereye WM_COMMAND mesajı gönderir. Mesajın parametreleri şöyledir:
HIWORD(wParam) –>Mesajın nedeni. ( Click için BN_CLICKED )LOWORD(wParam)–>Alt pencere ID değeriLParam –>Alt pencere handle değeri
Ayrıca push button kontrolü üzerine double click yapıldığında da WM_COMMAND mesajını BN_DOUBLECLICK koduyla göndermektedir. Ancak push button kontrolüne double click yapılması rastlanan bir durum değildir. Push button kontrolü üst pencereye WM_COMMAND mesajını el fareden çekildiği zaman (WM_LBUTTONUP mesajı ile) gönderir. CButton sınıfı check box ve radio button kontrollerini yaratmak için de kullanılır. Eğer bu kontroller yaratılacaksa BS_CHECKBOX ya da BS_RADIOBUTTON pencere biçimleri eklenmelidir (push button kontrolü için BS_PUSHBUTTON default olarak alınmaktadır. Ancak bu default durumun dökümante edilmemişse BS_PUSHBUTTON pencere biçiminin eklenmesi tavsiye edilir).
Kontrollerin gönderdiği WM_COMMAND mesajını işleyebilmemiz için ne yapmamız gerekir?
