1
TRƯỜNG ĐẠI HỌC B\CH KHOA H[ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN V[ TRUYỀN THÔNG
Phạm Ngọc Hưng
Bộ môn Kỹ thuật Máy tính
hungpn@soict.hut.edu.vn
LẬP TRÌNH WINDOWS
Lập trình Windows
số: IT4781
Thời lượng: 2 (2-1-0-4)
thuyết: 30 tiết
Bài tập: 15 tiết
Học phần tiên quyết:
Ngôn ngữ lập trình C, C++
2
Lập trình Windows
Nội dung
Chương 1. Tổng quan lập trình Windows (4LT +
1BT)
Chương 2. Lập trình Windows VC++/MFC (15LT +
6BT)
Chương 3. Một số chủ đề nâng cao
Tạo t viện liên kết động (DLL) (3LT + 2BT)
Luồng (Thread) (3LT + 2BT)
Windows Socket (2LT + 2BT)
Chương 4. X}y dựng ứng dụng Windows Form (3LT
+ 2BT)
Bài tập lớn
3
Lập trình Windows
Tài liệu tham khảo
1. Ivor Horton’s, Beginning Visual C++ 2010
2. Programming Windows with MFC 2nd
2. VC++ and MFC Programming 2nd
3. Sams teach yourself VC++ 6 in 21 days
4. MSDN
5. http://www.functionx.com/visualc/
4
Lập trình Windows
2
Chương 1. Tổng quan lập trình Windows
1.1. bản về lập trình Windows (1T)
1.2. Cấu trúc của chương trình Windows (2T)
1.3. Microsoft Foundation Classes (MFC)
1.4. Lập trình Windows với VC++ 2008
(1LT + 1BT)
5
Lập trình Windows
1.1. bản về lập trình Windows
Windows: đồ họa trực quan, tài nguyên đa
dạng.
ng dụng thân thiện với người sử dụng
thông qua giao diện đồ họa Windows.
Các ứng dụng giao diện tương tác giống
nhau:
Windows, title bar, toolbar, menu bar, status bar
Thanh thực đơn: File, Edit, Tool, Help
Hộp thoại: thường chứa các điều khiển chung: Edit
Control, Button Control, Checkbox….
6
Lập trình Windows
Các thành phần của một cửa sổ
7
Lập trình Windows
chế lập trình Event-driven
8
Lập trình Windows
3
Thông điệp (Windows Messages)
Hệ thống (Windows) ghi lại mỗi sự kiện xảy ra
(event) trong một thông điệp (message) đặt
trong hàng đợi thông điệp (messages queue)
Thông điệp phát sinh:
Từ hệ thống (Windows OS)
Từ ứng dụng
dụ: click/drag chuột, ấn phím,
minimize/maximize/close cửa sổ, thay đổi kích
thước cửa sổ, …
9
Lập trình Windows
Windows Message (cont.)
HĐH Windows đảm nhiệm việc truyền tất cả các
thông điệp của ứng dụng vào các cửa sổ khác nhau
của ứng dụng đó.
Một chương trình Windows phải chứa một hàm
đặc biệt để xử các thông điệp gọi hàm xử
cửa sổ WinProc (hoặc WindowProc):
Được gọi khi bất kỳ thông điệp được truyền
đến cửa sổ (thông qua con trỏ hàm)
Xử các thông điệp đó trả điều khiển về cho
hệ thống.
Nhiều thông điệp trả lại cho Windows xử , gọi
hàm DefWindowProc( ) 10
Lập trình Windows
Windows Message (cont.)
11
Lập trình Windows
Windows API
Application Programming Interface: Giao
diện lập trình ứng dụng
Cung cấp các hàm truy cập tài nguyên trong
hệ thống (Windows) chứa trong các thư viện
liên kết động DLL.
Các ứng dụng thể truy cập đến các hàm
API
Các hàm GDI (Graphics Device Interface) cho
phép ứng dụng làm việc với nhiều kiểu thiết
bị đồ họa.
12
Lập trình Windows
4
Windows Data Types (1)
Định nghĩa nhờ từ khóa typedef trong các tập tin (windef.h;
winbase.h, winuser.h được include trong windows.h).
dụ:
typedef int INT;
typedef unsigned int UINT;
char * PSTR
WPARAM (UINT) LPARAM (LONG) đều 32 bit
LRESULT: kiểu LONG
HANDLE: Một gi| trị 32bits không dấu (unsigned) do HĐH
tạo ra để l{m định danh cho 1 đối tượng (file, cửa sổ, vùng
nhớ, menu, toolbar…). Ví dụ : HWND, HINSTANCE,
hPrevInstance
13
Lập trình Windows
Windows Data Types (2)
Kiểu
Ý nghĩa
HANDLE
Số nguyên 32-bit, định danh.
HWND
Số nguyên 32-bit, định danh.
BYTE
Giá trị 8-bit không dấu.
WORD
Số nguyên 16-bit không dấu.
DWORD
Số nguyên 32-bit không dấu.
UINT
Số nguyên không dấu 32-bit.
LONG
long 32-bit.
BOOL
Kiểu logic True/False
LPSTR
Con trỏ chuỗi. (char *)
LPCSTR
Hằng con trỏ chuỗi.
WPARAM
32-bit.
LPARAM
32-bit.
BSTR
Giá trị 32-bit trỏ đến kí tự.
LPVOID
Con trỏ 32-bit đến một kiểu không xác định.
LPTSTR
Giống như LPSTR nhưng có thể chuyển sang dạng Unicode
DBCS.
LPCTSTR
Giống như LPCTSTR nhưng có thể chuyển sang dạng Unicode
DBCS.
14
Lập trình Windows
Microsoft style (1)
Tất cả c|c kiểu dữ liệu mở rộng của windows , tên class, tên
struct, tên hằng số định sẵn đều được viết in hoa
Ví dụ :
Tên kiểu dữ liệu : UINT , ATOM , HANDLE, HWND, BYTE,….
Tên cấu trúc : MSG, PAINSTRUCT, WNDCLASS ,....
Tên hằng số định sẵn : NULL, IDI_APPLICATION,
CS_VREDRAW,…..
Tt cả c|c method (c|c h{m, c|c phương thức) đều được viết
hoa (pascal notation).
Ví dụ :
LoadIcon(…)
LoadCursor(…)
SomeOtherName(…)
15
Lập trình Windows
Microsoft Style (2)
Qui ước: bắt đầu (tiền tố) chữ thường thể
hiện kiểu dữ liệu biến.
dụ: szCmdLine một biến lưu chuỗi nhập
từ dòng lệnh, sz thể hiện cho biến kiểu
chuỗi kết thúc tự 0,
hInstance hPrevInstance, trong đó h viết
tắt cho kiểu handle.
16
Lập trình Windows
5
Microsoft Style (3) Tiền tố tên biến
Tiền tố
Kiểu dữ liệu
c
char, WCHAR, TCHAR
by
BYTE
n
short
i
int
x,y
biến lưu tọa độ x, y
b
BOOL
w
WORD
l
long
dw
DWORD
s
string
sz
chuỗi kết thúc bởi kí tự 0
h
handle
p
pointer
Lpsz
con trỏ dài chuỗi ký tự kết thúc kí tự 0
17
Lập trình Windows
Microsoft style (4) - Calling convention
Định nghĩa kiểu h{m gọi bởi Windows OS
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
Thêm vào trước tên hàm để ch ra cho
compiler rằng hàm y cách tổ chức phục
vụ cho việc gọi đến như thế nào.
18
Lập trình Windows
1.2. Cấu trúc của chương trình Windows
19
Lập trình Windows
1.2. Cấu trúc của chương trình Windows
Chương trình Windows đơn giản (dùng hàm API)
gồm 2 hàm WinMain() hàm xử cửa sổ
WinProc().
WinMain() thực hiện các chức năng:
Tell Windows what kind of window the program requires
Create the program window
Initialize the program window
Retrieve Windows messages intended for the program
WinProc(): xử các thông điệp liên quan đến cửa
sổ của .
20
Lập trình Windows