MFC – Group box và Radio button

Group box và Radio button

• 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.

Tạo group box và radio button resource

Chọn [View] -> [Other Windows] -> [View Resources] Click [ID_MFCAPP_DIALOG] trong folder Dialog để hiển thị dialog [MFCApp] Groupbox & Radio button

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.
Groupbox & Radio button

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.

Xử lí sự kiện click radio button

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);
}

Source code

Download

Demo

Group box and Radio button

Be the first to comment

Leave a Reply