© 2009, Nguyen Tri Tuan – Khoa CNTT ĐH.KHTN. TP.HCM 1/2
Môn học Lập trình Windows (Windows Programming)
Bài tập thực hành – Phần 1
Thời gian thực hiện: 01 tuần
---oOo---
Phần 1: Lập trình bằng thư viện WIN32 API
1. Làm quen với 1 chương trình C/C++ viết trên thư viện Win32 API
a. Phần 1:
- Tạo project loại Win32 (Win32 project), sau đó biên dịch và chạy thử nghiệm
chương trình
b. Phần 2:
- Thay đổi tiêu đề của của sổ thành “Chuong trinh C/Win32 API”
- Thay đổi nội dung hiển thị trên vùng client của cửa sổ thành:
“Day la chuong trinh dau tien…
… viet bang Visual C++…
… tren HDH Windows…
… bang thu vien Win32 API.“
2. Tài nguyên của chương trình:
Lấy chương trình kết quả của bài tập 1, thực hiện tiếp:
a. Phần 1:
- Thay đổi biểu tượng (icon) của chương trình
- Thay đổi con trỏ chuột: dùng con trỏ có sẵn IDC_CROSS hay tự vẽ một cursor mới.
- Thay đổi nội dung của hộp thoại “About”
b. Phần 2:
- Bổ sung thêm vào menu “File” các mục sau: New, Open, Save
- Thêm mới 1 menu popup “Edit” với các item sau: Undo, Cut, Copy, Paste, Select all
- Mỗi menu item đều có phím tắt tương ứng (vd. Open Ctrl+O)
3. Lập trình sự kiện:
Lấy chương trình kết quả của bài tập 2, thực hiện tiếp:
a. Phần 1:
- Thêm xử lý trong hàm xử lý message, để khi user chọn menu item nào thì hiện
messagebox thông báo tương ứng. VD. “Ban vua chon chuc nang XYZ.”
- Khi user thoát chương trình bằng menu “Quit” hay close cửa sổ: hiển thị message-
box yêu cầu xác nhận “Ban muon thoat ung dung ?”. Nếu user chọn YES huỷ
cửa sổ và thoát ứng dụng; nếu user chọn NO thì không thoát.
b. Phần 2:
- Khi user click mouse trái/phải, hiển thị message-box thông báo:
c. Phần 3:
- Khi cửa sổ được tạo (WM_CREATE), hãy thể hiện 1 message-box ghi lời giới
thiệu chương trình:
© 2009, Nguyen Tri Tuan – Khoa CNTT ĐH.KHTN. TP.HCM 2/2
4. Chương trình “Clock” - Sử dụng bộ định giờ (Timer)
a. Phần 1:
- Viết chương trình có 1 cửa sổ giao diện, kích thước 300x100 pixel, không menu,
chỉ có Close button (hình vẽ)
b. Phần 2:
- Định nghĩa 1 bộ định giờ, với chu kỳ 1 giây (dùng hàm SetTimer)
- Ứng với thông điệp WM_TIMER, hiển thị giờ hiện tại lên cửa sổ giao diện (hình vẽ)
- Khi kết thúc chương trình (Close window), huỷ bộ định giờ (dùng hàm KillTimer)
Ghi chú:
- Dùng font Arial, size = 28 (tạo handle font
bằng hàm CreateFont hay
CreateFontIndirect).
5. Window class (lớp cửa sổ)
Viết một chương trình theo các yêu cầu sau:
- Chương trình đăng ký 3 lớp cửa sổ (hàm RegisterClass) với 3 hàm xử lý message
tương ứng.
- Mô tả các hàm xử lý message:
o Với cửa sổ thuộc class-1: nếu user click mouse trái vẽ một đường tròn
bán kính 100 pixel, tâm là điểm click mouse (hàm Ellipse)
o Với cửa sổ thuộc class-2: nếu user click mouse trái vẽ một hình vuông,
cạnh 100 pixel, tâm là điểm click mouse (hàm Rectangle)
o Với cửa sổ thuộc class-3: nếu user click mouse trái vẽ một hình vuông,
cạnh 200 pixel, tâm là điểm click mouse, tô màu cam (Red=255,
Green=128, Blue=64) (tạo brush handle dùng hàm CreateSolidBrush)
- Ứng dụng có 3 menu item: “Class-1”, “Class-2” và “Class-3”. Khi user chọn một
menu item, thì ứng dụng tạo ra một cửa sổ thuộc lớp tương ứng. Tiêu đề cửa sổ có
dạng “Class X – Window Y”, trong đó:
o X = 1, 2 hay 3
o Y: số thứ tự của cửa sổ thuộc class X
- Hết phần 1 -