Contents
• Group box là 1 đường bao hình chữ nhật bao quanh các 1 bộ các control. Control thường các các radio button. Group box được đánh nhãn để mô tả về control này. Group control được dùng để nhóm các control cùng loại.
• Radio button là 1 loại button đặc biệt có thể lựa chọn nhưng không xóa được. Nó cho phép người dùng lựa chọn 1 trong nhóm các option.
Chúng ta sẽ sử dụng source code base tại bài viết Dialog-based để add thêm groupbox và radio button.
Chọn [View] -> [Other Windows] -> [View Resources] Click [ID_MFCAPP_DIALOG] trong folder Dialog để hiển thị dialog [MFCApp]
Chúng ta add thêm button để hiểu cách tạo button resource trên màn hình dialog.
Chọn toolbox ở góc trái màn hình, search keyword “radio button”. Kéo radio button từ toolbox vào màn hình MFCApp.
Tạo 3 radio button “Blue”, “Yellow”, “Orange”
Tiếp theo, search key keyword “group box”. Kéo group box vào màn hình MFCApp.
Tạo groupbox “Color” như hình sau.
Right-click chuột vào radio button[Blue], chọn [Add Event Handler…]
Chọn [Add and Edit] Event Handler Wizard tự động tạo interface phương thức xử lí sự kiện click [Blue] trong file MFCDialogDlg.cpp
void CMFCAppDlg::OnBnClickedRadioBlue() { // TODO: Add your control notification handler code here }
Add thêm xử lí hiển thị màu Blue khi click vào radio button “Blue”
void CMFCAppDlg::OnBnClickedRadioBlue() { // Draw blue rectangle CDC* pDC = GetDC(); CBrush NewBrush(RGB(0, 76, 255)); CBrush *pBrush = pDC->SelectObject(&NewBrush); pDC->Rectangle(250, 65, 400, 150); pDC->SelectObject(pBrush); }
Class CMFCAppDlg kế thừa từ class CWnd.
– Gọi hàm CWnd::GetDC() để get device context của dialog.
– Tạo bút vẽ bằng với màu xanh bằng NewBrush()
– Gọi hàm Rectangle() để vẽ hình chữ nhật.
– Gọi SelectObject() để fill màu xanh vào hình chữ nhật
Tương tự, với button Green và Orange. Chúng ta cũng tạo ra các function xử lí sự kiện click.
void CMFCAppDlg::OnBnClickedRadioYellow() { // Draw yellow rectangle CDC* pDC = GetDC(); CBrush NewBrush(RGB(255, 255, 0)); CBrush *pBrush = pDC->SelectObject(&NewBrush); pDC->Rectangle(250, 65, 400, 150); pDC->SelectObject(pBrush); } void CMFCAppDlg::OnBnClickedRadioOrange() { // Draw orange rectangle CDC* pDC = GetDC(); CBrush NewBrush(RGB(255, 123, 0)); CBrush *pBrush = pDC->SelectObject(&NewBrush); pDC->Rectangle(250, 65, 400, 150); pDC->SelectObject(pBrush); }
Leave a Reply
You must be logged in to post a comment.