Tải bản đầy đủ (.doc) (26 trang)

TÌM HIỂU VỀ MFC VÀ XÂY DỰNG ỨNG DỤNG SỬ DỤNG MFC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (866.7 KB, 26 trang )

ĐỀ TÀI: TÌM HIỂU VỀ MFC VÀ XÂY DỰNG ỨNG DỤNG
SỬ DỤNG MFC
Nhóm thực hiện: Nhóm 6
DANH SÁCH NHÓM 6
1. Trần Thị Hường (NT)
2. Nguyễn Thị Huyên
3. Dương Hiền Huyền
4. Hà Thị Thu Huyền
5. Vũ Thị Liên (TK)
6. Vũ Thị Lan
7. Doãn Thị Loan
8. Trần Thanh Long
9. Trần Thị Nhật Linh

A- MỞ ĐẦU
Ngôn ngữ lập trình C++ được biết đến như là một trong những ngôn ngữ lập
trình mạnh nhất nhờ khả năng của nó trong việc triển khai phần mềm ở các
mức độ khác nhau, từ mức hệ thống đến mức ứng dụng, từ lập trình cấu trúc
đến lập trình hướng đối tượng, từ lập trình dựa trên thuật giải đến lập trình
trí tuệ nhân tạo, và từ lập trình cơ sở dữ liệu đến lập trình cơ sở tri thức…Bất
cứ đâu, khi mà người lập trình muốn thể hiện ý tưởng khoa học và nghệ
thuật của mình trên máy tính thì C++ là điều nghĩ đến đầu tiên.
Và, theo đó, vấn đề cài đặt môi trường cho ứng dụng là điều phải quan
tâm.Với xu hướng sử dụng hệ điều hành Microsoft Windows như hiện nay,
chúng ta nên nghĩ đến việc cài đặt ứng dụng của mình trong môi trường này
và khai thác nó sao cho ứng dụng hoạt động hiệu quả nhất.
Microsoft Visual C++ , sản phẩm của Microsoft với khả năng biên dịch ưu
việt và lối khai thác hệ thống rộng mở nhờ tập hợp lớp thư viện MFC có
đầy đủ các tiện ích xứng đáng là lựa chọn của bạn.
Sau đây chúng ta sẽ cùng tìm hiểu về MFC và xây dựng một ứng dụng đơn
giản sử dụng ứng dụng này.



Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
2
B – NỘI DUNG
I ) TÌM HIỂU VỀ MFC (microsoft foundation class)
1. Khái quát về MFC
1.1 . Khái niệm
MFC là thư viện của Microsoft, bao gồm các lớp cơ bản, cài đặt bằng
ngôn ngữ C++ hỗ trợ việc lập trình trong môi trường Windows. Từ các lớp
này, MFC xác lập nền tảng hình thành ứng dụng của Windows, bao gồm
việc định nghĩa bộ khung ứng dụng, các công cụ chuẩn và phổ biến để bổ
sung vào bộ khung nói trên nhằm tạo ra ứng dụng hoàn chỉnh. Với MFC,
công việc của người lập trình chỉ còn là lựa chọn các thành phần cần thiết,
điều chỉnh và phối hợp chúng hợp lý để có được ứng dụng kết quả mong
muốn.
1.2. Một số lớp cơ bản
1.2.1.Lớp quản lý tiểu trình CwinThread
CwinThread là một lớp của MFC, lớp đối tượng quản lý tiểu trình được tạo
ra trong tiến trình của một ứng dụng đang thực hiện. Các dịch vụ cơ bản
phục vụ cho quản lý tiểu trình do CwinThread cung cấp thông qua các thuộc
tính và hành vi của nó.
DWORD m_ nThread ID:thuộc tính lưu số hiệu của tiểu trình
CWND m_pMain Wnd: Lưu con trỏ đối tượng cửa sổ giao diện chính của
tiểu trình. Khi cửa sổ giao diện chấm dứt hoạt động, tiểu trình liên quan sẽ
kết thúc. Nếu tiểu trình thuộc loại tiểu trình xử lý nội thì giá trị này kế thừa
từ tiểu trình giao diện cấp cao hơn.
CwinThread(): Hành vi tạo lập đối tượng tiểu trình
Vitual BOOL initinstance(): Khởi tạo thông số cho đối tượng tiểu trình và
đảm nhận các xử lý bổ sung khác của ứng dụng. Đối với tiểu trình giao diện,

hành vi này dùng để khởi tạo đối tượng cửa sổ giao diện và gán địa chỉ của
đối tượng cửa sổ cho m_pMain Wnd
Virtual int Exitinstance(): Hành vi kết thúc của đối tượng tiểu trình. Thông
qua hành vi này, đối tượng quản lý tiểu trình thực hiện hoàn trả các tài
nguyên của hệ thống mà nó đã đăng ký sử dụng.
Virtual int Run(): Hành vi dành riêng cho tiểu trình giao diện, nó thực hiện
vòng lặp nhận message,chuyển message cho hành vi PreTranslateMessage
của lớp. Nếu hành vi này trả về giá trị 0 thì message sẽ tiếp tục được chuyển
đến các hàm diễn dịch phím translateMessage và hàm điều phối message
Dispatch Message.
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
3
Virtual BOOL preTranslateMessage: Hành vi cho phép can thiệp trước
trên các message nhận được từ message queue của ứng dụng.Thông qua đó,
tiểu trình giao diện có thể thực hiện các tiền xử lý message đặc trưng nhằm
đáp ứng yêu cầu đặt ra cho ứng dụng.
1.2.2. Lớp quản lý tiểu trình giao diện chính CWinApp
CwinApp, kế thừa từ CwinThread, là lớp đối tượng chuyên dùng quản lý
tiểu trình giao diện chính của ứng dụng.Ứng dụng Windows chỉ được phép
sử dụng một đối tượng thuộc lớp này. Ngoài các thuộc tính, hành vi kế thừa
public từ CwinThread, CwinApp có các thuộc tính và hành vi bổ sung sau :
Const char* m_pszAppName : Lưu chuỗi tên của ứng dụng.
LPTSTR m_lpcmdLine : Lưu nội dung chuỗi tham số dòng lệnh. Tham số
dòng lệnh là toàn bộ phần nội dung mà người dùng gõ vào ngay sau chuỗi
đường dẫn và tên chương trình ứng dụng khi họ thực hiện ứng dụng.Đối với
ứng dụng có nhiều chế độ hoạt động khác nhau thì việc sử dụng tham số
dòng lệnh là một cơ chế xác lập các giao ước giữa ứng dụng và người dùng
để chọn chế độ sử dụng ứng dụng thích hợp.
Int m_nCmdShow : Lưu giá trị thông số đã được dùng để kích hoạt cửa sổ

giao diện chính của ứng dụng
CwinApp() : Tạo lập đối tượng tiểu trình
Hành vi hiển thị hộp thông báo và chờ nhận ý kiến người dùng :
Virtual int DomessageBox {
LPCT STR lpsz prompt// nội dung thông báo
UINT nType // Dạng hộp thông báo
UINT hlpindex = 0 // Số hiệu mục giúp đỡ( Win help)
}
Hành vi này được kích hoạt với tham số tương ứng mỗi khi trong chương
trình sử dụng hàm AfxMessageBox để hiển thị hộp thông báo.
nType //ấn định dạng hộp thông báo. Giá trị này là sự kết hợp giữa thông số
qui định biểu tượng hiển thị và các nút chọn bố trí trong hộp.
H/vi DoMessageBox chờ người sử dụng trả lời bằng cách chọn một nút
chọn xác định trong hộp thông báo. Hành vi kết thúc với giá trị trả về là số
hiệu của một nút được chọn.Kế thừa hành vi này để chặn và thực hiện xử lý
đặc trưng cho tất cả các lời gọi AfxMessageBox trong ứng dụng.
Hàm AfxMessageBox sử dụng DoMessageBox để hiển thị hộp thông báo
và lấy giá trị của hành vi này làm kết quả trả về của nó.
1.2.3. Một số lớp thường dùng
- Lớp CWnd : Đây là lớp đối tượng quản lý cửa sổ của Windows. Thông
qua các thuộc tính và hành vi của lớp CWnd, MFC cung cấp các dịch vụ cần
thiết cho phép tạo lập và khai thác các tính năng của cửa sổ Windows một
cách dễ dàng.
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
4
- Lớp Cmenu: lớp quản lý Menu thông qua các thuộc tính và hành vi đặc
trưng
- Các lớp đối tượng nhập liệu: Lớp đối tượng nhập liệu, kế thừa từ lớp
CWnd, cho phép quản lý các mục nhập liệu trên cửa sổ giao diện

