Ths Trn Ngc Bo 1/4
BÀI TP THC HÀNH LP TRÌNH C FOR WINDOWS
1. Phn 1: Làm quen vi mt chương trình Win API
1.1. Bài 01 – Chương trình minh ha đầu tiên
- Yêu cu: To ng dng “Win32 Application” đơn gin bng Wizard trong visual C++ 6.0
- Hướng dn gi ý:
o Khi động Visual C++ 6.0
o Dùng chc năng New Project để to project mi
o Chn loi project “Win32 Application”
o Chn chc năng “A typical Hello World !” application
o Hoàn tt to project, biên dch và chy th chương trình, xem kết qu
1.2. Bài 02 – Chương trình minh ha đầu tiên (tt)
- u cu: Sa đổi chương trình trong bài 01
o Thay đổi tiêu đề ca ca s thành “Chương trình C/API”
o Thay đổi ni dung hin 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 dn gi ý:
o Thay đổi tiêu đề ca ca 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 ni dung hin 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 dch và chy th chương trình, xem kết qu
B GIÁO DC VÀ ĐÀO TO
TRƯỜNG ĐẠI HC SƯ PHM TP,HCM
KHOA TOÁN – TIN HC
http://www.hcmup.edu.vn
Bài tp thc hành lp trình C for Windows
Ths Trn Ngc Bo 2/4
1.3. Bài 03 - Tài nguyên ca ng dng
- Yêu cu: To ng dng tương t bài tp 01
o Thay đổi biu tượng (Icon) ca chương trình
o Thay đổi con tr chut (Cursor) ca chương trình
o Thay đổi ni dung ca hp thoi (Dialog) “About”
- Hướng dn gi ý:
o Thay đổi biu tượng (Icon) ca chương trình
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
Hoc
Thêm mi mt ICON
Sa lnh LoadIcon
//wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_ICON1);
o Thay đổi con tr chut (Cursor) ca chương trình
//wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hCursor = LoadCursor(NULL,IDC_WAIT);
Hoc
Thêm mi mt CURSOR
Sa lnh LoadCursor
//wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hCursor = LoadCursor(hInstance,(LPCTSTR)IDC_CURSOR1);
o Thay đổi ni dung ca hp thoi (Dialog) “About”
Chn Tab ResourceView
Click vào mc dialog
Double click “IDD_ABOUTBOX”
Sa ni dung “Bai03 Version 1.0” thành “Bai tap 03 phien ban 1.0”
o Biên dch và chy th chương trình, xem kết qu
1.4. Bài 04 - Tài nguyên ca ng dng (tt)
- Yêu cu: To ng dng tương t bài tp 01
o B sung thêm vào menu “File” các mc sau: New, Open, Save
o Thêm mi 1 menu popup “Edit” vi các item sau: Undo, Redo, Cut, Copy, Paste,
Delete
Bài tp thc hành lp trình C for Windows
Ths Trn Ngc Bo 3/4
o Mi menu item đều có phím tt tương ng
- Hướng dn gi ý:
o Chn Tab ResourceView
o Click vào mc Menu
o Double click “IDC_BAI04”
o B sung thêm vào menu “File” các mc sau: New, Open, Save
o Thêm mi 1 menu popup “Edit” vi các item sau: Undo, Redo, Cut, Copy, Paste,
Delete
1.5. Bài 05 - lp trình s kin
- Yêu cu: B sung bài tp 04
o Khi người dùng chn menu item, hin th thông báo “Bn va chn chc năng xyz”
o Khi thoát chương trình hin th thông báo hi “Bn có mun thoát khi chương trình
không” ?
- Hướng dn gi ý:
o Khi người dùng chn menu item, hin th thông báo “Bn va chn chc 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;…
}
Bài tp thc hành lp trình C for Windows
Ths Trn Ngc Bo 4/4
o Khi thoát chương trình hin th dialog hi “Bn có mun thoát khi chương trình
không” ?
Thay ni dung đon 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 - Lp trình s kin (tt)
- Yêu cu: B sung bài tp 05
o Khi người dùng click chut trái, hin th thông báo “Bn va nhan trai chuot, toa do
X = , Y = ”
o Khi người dùng click chut phi, hin th thông báo “Bn va nhan phai chuot, toa do
X = , Y = ”
- Hướng dn gi ý:
o Khi người dùng click chut trái, hin th thông báo “Bn va nhan trai chuot, toa do
X = , Y = ”
X lý s kin WM_LBUTTONDOWN
X = LOWORD(lParam);
Y = HIWORD(lParam);
o Khi người dùng click chut phi, hin th thông báo “Bn va nhan phai chuot, toa do
X = , Y = ”
X lý s kin WM_RBUTTONDOWN
X = LOWORD(lParam);
Y = HIWORD(lParam);