1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình Windows: Chương 2 - Giới thiệu về MFC, Visual C++ 6.0

61 28 0

Đ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 61
Dung lượng 2,7 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Lập trình Windows: Chương 2 - Giới thiệu về MFC, Visual C++ 6.0 bao gồm những nội dung về giới thiệu MFC; chương trình MFC đầu tiên; xử lý chuột và bàn phím; Message Box. Mời các bạn tham khảo bài giảng để bổ sung thêm kiến thức về lĩnh vực này.

Trang 1

LẬP TRÌNH WINDOWS

Giới thiệu về MFC, Visual C++ 6.0

Trang 4

Giới thiệu về MFC

M icrosoft F oundation C lass

• là một thư viện các lớp (class, OOP) trong ngôn ngữ

Visual C++, được sử dụng để xây dựng các ứng dụng

trên Windows

• Được xây dựng trên cơ sở các hàm thư viện API của

Windows

• Version 6 có khoảng 200 class

• Giúp cho người lập trình có thể xây dựng ứng dụng

nhanh và ít tốn công sức hơn so với việc sử dụng đơn

thuần các hàm thư viện API của Windows

Trong một ứng dụng MFC, ta sẽ không gọi trực tiếp các hàm

Windows API mà sẽ tạo các object từ những lớp của MFC, sau

đó gọi các hàm của object này

• Ta vẫn có thể gọi các hàm Windows API trong MFC

Trang 5

Giới thiệu về MFC

• Đa số các phương thức của MFC class có cùng tên với những hàm Windows API

• MFC tạo ra một Application Framework, giúp:

􀂃 Thiết lập kiến trúc của ứng dụng một cách nhất quán và khoa học

􀂃 Che dấu đi nhiều phần chi tiết mà Windows API đòi hỏi , giúp developer “thảnh thơi” hơn

Trang 6

Các thành phần trong ứng dụng Visual C++

Trang 7

Chương trình MFC đầu tiên

􀂃 Ứng dụng đơn giản dùng Application Framework

􀂃 Ứng dụng phức tạp hơn (Dialog-based App)

Trang 8

Chương trình MFC đầu tiên –

ứng dụng đơn giản

􀂃 Tạo ứng dụng

􀂃 Các thành phần của chương trình

Trang 9

Chương trình MFC đầu tiên –

tạo ứng dụng

􀂃 Chọn menu File → New

􀂃 Chọn tab Projects

􀂃 Chọn loại project “ Win32 Application

􀂃 Đặt tên project và xác định đường dẫn thư mục trong ô

“ Location ”

􀂃 Chọn loại ứng dụng “ An empty project ”

􀂐Nhấn Finish để kết thúc

Trang 10

Chương trình MFC đầu tiên –

tạo ứng dụng

􀂃 Add các file Hello.hHello.cpp vào project

􀂃 Chọn menu Project → Settings

 Chọn project trong cửa sổ bên trái

 Chọn tab General

 Chọn “ Use MFC In A Shared DLL

Trang 11

Chương trình MFC đầu tiên –

Trang 12

Chương trình MFC đầu tiên –

m_pMainWnd = new CMainWindow;

m_pMainWnd->ShowWindow (m_nCmdShow);

m_pMainWnd->UpdateWindow ();

return TRUE;

} //////////////////////////////////////////////////////////

Trang 13

Chương trình MFC đầu tiên –

Hello.cpp(tt)

// CMainWindow message map and member functions

BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)

Trang 14

Chương trình MFC đầu tiên –

kết quả

Trang 15

Chương trình MFC đầu tiên –

các class của ứng dụng

Trang 16

Chương trình MFC đầu tiên –

các thành phần

 CWinApp : lớp chính của MFC để quản lý ứng dụng Chứa đựng vòng lặp nhận message và phân phối message đến các cửa sổ của ứng dụng

 CMyApp : lớp kế thừa từ lớp CWinApp

class CMyApp : public CWinApp {

public:

virtual BOOL InitInstance ();

};

Trang 17

Chương trình MFC đầu tiên –

Trang 18

Chương trình MFC đầu tiên –

các thành phần

 CWnd : lớp chính của MFC để quản lý các loại cửa sổ giao diện Có nhiều lớp được kế thừa từ lớp này để quản lý các loại cửa sổ khác nhau

(CTreeCtrl, CListBox, Cedit,…)

