Lập trình C trên Windows Ví dụ và Bài tập

27 491 0
Lập trình C trên Windows Ví dụ và Bài tập

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 Lập trình C trên Windowsdụ Bài tập Nguyễn Đức Hoàng Hạ Khoa CNTT –Trường ĐHKHTN Email: ndhha@fit.hcmuns.edu.vn 2 WinMain •intWinMain(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 gửi xử lý thông điệp return 0; } 3 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); 4 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 5 DialogBox int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, LPCTSTR(IDD_DIALOG1), NULL, DLGPROC(dlgProc) ); return 0; } 6 Resource 7 Resource 8 Resource 9 Resource 10 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); [...]... toán: – Nhấn c c nút bằng chuột để nhập – Cho phép nhấn phím số trên bàn phím • Yêu c u: – Thiết kế dữ liệu – Viết mã giả xử lý cho c c sự kiện: • WM_INITDIALOG • WM_COMMAND • WM_CHAR 21 dụ 3 case WM_COMMAND: switch(LOWORD(wParam)) { case ID_BTN1: //Xử lý nhấn nút 1 break; case ID_BTN2: //Xử lý nhấn nút 2 break; } return 1; 22 Bài tập 3 • Thêm phím âm dương vào dụ 3 23 Debug • • • • • Chạy từng... InvalidateRect(hWnd,NULL,TRUE); break; 18 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 dụ 3 Máy tính bỏ túi • Mô tả bài toán:... 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 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... 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:... 1000 nhịp • 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 KillTimer đặt trong sự kiện WM_DESTROY 15 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... Thêm phím âm dương vào dụ 3 23 Debug • • • • • Chạy từng lệnh : F10 Chạy vào trong lệnh: F11 Đặt điểm dừng: F9 Chay chương trình ở chế độ debug: F5 Chạy chương trình không ở chế độ debug: Ctrl+F5 • Muốn debug ở sự kiện nào thì phải đặt điểm dừng ở sự kiện đó Không thể chạy từng lệnh (F10, F11) tới vị trí đó đư c 24 MSDN 25 26 MFC là gì? 27 ... sau: • WM_CREATE, WM_DESTROY • WM_PAINT • WM_TIMER 16 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 x = 100; y = H+100-h; //đảo hệ tọa độ Ellipse(hdc,x-r,y-r, x+r,y+r); MoveToEx(hdc,0,H+100,NULL); LineTo(hdc,300,H+100); 17 dụ 2 case WM_TIMER:... giả xử lý cho c c sự kiện sau: • • • • WM_CREATE WM_PAINT WM_LBUTTONDOWN WM_RBUTTONDOWN 12 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, . wcex.lpfnWndProc = (WNDPROC)WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_BBBBB); wcex.hCursor. 1 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 2 WinMain •intWinMain(HINSTANCE

Ngày đăng: 24/10/2013, 21:15

Hình ảnh liên quan

– Khi có thay đổi thì vẽ lại ra màn hình - Lập trình C trên Windows Ví dụ và Bài tập

hi.

có thay đổi thì vẽ lại ra màn hình Xem tại trang 12 của tài liệu.
– Khi có thay đổi thì vẽ lại ra màn hình • Yêu cầu:  - Lập trình C trên Windows Ví dụ và Bài tập

hi.

có thay đổi thì vẽ lại ra màn hình • Yêu cầu: Xem tại trang 14 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan