Tải bản đầy đủ (.ppt) (98 trang)

Bài giảng lập trình C trên Win

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 (1.08 MB, 98 trang )

BÀI GIẢNG
LẬP TRÌNH C TRÊN WIN
Lương Văn Vân

Khoa cơng nghệ thông tin


MỘT SỐ TIÊU ĐIỂM CỦA MƠN HỌC
Lập trình C trên Windows



Tổng số tiết:
 Lý thuyết:
 Bài tập:
 Thực hành:



Sinh viên cần phải được học trước các mơn
 Lập trình C



Thi kết thúc mơn học bằng hình thức thi
thực hành.

Khoa cơng nghệ thông tin

105 tiết
45 tiết


0 tiết
60 tiết

2


TÀI LIỆU THAM KHẢO
Lập trình C trên Windows



1. Lập trình WinDows bằng Visual C++, Đặng
Văn Đức – Lê Quốc Hưng, NXB Giáo dục, 2001.



2. Lập trình C trên Win, Đặng Văn Đức, Nhà
xuất bản Khoa học kỹ thuật, 1998.



3. Bài giảng Lập trình C trên Windows.



4. www.codeproject.com, www.codeguru.com

Khoa cơng nghệ thông tin

3



NỘI DUNG
Lập trình C trên Windows

1

TỔNG QUAN LẬP TRÌNH C TRÊN WIN

2

HỘP THOẠI VÀ THANH TRÌNH ĐƠN

3

CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN

4

XỬ LÝ BÀN PHÍM, CHUỘT VÀ TIMER

5

XỬ LÝ VĂN BẢN VÀ FONT CHỮ

6

ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDI

Khoa công nghệ thông tin


4


Chương 1: TỔNG QUAN LẬP TRÌNH C TRÊN WINDOWS
Lập trình C trên Windows

Mở đầu
Hệ điều hành Microsoft Windows
Lập trình trên Microsoft Windows
Cách viết một ứng dụng trên MS Windows

Khoa công nghệ thông tin


1.1: MỞ ĐẦU
Lập trình C trên Windows



Các ứng dụng của Windows rất dễ sữ dụng,
nhưng rất khó đối với người tạo lập ra
chúng.



Lập trình trên Windows khó và phức tạp hơn
nhiều so với lập trình trên Dos.




Windows cung cấp các hàm để người lập
trình thâm nhập các đặc trưng của hệ điều
hành gọi là giao diện lập trình ứng dụng
(API). Những hàm này đặt trong các thư viện
liên kết động (.DLL).

Khoa công nghệ thông tin

6


1.2: HỆ ĐIỀU HÀNH MICROSOFT WINDOWS
Lập trình C trên Windows



Hệ điều hành Windows giao tiếp với người sử dụng
bằng mơi trường đồ họa (graphic).



Windows là hệ thống đa nhiệm cho phép nhiều ứng
dụng cùng thi hành đồng thời



Windows cho phép chạy một ứng dụng mà mã của
nó lớn hơn bộ nhớ hiện có nhờ vào cơ chế bộ nhớ ảo.




Windows cung cấp cơ chế thư viện liên kết động



Hàng đợi nhập dữ liệu

Khoa công nghệ thông tin

7


1.3: LẬP TRÌNH TRÊN MICROSOFT WINDOWS
Lập trình C trên Windows



Cơ chế lập trình trong Windows: Một chương trình
ứng dụng người lập trình phải xây dựng, khai báo, kế thừa
các tài nguyên về giao diện.


Cửa sổ:



Thực đơn




Hộp hội thoại

Khoa công nghệ thông tin

8


1.3: LẬP TRÌNH TRÊN MICROSOFT WINDOWS
Lập trình C trên Windows



Sự khác biệt so với lập trình trên MS-Dos

Khoa cơng nghệ thông tin

9


1.3: LẬP TRÌNH TRÊN MICROSOFT WINDOWS
Lập trình C trên Windows



Cơ chế thông điệp:

Khoa công nghệ thông tin

10



1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

Các thành phần cơ bản tạo nên ứng dụng


Chương trình nguồn:


Bao gồm các tập tin *.C và *.H tương tự như các chương
trình trong C chuẩn cho DOS. Tuy nhiên trong đó là các
cấu trúc đặc thù cho Windows



Tập tin *.H để định nghĩa các hằng số, khai báo biến, khai
báo hàm,...

Khoa công nghệ thông tin

11


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows




Tập khai báo tài nguyên :




Tất cả các tài ngun được mơ tả tóm tắt trong tập tin có tên phụ là
*.RC
Tài nguyên cho một ứng thường bao gồm :
• Biểu tượng của ứng dụng (Icon)
• Con trỏ màn hình(cursor)
• Các hình ảnh (bitmap)
• Hộp hội thoại (Dialog)
• Khai báo control
• Menu cho ứng dụng

Khoa cơng nghệ thơng tin

12


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

 Tập


Các thuộc tính chẳng hạn như kích thước stack, kích
thước heap,.... được khai báo trong tập tin .DEF. Nếu
khơng có chương trình ứng dụng cài đặt giá trị mặc
định.


 Tập


tin khai báo các thuộc tính cho ứng dụng

tin đề án :

Tên_Dự_án.DSW (*.DSW)

Khoa công nghệ thông tin

13


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows



Hàm WinMain
int WINAPI WinMain ( HINSTANCE hInstance,
HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int
nCmdShow)

hInstance chỉ danh của instance hiện hành

