Tran Ngoc Bao 9 Dai hoc Su Pham TP.HCMTạo ứng dụng Dialog Based bằng AppWizard Chọn menu File Æ New Chọn Tab Projects Chọn loại project “MFC AppWizard exe” Đặt tên project trong
Trang 1Đại Học Sư Phạm Tp Hồ Chí Minh
Dialog Box Common Controls
Property Sheet
Trần Ngọc Bảo Email: tnbao.dhsp@gmail.com
Trang 2NỘI DUNG
Giới thiệu về Dialog box
Cài đặt và xử lý các control trong dialog
Trang 3Tran Ngoc Bao 3 Dai hoc Su Pham TP.HCMGiới thiệu về dialog
Dialog application
Trang 4Giới thiệu về dialog – Common dialog
Color dialog
Trang 5Tran Ngoc Bao 5 Dai hoc Su Pham TP.HCM
Giới thiệu về dialog – Common dialog
Open file dialog
Trang 6Giới thiệu về dialog – Common dialog
Fonts dialog
Trang 7Tran Ngoc Bao 7 Dai hoc Su Pham TP.HCM
Giới thiệu về dialog – Property Sheet
Trang 8Giới thiệu về dialog – Property Sheet
Trang 9Tran Ngoc Bao 9 Dai hoc Su Pham TP.HCM
Tạo ứng dụng Dialog Based bằng AppWizard
Chọn menu File Æ New
Chọn Tab Projects
Chọn loại project “MFC AppWizard (exe)”
Đặt tên project trong ô “Project name”
Xác định đường dẫn thư mục trong “Location”
Step 1: Chọn loại ứng dụng “Dialog based”
Nh ấn “Finish” để kết thúc
Step 2: Ch ỉ chọn Option “3D controls”
Trang 10Dialog based - Tạo ứng dụng bằng AppWizard
Trang 11Tran Ngoc Bao 11 Dai hoc Su Pham TP.HCM
Dialog based - Tạo ứng dụng bằng AppWizard
Trang 12Dialog based - Tạo ứng dụng bằng AppWizard
Trang 13Tran Ngoc Bao 13 Dai hoc Su Pham TP.HCM
Dialog based - Tạo ứng dụng bằng AppWizard
Trang 14Dialog based - Tạo ứng dụng bằng AppWizard
Trang 15Tran Ngoc Bao 15 Dai hoc Su Pham TP.HCM
Dialog based - Tạo ứng dụng bằng AppWizard
Trang 16Dialog based - Các thành phần của ứng dụng (1/3)
Các file chương trình: (abc là tên của ứng dụng)
abc.h: header file của file abc.cpp, chứa khai báo CabcApp để quản lý toàn bộ ứng dụng Lớp CabcApp kế thừa từ lớp
CWinApp của MFC
abcDlg.h: header file của file abcDlg.cpp, chứa khai báo CabcDlg để quản lý cửa sổ Dialog giao diện của ứng dụng Lớp CabcDlg kế thừa từ lớp CDialog của MFC
Resource.h: header file, chửa các hằng ID của các resource được định nghĩa trong file abc.rc
abc.cpp: cài đặt các hàm thành phần của lớp CabcApp
abc.rc : mô tả các resource của ứng dụng
abcDlg.cpp : cài đặt các hàm thành phần của lớp CabcDlg
Trang 17Tran Ngoc Bao 17 Dai hoc Su Pham TP.HCM
Dialog based - Các thành phần của ứng dụng (2/3)
class CDialogBasedApp : public CWinApp
{ public:
CDialogBasedApp();
public:
virtual BOOL InitInstance();
DECLARE_MESSAGE_MAP() };
Trang 18Dialog based - Các thành phần của ứng dụng (3/3)
class CDialogBasedDlg : public CDialog
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP() };
Trang 19Tran Ngoc Bao 19 Dai hoc Su Pham TP.HCM
Tạo và xử lý dialog
Th êm mới Dialog resource
Thi ết lập thuộc tính dialog
Khai b áo lớp CDialog
Th êm các control vào dialog
Hi ển thị dialog
X ử lý dialog
Trang 20Thêm mới dialog resource
Dialog resource
Trang 21Tran Ngoc Bao 21 Dai hoc Su Pham TP.HCM
Thêm mới dialog resource (tt)
thêm mới dialog resource vào ứng dụng
Trang 22Thêm mới dialog resource (tt)
New dialog resource
Trang 23Tran Ngoc Bao 23 Dai hoc Su Pham TP.HCMThêm mới dialog resource (tt)
Resource editor
Trang 24Thêm mới dialog resource (tt)
Alignment
Control box
Trang 25Tran Ngoc Bao 25 Dai hoc Su Pham TP.HCMXác lập thuộc tính của Dialog
Trang 26Khai báo lớp quản lý dialog
Ctrl + W để khai báo lớp xử lý tương ứng
Trang 27Tran Ngoc Bao 27 Dai hoc Su Pham TP.HCM
Khai báo lớp xử lý dialog
Ctrl + W để khai báo lớp xử lý tương ứng
Tên lớp
Lớp Kế thừa
Trang 28Header file - SampleDlg.h
Trang 29Tran Ngoc Bao 29 Dai hoc Su Pham TP.HCMSource file - SampleDlg.cpp
Trang 30Tạo và xử các control trong dialog
Control box
Trang 31Tran Ngoc Bao 31 Dai hoc Su Pham TP.HCM
Xử lý control trong dialog box - EditText
Trang 32Xử lý control trong dialog box - EditText
Th ông qua biến thành viên kiểu Value
Khai báo biến
Trang 33Tran Ngoc Bao 33 Dai hoc Su Pham TP.HCM
Xử lý control trong dialog box - EditText
class CLoginDlg : public CDialog
Trang 35Tran Ngoc Bao 35 Dai hoc Su Pham TP.HCM
Gán giá trị cho EditText
BOOL CLoginDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_strUserName = “Nguyen Van A";
return TRUE; // return TRUE unless you set the
focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
Trang 36Gán giá trị cho EditText
Trang 37Tran Ngoc Bao 37 Dai hoc Su Pham TP.HCM
Gán giá trị cho EditText
BOOL CLoginDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_strUserName = “Nguyen Van A";
Trang 38Gán giá trị cho EditText
UpdateData(FALSE);
Trang 39Tran Ngoc Bao 39 Dai hoc Su Pham TP.HCM
Lấy giá trị từ EditText
void CLoginDlg::OnOK() {
// TODO: Add extra validation here
Trang 40Lấy giá trị từ EditText
void CLoginDlg::OnOK() {
// TODO: Add extra validation here
CString strUserName;
UpdateData(TRUE);
strUserName = m_strUserName; MessageBox(strUserName);
CDialog::OnOK();
}
Kết quả strUserName = “Tran Van B”
Trang 41Tran Ngoc Bao 41 Dai hoc Su Pham TP.HCMEditText - Dữ liệu loại VALUE
Trang 42Xử lý control trong dialog box - EditText
Th ông qua biến thành viên kiểu CEdit
Khai báo biến
Trang 43Tran Ngoc Bao 43 Dai hoc Su Pham TP.HCM
Xử lý control trong dialog box - EditText
class CLoginDlg : public CDialog
Trang 44Gán giá trị cho EditText
BOOL CLoginDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_edtUserName.SetWindowText("Nguyen Van A");
Trang 45Tran Ngoc Bao 45 Dai hoc Su Pham TP.HCM
Lấy giá trị từ EditText
Trang 46Lấy và gán giá trị cho EditText
// Gán giá trị vào EditText
CString strUserName=“Nguyen Van A”;
GetDlgItem(IDC_TXTUSERNAME)->SetWindowText(strUserName);
CDialog::OnOK();
}
Trang 47Tran Ngoc Bao 47 Dai hoc Su Pham TP.HCM
Lấy và gán giá trị cho EditText
// Gán giá trị vào EditText
CString strUserName=“Nguyen Van A”;
pe->SetWindowText(strUserName);
CDialog::OnOK();
}
Trang 49Tran Ngoc Bao 49 Dai hoc Su Pham TP.HCM
Ví dụ minh họa
Trang 50Gọi dialog trong các hàm xử lý
Trang 51Tran Ngoc Bao 51 Dai hoc Su Pham TP.HCM
Truyền và nhận dữ liệu với dialog
void CMyClass::ShowMyDlg()
{
CLoginDlg dlg;
//Truyền giá trị cho các biến trong dialog
int nRes = dlg.DoModal();
if (nRes == IDOK) {
//Nhận giá trị từ các biến trong dialog
}
}
#include “MyClass.h”
#include “LoginDlg.h”
Trang 52Truyền và nhận dữ liệu với dialog
Trang 53Tran Ngoc Bao 53 Dai hoc Su Pham TP.HCM
Xử lý control trong dialog box - EditText
class CLoginDlg : public CDialog
Trang 54Truyền và nhận dữ liệu với dialog (tt)
Trang 55Tran Ngoc Bao 55 Dai hoc Su Pham TP.HCM
Ví dụ minh họa