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

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

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.94 MB, 98 trang )

Khoa công nghệ thông tin
Lương Văn Vân
BÀI GIẢNG
BÀI GIẢNG
LẬP TRÌNH C TRÊN WIN
LẬP TRÌNH C TRÊN WIN
Khoa công nghệ thông tin
MỘT SỐ TIÊU ĐIỂM CỦA MÔN HỌC

Tổng số tiết: 105 tiết

Lý thuyết: 45 tiết

Bài tập: 0 tiết

Thực hành: 60 tiết

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.
Lập trình C trên Windows
2
Khoa công nghệ thông tin
TÀI LIỆU THAM KHẢO

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
Lập trình C trên Windows
3
Khoa công nghệ thông tin
Lập trình C trên Windows
4
NỘI DUNG
TỔNG QUAN LẬP TRÌNH C TRÊN WIN
1
HỘP THOẠI VÀ THANH TRÌNH ĐƠN
2
CÁC ĐỐI TƯỢNG ĐIỀU KHIỂN
3
XỬ LÝ BÀN PHÍM, CHUỘT VÀ TIMER
4
XỬ LÝ VĂN BẢN VÀ FONT CHỮ
5
ĐỒ HỌA VÀ CÁC ĐỐI TƯỢNG GDI
6
Khoa công nghệ thông tin
Chương 1: TỔNG QUAN 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

Lập trình C trên Windows
Khoa công nghệ thông tin
1.1: MỞ ĐẦU

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).
6
Lập trình C trên Windows
Khoa công nghệ thông tin
1.2: HỆ ĐIỀU HÀNH MICROSOFT 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
7
Lập trình C trên Windows
Khoa công nghệ thông tin
1.3: LẬP TRÌNH TRÊN MICROSOFT 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
8
Lập trình C trên Windows
Khoa công nghệ thông tin
1.3: LẬP TRÌNH TRÊN MICROSOFT WINDOWS

Sự khác biệt so với lập trình trên MS-Dos
9
Lập trình C trên Windows
Khoa công nghệ thông tin
1.3: LẬP TRÌNH TRÊN MICROSOFT WINDOWS

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

10
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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,
11
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS

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

Tất cả các tài nguyên đượ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
12
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS

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

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 đề án :

Tên_Dự_án.DSW (*.DSW)
13
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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
14
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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;//
15
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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
16
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
// Đăng ký lớp cửa sổ

if (!RegisterClass(&wndclass)) return 0
17
Lập trình C trên Windows
Khoa công nghệ thông tin

1.4: CÁCH VIẾT MỘT UD TRÊN MS 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
18
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS WINDOWS
// Hiển thị cửa sổ


ShowWindow (hwnd, iCmdShow);

UpdateWindow (hwnd);
19
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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;
}
20
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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);
21
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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;
22
Lập trình C trên Windows
Khoa công nghệ thông tin

1.4: CÁCH VIẾT MỘT UD TRÊN MS 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.
23
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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.
24
Lập trình C trên Windows
Khoa công nghệ thông tin
1.4: CÁCH VIẾT MỘT UD TRÊN MS 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.
25
Lập trình C trên Windows

×