2 Dialog và các Controls
2.1 Bài tập 1 (FontView)
Bước 1: Tạo project (Dialog base), thiết kế giao diện theo yêu cầu
Bước 2: Khai báo các biến thành viên ứng với các controls :
Loại control ID Caption Biến đối tượng
ComboBox IDC_COMBOSIZE m_cbSize ListBox IDC_LIST_FONT m_lbFonts
Editbox IDC_CONTENT m_editContent CheckBox IDC_CHECK_TRUETYPE m_chkCheckbox CheckBox IDC_B m_chkB CheckBox IDC_I m_chkI CheckBox IDC_U m_chkU
Static IDC_STATIC_FONTVIEW m_staticFontView
TH Lập trình Windows chương 5 Dialog - Controls
Bước 3: Tạo menu:
Bước 4:
Khai báo và định nghĩa hàm xử lý font :
int CALLBACK EnumFontfamProc (LPENUMLOGFONT lpelf,
LPNEWTEXTMETRIC lpntm, DWORD nFonttype, long lParam);
Bước 5: Trong lớp CFontViewDlg, khai báo và định nghĩa các hàm
TH Lập trình Windows chương 5 Dialog - Controls
//Hàm liệt kê và hiển thị font
//Hàm tạo và chọn font dựa vào các lựa chọn
TH Lập trình Windows chương 5 Dialog - Controls
//Hàm kiểm tra có đoạn văn bản nào đang được chọn trong EditBox
//Hàm cập nhật trạng thái menu
TH Lập trình Windows chương 5 Dialog - Controls
//Tạo danh sách các cỡ chữ trong ComboBox
Bước 5: Trong lớp CFontViewDlg, khai báo và định nghĩa các hàm xử lý sự kiện //Trong OnInitDialog
// Thay đổi lựa chọn font trong ListBox
//Check – uncheck ComboBox True Type
TH Lập trình Windows chương 5 Dialog - Controls
// Sự kiện từ menu
TH Lập trình Windows chương 5 Dialog - Controls
//sự kiện click vào menu -> cập nhật trạng thái menu
//Xử lý sự kiện phím
//Check – uncheck các CheckBox B, I, U
//Thay đổi lựa chọn trên ComboBox Size
TH Lập trình Windows chương 5 Dialog - Controls
2.2 Bài tập 2 (ColorText)
Bước 1: Tạo project (Dialog base), thiết kế giao diện theo yêu cầu
Bước 2: Tạo các lớp CColorStatic kế thừa từ lớp cơ sở CStatic và CiconListBox kế thừa từ lớp cơ sở CListBox (xem trong slides)
Bước 3: Trong lớp CcolorTextDlg khai báo các biến :
Bước 4: Khai báo các biến thành viên ứng với các controls :
Loại control ID Caption Biến đối tượng CColorStatic IDC_STATIC_TEXT Advanced
Control Programming
m_staticText
CIconListBox IDC_LIST_ICON m_lbIcon
Bước 5: Khai báo các và định nghĩa các hàm xử lý sự kiện : //Trong OnInitDialog
TH Lập trình Windows chương 5 Dialog - Controls
//Trong OnPaint
// Các sự kiện từ Radio Button, ListBox
TH Lập trình Windows chương 5 Dialog - Controls
TH Lập trình Windows chương 5 Dialog - Controls
2.3 Bài tập 3 (SampleEditor)
Bước 1: Tạo project (Dialog base), thiết kế giao diện theo yêu cầu
ListBox
EditBox
CheckBox ComboBo
TH Lập trình Windows chương 5 Dialog - Controls
Bước 2: Xây dựng các lớp đáp ứng yêu cầu thiết kế giao diện
• ComboBox hiển thị màu sắc:
TH Lập trình Windows chương 5 Dialog - Controls
• ListBox hiển thị màu cho text: Tạo lớp CColorListBox kế thừa từ lớp cơ sở CListBox: File ColorListbox.h
…
…
File ColorListbox.cpp //
//Thêm một chuỗi vào ListBox với màu text là cColor
// Thiết lập kích thước cho mỗi item
TH Lập trình Windows chương 5 Dialog - Controls
// Vẽ lại ListBox
TH Lập trình Windows chương 5 Dialog - Controls
• Lớp CEditColor : kế thừa từ lớp cơ sở CEdit, thêm các chức năng chọn màu văn bản, màu nền
//File EditColor.h
…
TH Lập trình Windows chương 5 Dialog - Controls
…
//File EditColor.cpp
TH Lập trình Windows chương 5 Dialog - Controls
Bước 3: Khai báo các biến thành viên ứng với các controls :
Loại control ID Caption Biến đối tượng ComboBox IDC_COMBOCOLOR m_cbColor
(COwnerDrawComboBox) ComboBox IDC_COMBOSIZE m_cbSize
ListBox IDC_FONTLIST m_lbFonts (CColorListBox)
Editbox IDC_CONTENT m_editContent (CEditColor)
CheckBox IDC_CHECKB m_bB CheckBox IDC_CHECKI m_bI CheckBox IDC_CHECKU m_bU
Bước 4:
// file SimpleEditor.h
Khai báo và định nghĩa hàm xử lý font :
int CALLBACK EnumFontfamProc (LPENUMLOGFONT lpelf,
LPNEWTEXTMETRIC lpntm, DWORD nFonttype, long lParam);
… …
//file SimpleEditor.cpp
TH Lập trình Windows chương 5 Dialog - Controls
TH Lập trình Windows chương 5 Dialog - Controls
//Trong hàm OnInitDialog()
… …
TH Lập trình Windows chương 5 Kiến trúc Documents/Views – Dialog, Property Sheets