BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM TP,HCM KHOA TOÁN – TIN HỌC http://www.hcmup.edu.vn
BÀI TẬP THỰC HÀNH LẬP TRÌNH C FOR WINDOWS 1. Phần 1: Làm quen với một chương trình Win API 1.1. Bài 01 – Chương trình minh họa đầu tiên -
Yêu cầu: Tạo ứng dụng “Win32 Application” đơn giản bằng Wizard trong visual C++ 6.0
-
Hướng dẫn gợi ý: o Khởi động Visual C++ 6.0 o Dùng chức năng New Project để tạo project mới o Chọn loại project “Win32 Application” o Chọn chức năng “A typical Hello World !” application o Hoàn tất tạo project, biên dịch và chạy thử chương trình, xem kết quả
1.2. Bài 02 – Chương trình minh họa đầu tiên (tt) - Yêu cầu: Sửa đổi chương trình trong bài 01 o Thay đổi tiêu đề của cửa sổ thành “Chương trình C/API” o Thay đổi nội dung hiển thị trên màn hình Client area thành “Day la chuong trinh minh hoa tao ung dung Windows trong visual C++ bang thu vien API Tac gia: Nguyen Van A…” - Hướng dẫn gợi ý: o Thay đổi tiêu đề của cửa sổ thành “Chương trình C/API” // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); strcpy(szTitle,"Chuong trinh C/API"); o Thay đổi nội dung hiển thị trên màn hình Client area thành GetClientRect(hWnd, &rt); strcpy(szHello,"Day la chuong trinh minh hoa tao ung dung Windows\n\r trong visual C++ bang thu vien API \n\rTac gia: Nguyen Van A"); DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER); o Biên dịch và chạy thử chương trình, xem kết quả
Ths Trần Ngọc Bảo
1/4
Bài tập thực hành lập trình C for Windows 1.3. Bài 03 - Tài nguyên của ứng dụng -
Yêu cầu: Tạo ứng dụng tương tự bài tập 01 o Thay đổi biểu tượng (Icon) của chương trình o Thay đổi con trỏ chuột (Cursor) của chương trình o Thay đổi nội dung của hộp thoại (Dialog) “About”
-
Hướng dẫn gợi ý: o Thay đổi biểu tượng (Icon) của chương trình wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); Hoặc
Thêm mới một ICON
Sửa lệnh LoadIcon
//wcex.hIconSm
= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
wcex.hIconSm
= LoadIcon(wcex.hInstance, (LPCTSTR)IDI_ICON1);
o Thay đổi con trỏ chuột (Cursor) của chương trình //wcex.hCursor wcex.hCursor
= LoadCursor(NULL, IDC_ARROW); = LoadCursor(NULL,IDC_WAIT);
Hoặc
Thêm mới một CURSOR
Sửa lệnh LoadCursor
//wcex.hCursor
= LoadCursor(NULL, IDC_ARROW);
wcex.hCursor
= LoadCursor(hInstance,(LPCTSTR)IDC_CURSOR1);
o Thay đổi nội dung của hộp thoại (Dialog) “About”
Chọn Tab ResourceView
Click vào mục dialog
Double click “IDD_ABOUTBOX”
Sửa nội dung “Bai03 Version 1.0” thành “Bai tap 03 phien ban 1.0”
o Biên dịch và chạy thử chương trình, xem kết quả 1.4. Bài 04 - Tài nguyên của ứng dụng (tt) -
Yêu cầu: Tạo ứng dụng tương tự bài tập 01 o Bổ sung thêm vào menu “File” các mục sau: New, Open, Save o Thêm mới 1 menu popup “Edit” với các item sau: Undo, Redo, Cut, Copy, Paste, Delete
Ths Trần Ngọc Bảo
2/4
Bài tập thực hành lập trình C for Windows o Mỗi menu item đều có phím tắt tương ứng -
Hướng dẫn gợi ý: o Chọn Tab ResourceView o Click vào mục Menu o Double click “IDC_BAI04” o Bổ sung thêm vào menu “File” các mục sau: New, Open, Save o Thêm mới 1 menu popup “Edit” với các item sau: Undo, Redo, Cut, Copy, Paste, Delete
1.5. Bài 05 - lập trình sự kiện -
Yêu cầu: Bổ sung bài tập 04 o Khi người dùng chọn menu item, hiển thị thông báo “Bạn vừa chọn chức năng xyz” o Khi thoát chương trình hiển thị thông báo hỏi “Bạn có muốn thoát khỏi chương trình không” ?
-
Hướng dẫn gợi ý: o Khi người dùng chọn menu item, hiển thị thông báo “Bạn vừa chọn chức năng xyz” Viết xử lý cho các menu item trong message WM_COMMAND trong hàm WndProc case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About); break; case IDM_OPEN: MessageBox(hWnd,"Ban dang chon chuc nang Open","Thong bao",MB_OK|MB_ICONEXCLAMATION); break; case IDM_NEW: MessageBox(hWnd,"Ban dang chon chuc nang NEW","Thong bao",MB_OK|MB_ICONEXCLAMATION); break;… }
Ths Trần Ngọc Bảo
3/4
Bài tập thực hành lập trình C for Windows o Khi thoát chương trình hiển thị dialog hỏi “Bạn có muốn thoát khỏi chương trình không” ?
Thay nội dung đoạn code xử lý “case IDM_EXIT:” trong hàm LRESULT CALLBACK WndProc /*case IDM_EXIT: DestroyWindow(hWnd); break; */ case IDM_EXIT: int nRes; nRes
=
MessageBox(hWnd,"Ban
co
muon
thoat
khong
?","Confirm",MB_OKCANCEL|MB_ICONQUESTION); if (nRes == IDOK) DestroyWindow(hWnd); break; 1.6. Bài 06 - Lập trình sự kiện (tt) -
Yêu cầu: Bổ sung bài tập 05 o Khi người dùng click chuột trái, hiển thị thông báo “Bạn vừa nhan trai chuot, toa do X=,Y=” o Khi người dùng click chuột phải, hiển thị thông báo “Bạn vừa nhan phai chuot, toa do X=,Y=”
-
Hướng dẫn gợi ý: o Khi người dùng click chuột trái, hiển thị thông báo “Bạn vừa nhan trai chuot, toa do X=,Y=”
Xử lý sự kiện WM_LBUTTONDOWN
X = LOWORD(lParam);
Y = HIWORD(lParam);
o Khi người dùng click chuột phải, hiển thị thông báo “Bạn vừa nhan phai chuot, toa do X=,Y=”
Xử lý sự kiện WM_RBUTTONDOWN
X = LOWORD(lParam);
Y = HIWORD(lParam);
Ths Trần Ngọc Bảo
4/4