TH Lập trình Windows Chương 1-2
Baøi taäp chương 1
1. Viết chương trình hiển thị màn hình như sau:
Hướng dẫn:
1/9
TH Lập trình Windows Chương 1-2
2/9
TH Lập trình Windows Chương 1-2
3/9
TH Lập trình Windows Chương 1-2
4/9
TH Lập trình Windows Chương 1-2
2. Từ chương trình câu 1, thay đổi một số thuộc tính của cửa sổ lần lượt như sau:
5/9
TH Lập trình Windows Chương 1-2
-
3. Lần lượt thay đổi trạng thái cửa sổ như sau:
• Nằm ở giữa màn hình, kích thước 640x480
• Luôn nằm trên các cửa sổ khác .
• Không thể thay đổi kích thước
• Cửa sổ phóng to đầy màn hình
Gợi ý: sử dụng các hàm thuộc lớp CWnd: Create, ShowWindow, SetWindowPos
Baøi taäp chương 2
1. Bài 1
6/9
TH Lập trình Windows Chương 1-2
Gợi ý:
- Sử dụng hàm GetClientRect để lấy kích thước vùng Client
- Chia vùng Client thành 4 phần bằng nhau, mỗi phần là một hình chữ nhật
- Sử dụng các đối tượng CPen, CBrush và các hàm Ellipse, Chord, Pie, RoundRect,
SetTextColor, SetBkMode, DrawText
Ví dụ: hàm vẽ Ellipse:
7/9
TH Lập trình Windows Chương 1-2
2. Bài 2
Gợi ý:
- Tính kích thước bitmap, mỗi ảnh sau có kích thước gấp 2 lần ảnh trước
- Sử dụng hàm BitBlt và StretchBlt.
8/9
TH Lập trình Windows Chương 1-2
3. Bài 3
9/9
TH Lập trình Windows Chương 3
Baøi taäp chương 3
1. Dùng MFC AppWizard xây dựng ứng dụng sau:
Chuỗi Hello!MFC có thể chuyển động theo các phương:
- Sang trái : khi nhấn phím ←
- Sang phải: khi nhấn phím →
- Đi lên: khi nhấn phím ↑
- Đi xuống: khi nhấn phím ↓
- Phím S: Start – Stop chuyển động
Gợi ý:
- Sử dụng MDC và các hàm LoadBitmap, StretchBlt để load ảnh nền.
- Tạo font chữ, sử dụng các hàm SetTextColor, DrawText để xuất chuỗi
Hello!MFC
- Chuỗi Hello!MFC nằm trong một frame hình chữ nhật (CRect). Để thay đổi vị trí
chuỗi, chỉ cần di chuyển frame. Chú ý: Để tính toán kích thước frame trên, sử
dụng hàm GetTextMetrics kết hợp với độ dài chuỗi.
- Khai báo hàm xử lý sự kiện WM_TIMER. Trong hàm OnTimer, cập nhật lại vị trí
frame tuỳ theo chiều di chuyể
n đang được chọn
- Khai báo hàm xử lý sự kiện WM_KEYDOWN. Trong hàm OnKeyDown, cập
nhật lại chiều chuyển động dựa vào giá trị các phím được nhấn
1/7
TH Lập trình Windows Chương 3
Ví dụ:
- Khai báo các biến thuộc lớp CChildView:
- Tạo MDC:
- Load ảnh nền:
- Tính kích thước và vị trí frame chứa chuỗi Hello!MFC:
2/7
TH Lập trình Windows Chương 3
- Xử lý sự kiện nhấn phím:
- Xử lý sự kiện WM_TIMER:
3/7
TH Lập trình Windows Chương 3
2. Dùng MFC AppWizard xây dựng ứng dụng vẽ tự do như sau:
Yêu cầu:
- Giữ chuột trái rê vẽ tự do
- Khi nhấn một trong các phím:
o ‘R’, ‘G’, ‘B’: nét vẽ chuyển sang màu tượng ứng (Red, Green, Blue)
o Phím ‘A’, ‘C’: thay đổi con trỏ chuột (tùy ý), phím ‘E’: về dạng mặc định
o Phím ↑, ↓: thay đổi độ dày nét vẽ ( 1 ≤ nét vẽ ≤ 20)
o Phím Delete: xóa màn hình
- Khi click chuột trên thanh tiêu đề: thay đổi tiêu đề cửa sổ
Gợi ý:
- Để thực hiện được thao tác vẽ, sử dụng các hàm xử lý sự kiện nhấn chuột
(WM_LBUTTONDOWN) để bắt đầu chọn vị trí vẽ và di chuyển chuột
(WM_MOUSEMOVE ) thực hiện thao tác vẽ.
4/7
TH Lập trình Windows Chương 3
- Thay đổi con trỏ chuột và độ dày nét vẽ thực hiện trong hàm OnKeyDown
- Để thay đổi tiêu đề khi click trên thanh tiêu đề cửa sổ, xử lý sự kiện
WM_NCLBUTTONDOWN của lớp CmainFrame
Ví dụ:
Trong lớp CChildView, khai báo các biến, các hàm và viết code cho các hàm:
// CChildView.h
//Hàm thay đổi con trỏ chuột
//Nhấn nút trái chuột
//Di chuyển chuột
5/7
TH Lập trình Windows Chương 3
//Nhấn phím
//Thay đổi con trỏ chuột
6/7
TH Lập trình Windows Chương 3
//Nhấn nút trái chuột ngoài vùng client
7/7
TH Lập trình Windows Chương 4
Bài tập chương 4
Dùng MFC AppWizard xây dựng ứng dụng vẽ các đoạn thẳng như sau:
Yêu cầu: Dùng chuột rê vẽ các đoạn thẳng, cho phép lưu vào file có tên Lines.dat
- Chúc năng bàn phím:
Thay đổi màu vẽ:
Phím R: đỏ
Phím G: màu xanh lá
Phím B: màu xanh dương
Lưu vào file: phím S
Load từ file: phím L
Xoá màn hình: phím C
Gợi ý:
Xây dựng lớp CLine kế thừ từ CObject:
1/2
TH Lập trình Windows Chương 4
Định nghĩa hàm Serialize:
Trong lớp CChildView , khai báo danh sách các đối tượng CLine:
CArray <CLine*,CLine*> m_arrLines;
Để vẽ một đoạn thẳng, sử dụng các hàm xử lý sự kiện:
- Nhấn chuột (WM_LBUTTONDOWN): xác định hai điểm của đoạn thẳng,
đưa đoạn thẳng vào danh sách m_arrLines.
- Di chuyển chuột (WM_MOUSEMOVE ): cập nhật vị trí điểm thứ hai của
đoạn thẳng và thực hiện thao tác vẽ.
- Nh
ả chuột (WM_LBUTTONUP): kết thúc thao tác vẽ đoạn thẳng.
Để lưu và load danh sách các đoạn thẳng đã vẽ, trong lớp CChildView, khai báo
và định nghĩa hàm Serialize:
2/2
THỰC HÀNH BÀI DRAWS
PHẦN I:
1) Tạo ứng dụng SDI:
2) Tạo class CShape