CFrameWnd : lớp kế thừa từ lớp CWnd, để quản

lý cửa sổ giao diện chính của ứng dụng

Trang 19

Chương trình MFC đầu tiên –

các thành phần

Trang 20

Chương trình MFC đầu tiên –

các thành phần

 CMainWindow(): hàm khởi tạo cửa sổ giao diện của ứng dụng,

override lên hàm chuẩn của lớp CFrameWnd

CMainWindow::CMainWindow () {

Create (NULL, _T ("The Hello Application"));

}

 OnPaint: hàm thành phần của lớp CMainWindow, được gọi khi cần

cập nhật nội dung cửa sổ Hàm này được định nghĩa chồng lên hàm chuẩn của lớp CFrameWnd

Trang 21

Chương trình MFC đầu tiên –

các bước thực thi ứng dụng

Trang 22

Chương trình MFC đầu tiên –

đăng ký lớp cửa sổ

Trang 23

Chương trình MFC đầu tiên –

tạo lập cửa sổ

Trang 24

Chương trình MFC đầu tiên –

Hàm lập cửa sổ

Trang 25

Chương trình MFC đầu tiên –

Hàm lập cửa sổ - tham số

Trang 26

Chương trình MFC đầu tiên –

Hàm lập cửa sổ - các kiểu dáng cửa sổ

Trang 27

Chương trình MFC đầu tiên –

Hiển thị cửa sổ

Trang 28

Chương trình MFC đầu tiên –

Vòng lặp và xử lý thông điệp

Trang 29

Chương trình MFC đầu tiên –

Message Map – Ánh xạ thông điệp

 MFC dùng Message Map để liên kết các message với những hàm thành phần của lớp cửa sổ

Ánh xạ thông điệp là bảng tương quan giữa thông điệp và các hàm thành phần quản lý các thông điệp đó

 Ánh xạ thông điệp được khai báo như các thành phần lớp khác trong khai báo lớpclass CMainWindow : public CFrameWnd{ public:

CMainWindow ();

protected:

afx_msg void OnPaint ();

DECLARE_MESSAGE_MAP () };

Trang 30

Chương trình MFC đầu tiên –

Message Map – Ánh xạ thông điệp

 Mỗi message sẽ được xử lý bởi 1 hàm thành phần

o WM_PAINT sẽ được chuyển thành O n P aint

o WM_MOUSEMOVE sẽ được chuyển thành

OnMouseMove

o WM_LBUTTONDOWN sẽ được chuyển thành

O n LB utton D own

Trang 31

Chương trình MFC đầu tiên –

Message Map – Ánh xạ thông điệp

afx_msg void OnPaint ();

afx_msg void OnLButtonDown(UINT , CPoint);

afx_msg void OnMouseMove(UINT, CPoint);

DECLARE_MESSAGE_MAP () };

Trang 32

Chương trình MFC đầu tiên –

Message Map – Ánh xạ thông điệp

Trang 33

Chương trình MFC đầu tiên –

Xử lý thêm message WM_LBUTTONDOWN

 Bổ sung thêm 1 hàm thành phần vào khai báo của lớp

Trang 34

Tạo ứng dụng MFC 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 “ Single Document ”

Nhấn “Next” đến “Step 4 of 6”

Trang 35

Tạo ứng dụng MFC bằng APPWizard

Chọn loại project “MFC AppWizard (EXE)”

Trang 36

Tạo ứng dụng MFC bằng APPWizard

Chọn option “ Single document ”

Trang 37

Tạo ứng dụng MFC bằng APPWizard

Chọn option “ None ”

Trang 38

Tạo ứng dụng MFC bằng APPWizard

Chọn option “ Next ”

Trang 39

Tạo ứng dụng MFC bằng APPWizard

Chọn option “ Next ”

Trang 40

Tạo ứng dụng MFC bằng APPWizard

Chọn “ Finish ”

Trang 41

Xử lý thông điệp chuột

Trang 42

Message Map và ClassWizard

Trang 43

Hàm xử lý thông điệp chuột tương ứng

void CMouseView::OnLButtonDown(UINT nFlags, CPoint point)

Trang 44

Hàm xử lý thông điệp chuột tương ứng

void CMouseView::OnLButtonDown(UINT nFlags, CPoint point)

Trang 45

Kết quả

Trang 46

Hàm xử lý thông điệp chuột tương ứng

void CMouseView::OnLButtonDown(UINT nFlags, CPoint point)

Trang 47

Kết quả

Trang 48

Xử lý Keyboard

- Thông điệp của keyboard

 WM_KEYDOWN / WM_KEYUP: phát sinh khi 1 phím (không phải

là phím hệ thống) được nhấn xuống/thả ra

o Hàm xử lý tương ứng: CWnd::OnKeyDown,

CWnd::OnKeyUp

o wParam: virtual-key code

o lParam: chứa các thông tin khác (số lần lặp lại phím, scan code,

Trang 50

Xử lý Menu

􀂃 Một vài khái niệm

􀂃 Tạo lập menu

􀂃 Load và hiển thị menu

􀂃 Xử lý khi menu item được chọn

􀂃 Thay đổi trạng thái menu

􀂃 Ví dụ

Trang 51

hoặc các drop-down menu khác.

VD File, Edit, …

được xác định bằng 1 số nguyên phân biệt, gọi là item ID hay

command ID

VD Open, Save, …

ở vị trí bất kỳ trên màn hình (thường khi nhấn nút phải mouse)

VD Minimize, Maximize, Close, …

Trang 52

Xử lý Menu

- Tạo lập menu

Thường có 2 cách chính để tạo menu:

 Tạo menu ở dạng resource của ứng dụng, và load vào khi chạy

 Tạo trực tiếp bằng các hàm khi ứng dụng đang chạy

 Lớp sử dụng để quản lý menu: CMenu

 Các hàm thành phần: CreateMenu, InsertMenu, …

Trang 53

MENUITEM "E&xit", ID_APP_EXITEND

END

Trang 54

Xử lý Menu

- Load và hiển thị menu

Xác định menu bar khi tạo cửa sổ:

Create(NULL, _T("My Application"), WS_OVERLAPPEDWINDOW, rectDefault, NULL, MAKEINTRESOURCE(IDR_MAINFRAME));

Thay đổi menu bar:

CMenu menu;

menu.LoadMenu(IDR_MAINFRAME);

SetMenu(&menu);

menu.Detach();

Trang 55

Message Box

 Hộp thông báo được sử dụng để thông báo, trao đổi giữa ứng dụng với người dùng

 Để tạo lập hộp thông báo, ta sử dụng hàm

MessageBox CWnd::int MessageBox (LPCTSTR lpszText,

LPCTSTR lpszCaption = NULL,

UINT nType = MB_OK)

Trang 56

Các kiểu hộp thông báo và giá trị trả về tương ứng

MB_ABORTRETRYIGNO

Trang 57

Message Box - Ví dụ

Để tạo lập hộp thông báo trên ta sử dụng hàm MessageBox

như sau:

int nRes = MessageBox (“Are you sure you want to delete

these 2 items?”, “Confirm Multiple File Delete”,

MB_YESNO)

 Chọn “Yes” → nRes =IDYES

 Chọn “No” → nRes = IDNO

Trang 58

Message Box - Ví dụ

Để tạo lập hộp thông báo trên ta sử dụng hàm MessageBox

như sau:

int nRes = MessageBox (“Do you want to save the

changes to Document1”, “Microsoft Office Word ”,

MB_YESNOCANCEL)

 Chọn “Yes” → nRes =IDYES

 Chọn “No” → nRes = IDNO

Chọn “Cancel” → nRes = IDCANCEL

Trang 59

Message Box

- Các kiểu biểu tượng trong hộp thông báo

Trang 60

Message Box - Ví dụ

Để tạo lập hộp thông báo trên ta sử dụng hàm MessageBox

như sau:

int nRes = MessageBox (“Do you want to continue”, “My

Application”, MB_YESNO | MB_ICONQUESTION)

 Chọn “Yes” → nRes =IDYES

 Chọn “No” → nRes = IDNO

Trang 61

Message Box - Ví dụ

Để tạo lập hộp thông báo trên ta sử dụng hàm MessageBox

như sau:

int nRes = MessageBox (“Do you want to save the changes

to Document1” , “Microsoft Office Word”,

MB_YESNOCANCEL | MB_ICONEXCLAMATION)

 Chọn “Yes” → nRes =IDYES

 Chọn “No” → nRes = IDNO

Chọn “Cancel” → nRes =

IDCANCEL

Ngày đăng: 08/05/2021, 14:05

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm