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.
LẬP TRÌNH WINDOWS Giới Giới thiệu thiệu về MFC, MFC, Visual Visual C++ C++ 6.0 6.0 Nội Nội dung dung • Giới thiệu MFC • Chương trình MFC • Xử lý chuột bàn phím • Message Box Nội Nội dung dung • Giới thiệu MFC • Chương trình MFC • Xử lý chuột bàn phím • Message Box Giới Giới thiệu thiệu về MFC MFC • Microsoft Foundation Class • thư viện lớp (class, OOP) ngôn ngữ Visual C++, sử dụng để xây dựng ứng dụng Windows • Được xây dựng sở hàm thư viện API Windows • Version có khoảng 200 class • Giúp cho người lập trình xây dựng ứng dụng nhanh tốn công sức so với việc sử dụng đơn hàm thư viện API Windows • Trong ứng dụng MFC, ta không gọi trực tiếp hàm Windows API mà tạo object từ lớp MFC, sau Giới Giới thiệu thiệu về MFC MFC • Đa số phương thức MFC class có tên với hàm Windows API • MFC tạo Application Framework, giúp: � Thiết lập kiến trúc ứng dụng cách quán khoa học � Che dấu nhiều phần chi tiết mà Windows API đòi hỏi, giúp developer “thảnh thơi” Các Các thành thành phần phần trong ứng ứng dụng dụng Visual Visual C++ C++ Chương Chương trình trình MFC MFC đầu tiên � Ứng dụng đơn giản dùng Application Framework � Ứng dụng phức tạp (Dialog-based App) Chương Chương trình trình MFC MFC đầu tiên –– ứng ứng dụng dụng đơn đơn giản giản � Tạo ứng dụng � Các thành phần chương trình Chương Chương trình trình MFC MFC đầu tiên –– tạo tạo ứng ứng dụng dụng � Chọn menu File → New � Chọn tab Projects � Chọn loại project “Win32 Application” � Đặt tên project xác định đường dẫn thư mục ô “Location” � Chọn loại ứng dụng “An empty project” �Nhấn Finish để kết thúc Chương Chương trình trình MFC MFC đầu tiên –– tạo tạo ứng ứng dụng dụng � Add file Hello.h Hello.cpp vào project � Chọn menu Project → Settings Chọn project cửa sổ bên trái Chọn tab General Chọn “Use MFC In A Shared DLL” Kết Kết quả Xử Xử lý lý Keyboard Keyboard Thông Thông điệp điệp của keyboard keyboard WM_KEYDOWN / WM_KEYUP: phát sinh phím (khơng phải phím hệ thống) nhấn xuống/thả o Hàm xử lý tương ứng: CWnd::OnKeyDown, CWnd::OnKeyUp o wParam: virtual-key code o lParam: chứa thơng tin khác (số lần lặp lại phím, scan code, extended key,…) WM_CHAR: kết phát sinh message WM_KEYDOWN, báo hiệu ký tự in (printed character) tạo o Hàm xử lý tương ứng: CWnd::OnChar o wParam: mã ký tự o lParam: chứa thông tin khác (số lần lặp lại nhấn giữ Xử Xử lý lý Keyboard Keyboard Ví Ví dụ dụ Ví dụ: Xử lý phím nhấn Mơ tả: user nhấn phím → hiển thị MessageBox thông báo Các xử lý cần thiết o WM_KEYDOWN ↔ OnKeyDown oĐịnh nghĩa hàm xử lý message WM_KEYDOWN Xử Xử lý lý Menu Menu � Một vài khái niệm � Tạo lập menu � Load hiển thị menu � Xử lý menu item chọn � Thay đổi trạng thái menu � Ví dụ Xử Xử lý lý Menu Menu Một Một vài vài khái khái niệm niệm Menu bar: menu Bao gồm nhiều drop-down menu menu item Drop-down menu: phần menu bar, chứa menu item drop-down menu khác VD File, Edit, … Menu item: tương ứng với lệnh chương trình Mỗi menu item xác định số nguyên phân biệt, gọi item ID hay command ID VD Open, Save, … Popup menu: giống drop-down menu, xuất vị trí hình (thường nhấn nút phải mouse) System menu: chứa lệnh hệ thống điều khiển cửa sổ Xử Xử lý lý Menu Menu Tạo Tạo lập lập menu menu Thường có cách để tạo menu: Tạo menu dạng resource ứng dụng, load vào chạy Tạo trực tiếp hàm ứng dụng chạy Lớp sử dụng để quản lý menu: CMenu Các hàm thành phần: CreateMenu, InsertMenu, … Xử Xử lý lý Menu Menu Tạo Tạo lập lập menu menu File xxx.rc IDR_MAINFRAME MENU PRELOAD DISCARDABLE BEGIN POPUP "&File" BEGIN MENUITEM "&New\tCtrl+N", ID_FILE_NEW MENUITEM "&Open \tCtrl+O", ID_FILE_OPEN MENUITEM SEPARATOR MENUITEM "E&xit", ID_APP_EXIT END POPUP "&Edit" BEGIN MENUITEM "&Undo\tCtrl+Z", ID_EDIT_UNDO MENUITEM SEPARATOR MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE END Xử Xử lý lý Menu Menu Load Load và hiển hiển thị thị menu menu Xác định menu bar 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(); Message Message Box Box Hộp thông báo sử dụng để thông báo, trao đổi ứ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) Các Các kiểu kiểu hộp hộp thông thông báo báo và giá giá trị trị trả trả về tương tương ứng ứng Type Buttons Return Codes MB_ABORTRETRYIGNO RE Abort, Retry, Ignore IDABORT, IDRETRY, IDIGNORE MB_OK OK IDOK MB_OKCANCEL OK, Cancel IDOK, IDCANCEL MB_RETRYCANCEL Retry, Cancel IDRETRY, IDCANCEL MB_YESNO Yes, No IDYES, IDNO MB_YESNOCANCEL Yes, No, Cancel IDYES, IDNO, IDCANCEL Message Message Box Box Ví Ví dụ dụ Để tạo lập hộp thông báo ta sử dụng hàm MessageBox sau: int nRes = MessageBox (“Are you sure you want to delete these items?”, “Confirm Multiple File Delete”, MB_YESNO) Chọn “Yes” → nRes =IDYES Chọn “No” → nRes = IDNO Message Message Box Box Ví Ví dụ dụ Để tạo lập hộp thông báo ta sử dụng hàm MessageBox 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 Message Message Box Box Các Các kiểu kiểu biểu biểu tượng tượng trong hộp hộp thông thông báo báo Message Message Box Box Ví Ví dụ dụ Để tạo lập hộp thông báo ta sử dụng hàm MessageBox sau: int nRes = MessageBox (“Do you want to continue”, “My Application”, MB_YESNO | MB_ICONQUESTION) Chọn “Yes” Chọn “No” → nRes =IDYES → nRes = IDNO Message Message Box Box Ví Ví dụ dụ Để tạo lập hộp thông báo ta sử dụng hàm MessageBox 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 ... cửa sổ sổ Chương Chương trình trình MFC MFC đầu tiên –– tạo tạo lập lập cửa cửa sổ sổ Chương Chương trình trình MFC MFC đầu tiên –– Hàm Hàm lập lập cửa cửa sổ sổ Chương Chương trình trình MFC... dung • Giới thiệu MFC • Chương trình MFC • Xử lý chuột bàn phím • Message Box Nội Nội dung dung • Giới thiệu MFC • Chương trình MFC • Xử lý chuột bàn phím • Message Box Giới Giới thiệu thiệu về MFC... Hàm Hàm lập lập cửa cửa sổ sổ tham tham số số Chương Chương trình trình MFC MFC đầu tiên –– Hàm Hàm lập lập cửa cửa sổ sổ các kiểu kiểu dáng dáng cửa cửa sổ sổ Chương Chương trình trình MFC