LẬP TRÌNH WINDOWS - Ví dụ và Bài tập
Chia sẻ: ™——† Lvlr. DK †——™ »»» V.I.P ««« | Ngày: | Loại File: PDF | Số trang:27
lượt xem 206
download
Tham khảo tài liệu 'lập trình windows - ví dụ và bài tập', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: LẬP TRÌNH WINDOWS - Ví dụ và Bài tập
- Lập trình C trên Windows Ví dụ và Bài tập Nguyễn Đức Hoàng Hạ Khoa CNTT – Trường ĐHKHTN Email: ndhha@fit.hcmuns.edu.vn 1
- WinMain • int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { //1. hInstanceàĐăng ký loại cửa sổ mới //2. Tạo một cửa sổàhWnd //3. Thực hiện vòng lập nhận và gửi xử lý thông điệp return 0; } 2
- RegisterClassEx WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BBBBB); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = (LPCSTR)IDC_BBBBB; wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(hInstance,(LPCTSTR)IDI_SMALL); RegisterClassEx(&wcex); 3
- CreateWindow • hWnd = CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, 100, 200, //trái - trên 500, 300, //rộng - cao NULL, // cửa sổ cha NULL, // menu hInstance, NULL ); • WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX 4
- DialogBox int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, LPCTSTR(IDD_DIALOG1), NULL, DLGPROC(dlgProc) ); return 0; } 5
- Resource 6
- Resource 7
- Resource 8
- Resource 9
- WndProc-DlgProc • LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); • INT_PTR CALLBACK dlgProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); 10
- MOUSE • WM_LBUTTONDOWN - WM_LBUTTONUP - WM_LBUTTONDBLCLK • WM_RBUTTONDOWN - WM_RBUTTONUP - WM_RBUTTONDBLCLK • WM_MOUSEMOVE • wParam: ghi nhận các phím đặc biệt – MK_CONTROL – MK_SHIFT – MK_LBUTTON, MK_RBUTTON, MK_MBUTTON • lParam: – x = LOWORD(lParam) – Y = HIWORD(lParam) 11
- Ví dụ 1 Dùng chuột vẽ đoạn thẳng • Mô tả bài toán: – Nhấn chuột trái chọn điểm đầu – Nhấn chuột phải chọn điểm cuối – Khi có thay đổi thì vẽ lại ra màn hình • Yêu cầu: – Thiết kế dữ liệu – Viết mã giả xử lý cho các sự kiện sau: • WM_CREATE • WM_PAINT • WM_LBUTTONDOWN • WM_RBUTTONDOWN 12
- Ví dụ 1 • Dữ liệu: POINT P1, P2; • WM_CREATE: P1.x = P1.y = 0; P2.x = P2.y = 0; • WM_LBUTTONDOWN: P1.x = LOWORD(lParam); P1.y = HIWORD(lParam); • WM_RBUTTONDOWN: P2.x = LOWORD(lParam); P2.y = HIWORD(lParam); InvalidateRect(hWnd, NULL,TRUE); //Vẽ lại màn hình • WM_PAINT: MoveTo(hdc,P1.x, P1.y); LineTo(hdc,P2.x, P2.y); 13
- Bài tập 1 • Mô tả bài toán: – Nhấn chuột trái chọn điểm đầu – Thả chuột trái chọn điểm cuối – Khi có thay đổi thì vẽ lại ra màn hình • Yêu cầu: – Thiết kế dữ liệu – Viết mã giả xử lý cho các sự kiện sau: • WM_CREATE, WM_PAINT • WM_LBUTTONDOWN, WM_LBUTTONUP • WM_MOUSEMOVE 14
- TIMER • UINT_PTR SetTimer(HWND hWnd, UINT_PTR nID, UINT uElapse, //số nhịp TIMERPROC lpTimerFunc ); • WM_TIMER: wParam == nID • 1 giây = 1000 nhịp • Ví dụ: SetTimer(hWnd, 1, 500, NULL); • Khi không dùng nữa thì dùng lệnh KillTimer để hủy: KillTimer(hWnd, nID) • Thường lệnh SetTimer được đặt trong sự kiện WM_CREATE và KillTimer đặt trong sự kiện WM_DESTROY 15
- Ví dụ 2 Mô phỏng banh rơi • Mô tả bài toán: – Một quả banh rơi tự do từ độ cao H xuống nền rồi dội lên lại độ cao H. • Yêu cầu: – Thiết kế dữ liệu – Viết mã giả xử lý cho các sự kiện sau: • WM_CREATE, WM_DESTROY • WM_PAINT • WM_TIMER 16
- Ví dụ 2 • Dữ liệu: double h; //độ cao hiện tại double a = -5;//gia tốc double v, //vận tốc hiện tại double H=300; //độ cao tối đa int r=5; //bán kính int T = 50;//số nhịp dùng để đặt trong SetTimer • WM_PAINT y = H+100-h; //đảo hệ tọa độ x = 100; Ellipse(hdc,x-r,y-r, x+r,y+r); MoveToEx(hdc,0,H+100,NULL); LineTo(hdc,300,H+100); 17
- Ví dụ 2 case WM_TIMER: t = T / 1000.0; h = a*t*t + v*t + h; v = a*t + v; if (h
- Ví dụ 2 case WM_CREATE: v = 0;//vận tốc ban đầu h = H;//độ cao ban đầu SetTimer(hWnd,1,T,NULL); break; case WM_DESTROY: KillTimer(hWnd,1); PostQuitMessage(0); break; 19
- Bài tập 2 • Mô tả bài toán: V H • Yêu cầu: L – Thiết kế dữ liệu – Viết mã giả xử lý cho các sự kiện sau: • WM_CREATE , WM_DESTROY • WM_PAINT • WM_TIMER 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo Trình Lập trình Window
108 p | 391 | 158
-
Bài giảng Lập trình Windows: Lập trình cơ sở dữ liệu với thư viện ADO
63 p | 442 | 137
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 8 - ĐH Công nghệ Tp.HCM
17 p | 304 | 52
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 7 - ĐH Công nghệ Tp.HCM
14 p | 234 | 47
-
Bài tập thực hành Lập trình trên môi trường Windows (Lập trình Windows Form với C#): Lab 5 - ĐH Công nghệ Tp.HCM
6 p | 252 | 40
-
Bài giảng Lập trình Window: Chương 8 - Phan Trọng Tiến
45 p | 101 | 17
-
Bài giảng Lập trình Window: Chương 3 - Phan Trọng Tiến
64 p | 117 | 13
-
Giáo trình Lập trình window 2 (Nghề: Lập trình máy tính - Trình độ Cao đẳng) - Trường Cao đẳng Nghề An Giang
97 p | 24 | 10
-
LẬP TRÌNH WINDOWS - Lập trình cơ sở dữ liệu với thư viện ADO(ADO – ACTIVEX DATA OBJECT)
63 p | 73 | 9
-
Bài giảng Lập trình Windows - Ngôn ngữ C
123 p | 72 | 7
-
Giáo trình Lập trình Windows Form (Nghề: Tin học ứng dụng - Cao đẳng) - Trường Cao đẳng Bách khoa Nam Sài Gòn (2021)
125 p | 10 | 6
-
Giáo trình Lập trình Windows (Ngành: Công nghệ thông tin - Trung cấp) - Trường Cao đẳng Thương mại và Du lịch Thái Nguyên
74 p | 12 | 6
-
Bài giảng Lập trình Windows - Trường CĐN Việt Đức Vĩnh Phúc
184 p | 46 | 6
-
Bài giảng Lập trình Windows: Chương 7 - Kiến trúc Document / View
13 p | 88 | 6
-
Tập bài giảng Lập trình Window
243 p | 43 | 5
-
Bài giảng Lập trình Windows: Phần 2 - Đại học Hàng Hải
49 p | 100 | 5
-
Giáo trình Lập trình Windows: Phần 2 - ĐH Sư phạm kỹ thuật Nam Định
133 p | 34 | 4
-
Giáo trình Lập trình Windows Form (Nghề: Tin học ứng dụng - Cao đẳng) - Trường Cao đẳng Bách khoa Nam Sài Gòn (2022)
125 p | 14 | 4
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn