MFC là gì?
MFC (Microsoft Foundation Classes) là một bộ thư viện của Microsoft phát triển giúp cho lập trình viên lập trình trên Window, cung cấp các class làm việc với các hàm API của Window.
Trong bài viết này sẽ hướng dẫn thiết kế một giao diện với MFC đơn giản và nhanh chóng với các control và giao diện Dialog của MFC.
Khởi tạo project MFC
Khởi động Visual Studio: File > Project > Trong hộp thoại New Project > Templates > Visual C++ > MFC > MFC Application > Đặt tên project > OK.

Trong hộp thoại Welcome to the MFC Application Wizard > Next.

Trong hộp thoại Application Type > Chọn:
- Dialog based
- Trong mục Project stype chọn: MFC standard > Next
Có thể để mặc định và chọn Next.

Trong các hộp thoại User Interface Features và Advanced Features > Next.
Trong hộp thoại Generated Class: Trong mục Generated classes > CUIPlateRecongnitionDlg > Finish.

Lúc này đã khởi tạo xong một project MFC.
Toolbox
: Nơi chứa các control để thiết kế UI như button, lable,...Giao diện Dialog
: Giao diện của ứng dụng. Để thêm các control vào giao diện Dialog chỉ việc chọn control trong Toolbox > kéo thả vào giao diện Dialog. Thiết kế sao cho phù hợp với mục đích thiết kế.Solution Explorer

Các xử lý cơ bản
Thiếp lập chế độ Build
Trong MFC, project có thể được Build ở một trong hai chế độ là Unicode và Multi-byte.
Nhấn chuột phải vào Solution Explorer > Properties:
Trong hộp thoại Properties > Mục Configuration Properties > General:
Trong hộp thoại General > Character Set > User Unicode Charater Set Hoặc User Multi-byte Charater Set > OK.

Chuyển đổi dữ liệu
Các kiểu dữ liệu trong MFC cơ bản tương tự giống trong C/C++. Nhưng đôi khi cần phải chuyển đổi các kiểu dữ liệu để có thể thao tác với các control.
string-CString
// Chuyển kiểu dữ liệu string sang CString. std::string stringExample = "Hello Stdio.vn"; CString cStringExample = stringExample.c_str(); CStringW cWStringExample = (CStringW)(str.stringExample); //********************************************************************* // Chuyển kiểu dữ liệu CString sang string. Cstring cStringExample = "Hello Stdio.vn"; std::string stringExample = std::string(cStringExample); Cstring cStringExample = _T("Hello Stdio.vn"); std::wstring wStringExample = (std::wstring)cStringExample; std::string stringExample; string_Example.assign(wStringExample.begin(), wStringExample.end()); //*********************************************************************
Phân tích
- Dòng 2: Khởi tạo một biến kiểu
string
có tên làstringExample
. - Dòng 4: Chuyển kiểu dữ liệu từ
string
sangCString
với chế độ Build Multi-type. - Dòng 6: Chuyển kiểu dữ liệu từ
string
sangCString
với chế độ Build Unicode. - Dòng 10-11: Chuyển kiểu dữ liệu từ
CString
sangstring
với chế độ Build Multi-type. - Dòng 13-16: Chuyển kiểu dữ liệu từ
CString
sangstring
với chế độ Build Unicode.
int(float, double,...)-CString
#define MAX_WORD 24 char cTmp[MAX_WORD]; int numberInt = 24; float numberFloat = 24.12; sprinf(cTmp, "%d", numberInt); // sprinf_s(cTmp, "%d", numberInt); sprinf(cTmp, "%f", numberFloat); // sprinf_s(cTmp, "%f", numberFloat); // Chế độ Multi-byte CString cStringExample = cTmp; // Chế độ Unicode CString cStringExample; cStringExample.Format(_T("%d"), number); //************************************************************** CString cStringExampleInt = "24"; CString cStringExampleFloat = "24.12"; // Chế độ Multi-byte int numberInt = atoi(cStringExampleInt); float numberFloat = atof(cStringExampleFloat); // Chế độ Unicode int numberInt = _watoi(cStringExampleInt); float numberFloat = _watof(cStringExampleFloat);
Phân tích
- Dòng 2-4: Định nghĩa và khởi tạo.
- Dòng 6-4: Chuyển kiểu dữ liệu
int
,float
thành kiểuCString
với hai chế độ Multi-type và Unicode. - Dòng 6-14: Chuyển kiểu dữ liệu
CString
thành kiểuint
,float
với hai chế độ Multi-type và Unicode.