+ Cstatic: Lớp đối tượng quản lý mục thông báo hoặc ảnh trên cửa sổ giao
diện.
+ Cedit: Lớp đối tượng quản lý hộp nhập trên cửa sổ giao diện.Ngoài việc
hỗ trợ xử lý các hoạt động nhập liệu, Cedit còn có khả năng thông tin cho
cửa sổ cha của hộp nhập về tình hình nhập liệu đang diễn ra trong hộp.
+ Cbutton: Lớp đối tượng quản lý nút chọn trên cửa sổ giao diện.Trong
Windows, các nút chọn có thể hoạt động độc lập hay theo nhóm.
+ Lớp đối tượng quản lý hộp nhập chứa danh sách các mục chọn trên cửa
sổ giao diện. Tùy theo loại ListBox mà khi sử dụng, người dùng được phép
đánh dấu chọn một hoặc nhiều mục trong ListBox.
- Lớp quản lý hộp hội thoại Cdialog: Là lớp đồi tượng kế thừa từ lớp Cwnd,
được sử dụng để quản lý dialog.
2. Lập trình Windows với MFC
2.1. Khái quát về lập trình Windows với MFC
Lập trình Windows với MFC là kỹ thuật lập trình sử dụng bộ thư viện
MFC của Microsoft để xây dựng các ứng dụng trong windows( windows
app) và các ứng dụng khác như DLL, COM,ActiveX
Bản chất của việc lập trình này là làm việc với C++ thông qua các lớp và
đối tượng.
Kỹ thuật lập trình này có một số ưu nhược điểm sau:
Ưu điểm:
+ Bản chất là lập trình hướng đối tượng với C++
+ Người lập trình đỡ phải nhớ nhiều hàm và cấu trúc vì chúng đã được gói
chung vào các lớp cơ bản.
+ Thời gian phát triển một ứng dụng nhanh bởi sự hỗ trợ của bộ Wizard
với Visual studio.
Nhược điểm:
+ Chương trình khi biên dịch ra sẽ khá lớn cỡ độ từ vài MB đến vài chục
MB tùy vào chế độ biên dịch static link ( đưa toàn bộ vào một exe hoặc một
dll duy nhất) hoặc chế độ Dynamic linked ( bắt đính kèm mấy tệp dll của

MFC).
+ Vẫn phải đính kèm các tệp tin của visual C++ như msvcrtX.dll và
msvcppX.dll ( tùy phiên bản của VC++).
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
5
+ Đối với các ứng dụng MFC lớn, việc làm giảm tốc độ của ứng dụng so
với việc xây dựng ứng dụng bằng APIs là không thể tránh khỏi, bởi vì các
lớp bao của MFC quá rườm rà và phức tạp.
2.2. Môi trường lập trình MS Visual C++
Môi trường lập trình Microsoft Visual C++ bao gồm:
- Miền làm việc
Khi khởi động lần đầu tiên, vùng bên trái Developer studion được gọi là
miền làm việc, đây chính là vùng để điều hành các phần khác nhau của các
dự án phát triển(project). Miền làm việc này cho phép xem các phần của ứng
dụng theo ba cách khác nhau( như các hình dưới đây)
Class View: cho phép điều hành và thao tác mã nguồn trên mức lớp C++

Resource View: cho phép tìm và chọn lọc các tài nguyên khác nhau trong
ứng dụng như thiết kế cửa sổ hội thoại, biểu tượng, menu, toolbar…

Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
6
File View: cho phép xem và điều hành tất cả các file trong ứng dụng.

- Cửa sổ xuất ( output pane)
Cửa sổ này nằm ở phần dưới cùng trong cửa sổ ứng dụng Visual C++,
thường có thể không hiện trên màn hình khi khởi động ứng dụng Visual C++
lần đầu tiên mà sẽ xuất hiện sau khi thực hiện biên dịch ứng dụng lần đầu

tiên. Phần của sổ này là nơi cung cấp tất cả thông tin cần thiết cho người
dùng như các câu lệnh, lời cảnh báo và thông báo lỗi của trình biên dịch,
đồng thời sẽ là nơi chương trình gỡ rối hiển thị tất cả các biến với những giá
trị hiện hành trong thời gian thực thi trong mã nguồn.

Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
7
- Vùng soạn thảo:
Đây là vùng bên phải của môi trường để người dùng thực hiện tất cả thao tấc
soạn thảo chương trình khi sử dụng Visual C++, nơi các cửa sổ soạn thảo
chương trình hiển thị, đồng thời là nơi cửa sổ vẽ hiển thị khi người dùng
thiết kế hộp thoại.
- Thanh thực đơn ( menu):
Lần đầu tiên chạy Visual C++, có ba thanh công cụ hiển thị ngay dưới thanh
menu ( menu Bar). Trong Visual C++ có sẵn nhiều thanh công cụ khác nhau,
người dùng có thể tùy biến tạo các thanh công cụ phù hợp nhất cho riêng
mình.

Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
8
- Thanh công cụ:

2.3. Tạo ứng dụng với MS Visual C++
Từ menu File, người dùng chọn lệnh New để tạo mới một dự án( Project),
một tập tin( File) hay một không gian làm việc( Workspace) khi đó hộp
thoại xuất hiện như hình sau:
Để tạo ứng dụng dạng hộp thoại dialog, người dùng cần làm như sau:


Bước khởi đầu:
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
9
- Bước 1:

- Bước 2:
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
10
- Bước 3:

- Bước 4:
- Bước kết thúc:
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
11
II. XÂY DỰNG ỨNG DỤNG SỬ DỤNG MFC
Xây dựng ứng dụng nhập dữ liệu và hiển thị kết quản trên hộp soạn thảo
EDIT BOX
2.1.Giới thiệu
Hầu hết các ứng dụng đang dùng đều có rất nhiều tình huống yêu cầu bạn
nhập dữ liệu và hiển thị kết quả trên màn hình. Sau đây nhóm chúng tôi xin
giới thiệu ứng dụng nhập dữ liệu và hiển thị kết quả trên hộp soạn thảo Edit
Box.
Để thực hiện được ứng dụng này cần hiểu được các khái niệm:
- Static text: Là một điều khiển được dùng để thông báo dòng văn bản trên
giao diện chương trình. Bạn có thể thay đổi văn bản tĩnh này bằng các mã
lệnh trong chương trình.
- Edit Box: Hộp soạn thảo văn bản cho phép người sử dụng nhập dữ liệu

vào hoặc hiển thị dữ liệu ra màn hình.
- Nút điều khiển Radio được sử dụng để chọn duy nhất một trong các lựa
chọn. Thông thường các nút Radio được đặt trong các Group Box.
- Hộp nhóm Group Box được sử dụng để trang trí, đó là một khung viền
ngoài của Static text.
Để xây dựng được ứng dụng này phải tiến hành qua 2 bước sau đây:
- Thiết kế giao diện( Interface)
- Viết mã lệnh
2.2. Ứng dụng nhập dữ liệu và hiển thị kết quả trên hộp soạn thảo Edit
Box.
2.2.1. Thiết kế giao diện
Thiết kế chương trình Area để có giao diện như hình 1. Trong đó có ba hộp
soạn thảo Edit Box, hai nút Command Button, bốn dòng Static Text, một
Group Box và hai nút Radio Button.
Khi kích vào nút Rectangle, chương trình sẽ cho phép bạn nhập vào chiều
dài và chiều rộng của hình chữ nhật như hình 1.
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
12
- Khi kích vào nút Circle chương trình sẽ cho phép bạn nhập bán kính của
đường tròn như hình 2.

- Để hiển thị kết quả tính diện tích, bạn ấn vào nút Display
- Kích vào nút Clear để xóa dữ liệu trên các Edit Box
- Nút Exit để thoát chương trình.
2.2.2 Viết mã lệnh
Các hàm được sử dụng để viết mã lệnh cho ứng dụng
- Hàm UpdateData ( tham_ số) với :
Tham_ số là TRUE: hàm sẽ thực hiện việc cập nhật dữ liệu trong các điều
khiển vào các biến liên kết tương ứng.