hPrevInstance chỉ danh của instance vừa chạy lần trước. Nếu có
thì tham số khác khơng , nếu tham số bằng 0 thì hInstance là
instance đầu tiên của ứng dụng.


lpszCmdLine : câu lệnh gọi từ chức năng Run trong thực đơn File
của Program Manager, giống như đối số argc của hàm main()
trong C chuẩn và có kiểu char far * (LPSTR).

nCmdShow : Qui định cách thức thể hiện window của ứng dụng

Khoa công nghệ thông tin

14


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

 Các

thành phần của hàm WinMain

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







WNDCLASS wndclass; // biến để định nghĩa một cửa sổ
// Định nghĩa kiểu cửa sổ
wndclass.style = SC_HREDRAW | CS_VREDRAW;

wndclass.lpfnWndProc = WndProc; // Hàm thủ tục cửa sổ
wndclass.cbClsExtra = 0;//Giá trị mở rộng của lớp
wndclass.cbWndExtra = 0;//

Khoa công nghệ thông tin

15


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

//

Định nghĩa kiểu cửa sổ

(tt):



wndclass.hInstance = hInstance; // Định danh ứng dụng



wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);



wndclass.hCursor = LoadCusor (NULL, IDC_ARROW);




wndclass.hbrBackground =
(HBRUSH)GetStockObject(WHITE_BRUSH);



wndclass.lpszMenuName = NULL; // Khơng có menu



wndclass.lpszClassName = szAppName; // tên ứng dụng

Khoa công nghệ thông tin

16


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

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


if (!RegisterClass(&wndclass)) return 0

Khoa công nghệ thông tin

17



1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

// Tạo lập cửa sổ












hwnd = CreateWindow (szAppName, // Tên cửa sổ
"Hello Program", // Tiêu đề
WS_OVERLAPPEDWINDOW, // Kiểu cửa sổ
CW_USEDEFAULT, // Tọa độ x
CW_USEDEFAULT, // Tọa độ y
CW_USEDEFAULT, // Chiều rộng
CW_USEDEFAULT, // Chiều dài
NULL, // Cửa sổ cha
NULL, // Khơng có menu
hInstacne, // Định danh ứng dụng
NULL); // Tham số bổ sung

Khoa công nghệ thông tin


18


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

// Hiển thị cửa sổ



ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);

Khoa công nghệ thông tin

19


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

// Chu trình xử lý các thơng điệp
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}



Khoa công nghệ thông tin

20


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

Hàm window (window function)








Một ứng dụng giao tiếp với người sử dụng qua một hay nhiều
window, mỗi window trong ứng dụng được kết hợp với một
window function.
Nhiệm vụ của hàm window là xử lý các message do hệ điều
hành Windows hay WinMain gởi tới.
Một ứng dụng viết trên Windows không bao giờ gọi trực tiếp
window function.

LRESULT CALLBACK WndProc(HWND hWnd, UINT
Message,WPARAM wParam, LPARAM lParam);
Khoa công nghệ thông tin


21


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

/*Xử lý các thông điệp cần thiết với ứng dụng*/










case WM_CREATE:
/*Viết đoạn mã khi tạo cửa sổ*/
return 0;
case WM_PAINT:
/*Viết đoạn mã khi tô vẽ lại cửa sổ*/
return 0;
case WM_SIZE:
/*Viết đoạn mã khi kích thước cửa sổ thay đổi*/
return 0;
case WM_DESTROY:
/*Cửa sổ bị đóng*/
PostQuitMessage (0);

return 0;

Khoa cơng nghệ thơng tin

22


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

Thông điệp WM_DESTROY




Thông điệp này chỉ định rằng Windows đang trong quá trình
hủy một cửa sổ khi người sử dụng click vào nút close button
hay chọn close trong thực đơn hệ thống.



Thông điệp này được Windows gởi đến hàm window thông
qua tham số Message của hàm window.



Xử lý thông thường của thơng điệp này là kết thúc chương
trình bởi vì người sử dụng huỷ bỏ cửa sổ chính. Để kết thúc
chương trình gọi hàm PostQuitMessage(0), hàm này gởi đi
thơng điệp WM_QUIT làm cho message loop kết thúc.


Khoa công nghệ thông tin

23


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

Thông điệp WM_CREATE




Hàm window nhận được thông điệp này khi Windows đang xử
lý hàm CreateWindow trong hàm WinMain, tức là lúc chương
trình mới bắt đầu.



Thơng điệp này gởi đến hàm window qua thông số Message
của hàm window.



Thông điệp gởi đi khi chương trình mới bắt đầu do đó việc xử
lý message là thường khởi động các giá trị ban đầu của chương
trình ứng dụng.

Khoa cơng nghệ thơng tin


24


1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
Lập trình C trên Windows

Thông điệp WM_PAINT








Thông điệp WM_PAINT được phát đi khi một phần hay tất cả
vùng client (vùng làm việc của cửa sổ) bị không hợp lệ và cần
cập nhật, vẽ lại.
Một vùng client không hợp lệ khi cửa sổ đầu tiên được tạo ra,
khi người sử dụng thay đổi kích thước cửa sổ, khi người sử
dụng di chuyển các cửa sổ xung quanh màn hình để chúng xếp
chồng lên nhau Windows không lưu các vùng cửa sổ chị che
nên khi khơng bị che thì chúng bị bất hợp lệ.
Thơng điệp này được gởi qua thông số Message của hàm
window và việc xử lý thông điệp này luôn bắt đầu bằng hàm
BeginPaint, và kết thúc bằng EndPaint.

Khoa công nghệ thông tin


25


×