1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

26 1K 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 841 KB

Nội dung

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

Trang 1

ĐỀ TÀI: TÌM HIỂU VỀ MFC VÀ XÂY DỰNG ỨNG DỤNG

Trang 2

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

Trang 3

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

Trang 4

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/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ý

Trang 5

- 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++)

Trang 6

+ Đố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:

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…

Trang 7

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

Trang 8

- 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

Trang 9

- 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:

Trang 10

- Bước 1:

- Bước 2:

Trang 11

- Bước 3:

- Bước 4:

- Bước kết thúc:

Trang 12

Để 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

Trang 13

- 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à

Trang 14

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

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

Trang 15

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

Trang 16

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);

OnButtonDisplay)

ON_BN_CLICKED(IDC_BUTTON_EXIT, OnButtonExit)

Trang 17

CDialog::OnInitDialog();

// Add "About " menu item to system menu

// IDM_ABOUTBOX must be in the system command range

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

}

Trang 18

// Center icon in client rectangleint 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;

Trang 19

// TODO: Add your control notification handler code here

//hien thi van ban tinh static length

// TODO: Add your control notification handler code here

//an van ban tinh static length

Trang 20

// TODO: Add your control notification handler code here

//cap nhat cac bien tu man hinh vao chuong trinh

Trang 21

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

Trang 22

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ê

Trang 23

MỤC LỤC

Trang 24

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

Trang 25

ĐÁNH GIÁ HOẠT ĐỘNG CỦA THÀNH VIÊN

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

Trần Thanh Long

Ngày đăng: 11/04/2015, 17:35

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w