Tham_ số là FALSE: hàm sẽ thực hiện việc cập nhật dữ liệu từ các biến liên
kết vào trong các điều khiển tương ứng và hiển thị trên giao diện chương
trình.
Cặp mã lệnh UpdateDate(TRUE) và UpdateData(FALSE) là rất cơ bản và
quan trọng trong Visual C++. Nó có tác dụng như cặp mã lệnh Cin>> và
Cout<< trong C++
- Hàm BOOL show.Window (int nCmdShow)
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
13
Trả về giá trị kiểu BOOL. Nếu hàm được thực hiện thì trả về TRUE, nếu
không được thực hiện thì hàm trả về FALSE.
Tham số duy nhất của hàm là nCmdShow
+ Nếu nCmdShow = SW_SHOW thì điều khiển được hiển thị
+ Nếu nCmdShow = SW_HIDE thì điều khiển bị ẩn.
- Hàm Void Set WindowText( Cstring text): để đặt tên cho điều khiển.
Đoạn code của ứng dụng:
// AreaDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Area.h"
#include "AreaDlg.h"
#include "math.h"
#define pi 3.1415;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
14
virtual void DoDataExchange(CDataExchange* pDX); //
DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAreaDlg dialog
CAreaDlg::CAreaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAreaDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAreaDlg)
m_dLength = 0.0;
m_dWidth = 0.0;
m_dArea = 0.0;
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
15
m_sel = -1;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon
in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CAreaDlg::DoDataExchange(CDataExchange* pDX)
{

CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAreaDlg)
DDX_Control(pDX, IDC_STATIC_WIDTH, m_staWidth);
DDX_Control(pDX, IDC_STATIC_LENGTH, m_staLength);
DDX_Control(pDX, IDC_EDIT_WIDTH, m_ediWidth);
DDX_Control(pDX, IDC_EDIT_LENGTH, m_ediLength);
DDX_Text(pDX, IDC_EDIT_LENGTH, m_dLength);
DDX_Text(pDX, IDC_EDIT_WIDTH, m_dWidth);
DDX_Text(pDX, IDC_EDIT_AREA, m_dArea);
DDX_Radio(pDX, IDC_RADIO_RECT, m_sel);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAreaDlg, CDialog)
//{{AFX_MSG_MAP(CAreaDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_RADIO_RECT, OnRadioRect)
ON_BN_CLICKED(IDC_RADIO_CIRCLE, OnRadioCircle)
ON_BN_CLICKED(IDC_BUTTON_DISPLAY,
OnButtonDisplay)
ON_BN_CLICKED(IDC_BUTTON_EXIT, OnButtonExit)
ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAreaDlg message handlers
BOOL CAreaDlg::OnInitDialog()
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC

16
{
CDialog::OnInitDialog();
// Add "About " menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) ==
IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,
IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this
automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
m_sel=0;//gan bien dieu khien ve 0
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a
control

}
void CAreaDlg::OnSysCommand(UINT nID, LPARAM lParam)
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
17
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CAreaDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM)
dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;

GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
18
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CAreaDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CAreaDlg::OnRadioRect()
{
// TODO: Add your control notification handler code here
//hien thi van ban tinh static length
this->m_staLength.ShowWindow(SW_SHOW);
// hien thi hop soan thao Edit length;
this->m_ediLength.ShowWindow(SW_SHOW);
//dat ten cho ban ban ting IDC_STATIC_WIDTH la width
this->m_staWidth.SetWindowText("Width");
}

