Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
619,94 KB
Nội dung
1
Lập trìnhCtrênWindows
Ví dụvàBàitậ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 và 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);
[...]... giả xử lý cho cc sự kiện sau: • WM_CREATE , WM_DESTROY • WM_PAINT • WM_TIMER 20 Vídụ 3 Máy tính bỏ túi • Mô tả bài toán: – Nhấn cc 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 cc sự kiện: • WM_INITDIALOG • WM_COMMAND • WM_CHAR 21 Vídụ 3 case WM_COMMAND: switch(LOWORD(wParam)) { case ID_BTN1: //Xử lý nhấn nút 1 break; case ID_BTN2:... nút 2 break; } return 1; 22 Bàitập 3 • Thêm phím âm dương vào ví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 ... Thiết kế dữliệu – Viết mã giả xử lý cho cc 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 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 Vídụ 2 case WM_TIMER: t = T / 1000.0; h = a*t*t + v*t + h; v = a*t + v; if (h . CS_VREDRAW;
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