Làm việc với control của MFC
Để làm việc với các control, cần phải đặt tên biến (Variable name) cho control.
Nhấp chuột phải chọn control trong giao diện Dialog > Add Varible

Trong hộp thoại Add Member Varible Wizard > Varible name (Đặt tên biến control ở đây) > Finish.

Với những control có các ID
dạng ABC
(không có chữ số ở kí tự cuối cùng) nên thay đổi lại ID cho nó trước khi đặt tên biến (Variable name). Ví dụ IDC_STATIC
thành IDC_STATIC_1
.
Để thay đổi giá trị ID Control
. Truy cập Properties và thay đổi giá trị ở mục ID: Right mouse click > control trong giao diện Dialog > Properties.

Một số thao tác với control
Hiển thị chuỗi (Text) lên control
Để hiển thị một chuỗi (Text) lên một control (Button, Static Text, Edit Control,...), sử dụng phương thức SetWindowText*()
.
// www.stdio.vn // 1 control Static Text có variable name là m_staticText m_staticText.SetWindowTextA("Hello Stdio.vn"); m_staticText.SetWindowTextW(_T("Hello Stdio.vn"));

Thiết lập giá trị Enable cho control
Để thiết lập cho phép một control hoạt động hay không? Sử dụng phương thức EnableWindow()
. Giá trị mặc định là true
.
m_button.EnableWindow(true); m_button.EnableWindow(false);
Mở tập tin (Open file) và lưu tập tin (Save file)
Để mở tập tin (Open file) và lưu tập tin (Save file), sử dụng một loại dialog cho phép tạo ra một hộp thoại để giúp chọn nơi lưu trữ tập tin để thực hiện các thao tác mở (Open) và lưu (Save) tập tin.
// cStringFiler sẽ chọn lọc các tập tin quan tâm. // Ở đây là file ảnh có phần mở rộng .png và .jpg. CString cStringFiler = _T("image file (*.png, *.jpg) | *.png; *.jpg | All file(*.*) | *.* || "); // Mở tập tin (Open file) CFileDialog OpenDialog(TRUE, _T("*.png"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST| OFN_HIDEREADONLY, cStringFiler, NULL); // Lưu tập tin (Save file) CFileDialog SaveDialog(FALSE, _T("*.png"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, cStringFiler, NULL);
Để lấy đường dẫn đầy đủ (Path) đã chọn, sử dụng phương thức GetPathName()
if ( OpenDialog.DoModal() == IDOK) { CString cStringPathName = OpenDialog.GetPathName(); } // Tương tự nếmuốn lấy đường dẫn (Path) với SaveDialog
Các control cơ bản của MFC
Bắt sự kiện (Listen Event)
Để bắt sự kiện (Listen Event) với các control có event. Nhấn chuột phải > control trong giao diện Dialog > Properties > Hộp thoại Properties > Control Event (Icon hình tia sét màu vàng) > Trong hộp thoại Properties sẽ xuất hiện các mục event.

Edit Control
Nơi dùng để nhập một văn bản (Text). Kiểu dữ liệu của văn bản (Text) là Cstring
. Để lấy văn bản (Text) được nhập vào một control Edit Control, sử dụng phương thức GetWindowText*()
.
// Tên biến (Varible name) của Edit Control là m_editControl CString cStringExample; m_editControl.GetWindowTextA(cStringExample); m_editControl.GetWindowTextW(cStringExample);
Slider Control
Thiết lập giá trị bẳng cách di chuyển một chỉ số. Để lấy giá trị hiện tại của Slider Control, sử dụng phương thức GetPos()
// Tên biến (Varible name) của Slider Control là: m_sliderControl int value = m_sliderControl.GetPos();
Để thiết lập giá trị lớn nhất (Max) và nhỏ nhất (Min), sử dụng phương thức SetRange()
#define VALUE_MIN 0 #define VALUE_MAX 100 m_sliderControl.SetRange(VALUE_MIN, VALUE_MAX);
Ví dụ
Đoạn code dưới đây giới thiệu sự kiện (Event
) click (NM_CUSTOMDRAW
).
void CMFCApplication2Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); // TODO: Add your control notification handler code here *pResult = 0; #define MAX_WORLD 20 int value = this->m_slider.GetPos(); char s1[MAX_WORLD]; sprintf_s(s1, "%d", value); CString stringValue; stringValue.Format(_T("%d"), value); this->m_staticText.SetWindowTextW(stringValue); }

Button
Đối tượng khi chọn (Click) sẽ có một hiện tượng gì đó xảy ra, có thể là một thông báo,... Đoạn code dưới đây giới thiệu sự kiện (Event) click (BN_CLICKED
).
void CMFCApplication2Dlg::OnBnClickedButton1() { // Khi click vào button sẽ hiện lên một thông báo. MesageA(0, "Hello Stdio.vn", "Thông báo", NULL); }

Combo Box
Window Control chứa một danh sách các Items. Với thao tác lên Combo Box và chỉ định một item. Sau khi tạo một Combox Box và đã thiết lập varible name, để thêm Items
sử dụng phương thức AddString()
.
// Tôi có ở đây một control Combo Box có variable name là combo_box combo_box.AddString(L"0"); combo_box.AddString(L"1"); combo_box.AddString(L"2"); combo_box.AddString(L"3");

Sự kiện thay đổi lựa chọn của Combo Box là CBN_SELENDOK
.
void CMFCApplication2Dlg::OnCbnSelendokCombo3() { int index = combo_box.GetCurSel(); switch (index) { case 0: MessageBoxA(NULL, "Hello Stdio.vn 0", "Thông báo", 0); break; case 1: MessageBoxA(NULL, "Hello Stdio.vn 1", "Thông báo", 0); break; case 2: MessageBoxA(NULL, "Hello Stdio.vn 2", "Thông báo", 0); break; case 3: MessageBoxA(NULL, "Hello Stdio.vn 3", "Thông báo", 0); } }

Menu
Menu Control là nơi chứa các chức năng nhỏ (Items). Menu control sẽ giúp cho việc thiết kế các chức năng của ứng dụng được tập trung, dễ quản lý, tiết kiệm được không gian, giao diện thêm đẹp mắt,...
Để thêm một Menu Control vào project: VIEW > Other Windows > Resource View

Trong hộp thoại Resource View > Nhấn chuột phải > Add Resource...

Trong hộp thoại Add Resource > Menu > New.

Hiện tại đã có thể thiết kế các items cho Menu.

Nhưng khi thiết kế xong, Menu này vẫn chỉ ở thư mục Resource View. Để có thể gắn vào giao diện Dialog khi ứng dụng chạy, cần vào mục Properties của giao diện Dialog > Menu > ID Menu vừa tạo.

Để bắt sự kiện (Listen Event) cho các item của Menu, trong giao diện thiết kế Menu > nhấn chuột phải Item > Add Event Handler...

Trong hộp thoại Event Handler Wizard, chọn class muốn thêm Menu vào đó > Edit Code.

Build và run project MFC

Bài chung series