void CAreaDlg::OnRadioCircle()
{
// TODO: Add your control notification handler code here
//an van ban tinh static length
this->m_staLength.ShowWindow(SW_HIDE);
// an hop soan thao Edit length;
this->m_ediLength.ShowWindow(SW_HIDE);
//dat ten cho ban ban ting IDC_STATIC_WIDTH la width
this->m_staWidth.SetWindowText("Radius");
}
void CAreaDlg::OnButtonDisplay()
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
19
{
// TODO: Add your control notification handler code here
//cap nhat cac bien tu man hinh vao chuong trinh
UpdateData(TRUE);
//kiem tra cac radio
switch(this->m_sel)
{
//neu nut rectangle duoc lua tron
case 0:
//tinh dien tich hinh chu nhat
this->m_dArea=this->m_dLength*this->m_dWidth;
break;
//neu nut circle duoc tron thi tinh dien tich hinh tron
case 1:
this->m_dArea=this->m_dWidth*3.1415;
break;

//cap nhat cac bien ra man hinh
}
UpdateData(FALSE);
}
void CAreaDlg::OnButtonExit()
{
// TODO: Add your control notification handler code here
this->OnOK();
}
void CAreaDlg::OnButtonClear()
{
// TODO: Add your control notification handler code here
this->m_dArea=0;
this->m_dLength=0;
this->m_dWidth=0;
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
20
UpdateData(FALSE);
//cap nhat du lieu ra man hinh
}
C- KẾT LUẬN
Tập hợp lớp thư viện MFC là công cụ hỗ trợ đắc lực cho người lập trình với
đầy đủ các tiện ích giúp ta vét được mọi ngõ ngách của Windows phục vụ
cho ứng dụng của mình.
Visual C++ là một ngôn ngữ lập trình dựa trên nền tảng cơ bản của C++ đó
là lập trình hướng đối tượng. Nếu các bạn đã lập trình trên C++ thì việc xây
dựng các ứng dụng trên Visual C++ là rất thuận lợi. Khi thực hiện lập trình
C/C++ thì việc trình bày đẹp hoàn toàn không đơn giản. Nhưng đối với
Nhóm 6- Lớp 1202INFO1311-

Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
21
Visual C++ thì việc đó khá đơn giản .Các bạn chỉ cần sử dụng các điều
khiển hay xây dựng hay xây dựng một menu đưa vào ứng dụng của mình mà
các mã lệnh cần phải viết không quá dài dòng và phức tạp như trong C/C++.
Đó chính là thế mạnh của Visual C++ trợ giúp đắc lực cho người lập trình
trong khi xây dựng những đề án chương trình lớn hoặc trong kỹ thuật lập
trình hệ thống.
Tuy nhiên, để hiểu và sử dụng được các lớp trong thư viện MFC phục vụ
cho việc xây dựng các ứng dụng từ đơn giản đến phức tạp thì đòi hỏi thời
gian tìm hiểu nghiên cứu kỹ càng. Trong khuôn khổ của một bài thảo luận,
nhóm chúng tôi mới chỉ kịp tìm hiểu những vấn đề cơ bản nhất về MFC và
xây dựng được một ứng dụng tương đối đơn giản.
Rất mong nhận được sự góp ý của cô giáo và các bạn để bài thảo luận của
nhóm tôi hoàn thiện hơn./.
Xin trân thành cảm ơn!
TÀI LIỆU THAM KHẢO
Giáo trình
1.Tự học lập trình Visual C++^.O từ cơ bản đến nâng cao. Phạm Công
Ngô( Chủ biên)- NXB Thống Kê.
2. Visual.C++_UDS
3.Lập trình Windows với VC- MFC
Các nguồn khác
- Slide bài giảng Lập trình nâng cao
- CongdongCviet.com
- Tailieu.Vn

Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
22

MỤC LỤC
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
23
Cộng hòa xã hội chủ nghĩa Việt Nam
Độc lập- Tự do- Hạnh phúc
BIÊN BẢN HỌP NHÓM
1. Thời gian: 15h ngày 10/4/2012
2. Địa điểm: Sân thư viện
3. Thành phần: Nhóm trưởng, thư ký và các thành viên nhóm 5
4. Nội dung:
- Nhóm trưởng phân công nhiệm vụ cho từng thành viên
- Qui định hạn nộp bài cá nhân và hình thức nộp bài ( gửi qua mail cho
nhóm trưởng)
Buổi họp kết thúc vào hồi 15h30p cùng ngày.
Thư ký Nhóm trưởng
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
24
ĐÁNH GIÁ HOẠT ĐỘNG CỦA THÀNH VIÊN
STT Họ và tên Công việc Xếp loại Ghi chú
1
Trần Thị Hường
(NT)
Xây dựng ứng dụng
2
Nguyễn Thị Huyên
Tìm hiểu về MFC
3
Dương Hiền Huyền

Tìm hiểu về MFC
4
Hà Thị Thu Huyền
Làm Slide
5
Vũ Thị Lan
Xây dựng ứng dụng
6
Vũ Thị Liên
(TK)
Xây dựng ứng dụng
7
Trần Nhật Linh
Tìm hiểu về MFC
8
Trần Thanh Long
Xây dựng ứng dụng
9 Doãn Thị Loan Xây dựng ứng dụng
Nhóm 6- Lớp 1202INFO1311-
Tìm hiểu về MFC và xây dựng ứng dụng sử dụng MFC
25

×