Bài giảng lập trình Windows - Xử lý dao diện người dùng potx

36 458 0
Bài giảng lập trình Windows - Xử lý dao diện người dùng potx

Đ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 Windows (Windows Programming) Nguyễn Tri Tuấn Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn Xử lý giao diện người dùng (User Interface) Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 2 Nội dung  Xử lý Mouse và Keyboard  Xử lý menu  Xây dựng và xử lý hộp thoại (Dialog box)  Các hộp thoại chuẩn (Common Dialog boxes)  Toolbar, Statusbar  Các Control  MDI – Multi Document Interface 2 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 3 Xử lý Mouse và Keyboard  Xử lý mouse  Thông điệp của mouse  Ví dụ: Vẽ hình bằng mouse  Xử lý keyboard  Thông điệp của keyboard  Ví dụ: Xử lý phím nhấn Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 4 Xử lý Mouse  Thông điệp của mouse  WM_LBUTTONDOWN  WM_LBUTTONUP  WM_LBUTTONDBLCLK  WM_RBUTTONDOWN  WM_RBUTTONUP  WM_RBUTTONDBLCLK  WM_MOUSEMOVE  WM_MOUSEWHEEL 3 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 5 Xử lý Mouse…(tt)  Thông điệp của mouse (tt)  Với mỗi thông điệp của mouse, Windows gởi kèm 2 tham số wParam và lParam  wParam: cho biết phím nào đang được nhấn (Ctrl, Shift,…)  lParam: cho biết toạ độ hiện tại  LOWORD(lParam): tọa độ x  HIWORD(lParam): tọa độ y Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 6 Xử lý Mouse…(tt)  Ví dụ: Vẽ hình bằng mouse  Mô tả: khi user nhấn giữ nút trái chuột & di chuyển  vẽ 1 đường thẳng  Các xử lý cần thiết:  WM_LBUTTONDOWN  WM_MOUSEMOVE  Các bước thực hiện:  Định nghĩa 4 biến (x1, y1) – (x2, y2)  Định nghĩa hàm xử lý message WM_LBUTTONDOWN  Định nghĩa hàm xử lý message WM_MOUSEMOVE 4 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 7 Xử lý Mouse…(tt)  Vẽ hình bằng mouse…(tt) void OnLButtonDown(int &x1, int &y1, int &x2, int &y2, int x, int y) { x1 = x2 = x; y1 = y2 = y; } Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 8 Xử lý Mouse…(tt)  Vẽ hình bằng mouse…(tt) void OnMouseMove(HWND hWnd, UINT nFlags, int x1, int y1, int &x2, int &y2, int x, int y) { if (!(nFlags & MK_LBUTTON)) break; HDC dc = GetDC(hWnd); // xoa duong cu SetROP2(dc, R2_NOTXORPEN); MoveToEx(dc, x1, y1, NULL); LineTo(dc, x2, y2); // ve duong moi x2 = x; y2 = y; MoveToEx(dc, x1, y1, NULL); LineTo(dc, x2, y2); ReleaseDC(hWnd, dc); } 5 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 9 Xử lý keyboard  Các message của keyboard  WM_KEYDOWN / WM_KEYUP: phát sinh khi 1 phím (không phải là phím hệ thống) được nhấn xuống/thả ra  wParam: virtual-key code  lParam: chứa các thông tin khác (số lần lặp lại phím, scan code, extended key,…)  WM_CHAR: là kết quả phát sinh do message WM_KEYDOWN, báo hiệu 1 ký tự in được (printed character) đã được tạo ra  wParam: mã ký tự  lParam: chứa các thông tin khác (số lần lặp lại do nhấn giữ phím, có phím Alt nhấn kèm,…) Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 10 Xử lý keyboard…(tt)  Ví dụ: Xử lý phím nhấn  Mô tả: khi user nhấn một phím  hiển thị 1 MessageBox thông báo  Các xử lý cần thiết  WM_KEYDOWN  Các bước thực hiện  Định nghĩa hàm xử lý message WM_KEYDOWN 6 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 11 Xử lý menu  Một vài khái niệm  Tạo menu  Thay đổi trạng thái menu  Lấy thông tin của menu  Menu messages  Ví dụ Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 12 Xử lý menu - Một vài khái niệm  Menu bar: thanh menu. Bao gồm nhiều drop-down menu và menu item. Tên gọi khác: main menu, top-level menu  Drop-down menu: là một phần của menu bar, chứa các menu item hoặc các drop-down menu khác. VD. File, Edit, … Tên gọi khác: popup menu, sub-menu  Menu item: tương ứng với 1 lệnh của ứng dụng. Mỗi menu item được xác định bằng 1 số nguyên phân biệt, gọi là item ID hay command ID. VD. Open, Save, …  System menu: chứa các lệnh hệ thống điều khiển cửa sổ. VD. Minimize, Maximize, Close, … 7 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 13 Xử lý menu - Một vài khái niệm…(tt) System menu Menu bar Drop-down menu Menu item Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 14 Xử lý menu - Một vài khái niệm…(tt)  Các trạng thái của menu item:  Checked / Unchecked - chỉ áp dụng cho các menu item bên trong popup. Top-level menu item không có tính chất này  Enabled, Disabled, Grayed - HĐH Windows chỉ gởi message WM_COMMAND cho các menu item ở trạng thái Enabled 8 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 15 Xử lý menu - Một vài khái niệm…(tt)  Cấu trúc menu  Menu bar, Drop-down menu, System menu: được quản lý bằng menu handle  Menu item: được quản lý bằng số ID (item ID). ID này sẽ được gởi đến ứng dụng cùng với message WM_COMMAND Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 16 Xử lý menu - Tạo menu  Thường có 2 cách để tạo menu:  Tạo menu ở dạng resource của ứng dụng, và load vào khi chạy ứng dụng  Tạo trực tiếp bằng các hàm khi ứng dụng đang chạy.  Các hàm thường dùng: CreateMenu, InsertMenu, … 9 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 17 Xử lý menu - Tạo menu…(tt) xxx.rc IDC_MAINMENU MENU PRELOAD DISCARDABLE BEGIN POPUP "&File" BEGIN MENUITEM "&New\tCtrl+N", ID_FILE_NEW MENUITEM "&Open \tCtrl+O", ID_FILE_OPEN MENUITEM SEPARATOR MENUITEM "E&xit", ID_APP_EXIT END POPUP "&Edit" BEGIN MENUITEM "&Undo\tCtrl+Z", ID_EDIT_UNDO MENUITEM SEPARATOR MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE END END Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 18 Xử lý menu - Tạo menu…(tt)  Tham chiếu đến menu trong window class wc.lpszMenuName = (LPCSTR) IDC_MAINMENU;  Xác định menu khi tạo cửa sổ: hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(IDC_MAINMENU)); // sử dụng hMenu, overwrite giá trị wc.lpszMenuName hWnd = CreateWindow(TEXT("MyClass"), TEXT("Window Caption"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, hMenu, hInstance, NULL); 10 Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 19 Xử lý menu - Tạo menu…(tt)  Thay đổi menu bar: hMenu2 = LoadMenu(hInstance, MAKEINTRESOURCE(IDC_2NDMENU)); SetMenu(hWnd, hMenu2); DrawMenuBar(hWnd); // vẽ lại menu mới DestroyMenu(hMenu); // hủy bỏ menu cũ Winter 2010Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 20 Xử lý menu - Tạo menu…(tt)  Các hàm tạo menu “run-time”  CreateMenu  CreatePopupMenu  AppendMenu  InsertMenu  InsertMenuItem [...]... c a frame window Các phím t t h th ng: Ctrl-F4, Ctrl-F6, Alt- Thư ng s có m t popup “Window” trên menu-bar đ qu n lý các ch c năng liên quan đ n child window VD Tile, Cascade, Close all,… Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 52 26 MDI - Phân c p t ch c…(tt) Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 53 Các bư c xây... Tri Tuan - DH.KHTN Tp.HCM Winter 2010 48 24 MDI - Phân c p t ch c Frame window (main app window) Client window Child wind Child wind Child wind … Child wind Sơ đ phân c p c a s cha-con trong MDI Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 49 MDI - Phân c p t ch c…(tt) Frame window Các child window Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN... nFlag | MF_BYCOMMAND); } Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 23 X lý menu - L y thơng tin c a menu Các hàm cung c p thơng tin c a menu GetMenu GetSubMenu GetSystemMenu GetMenuInfo GetMenuItemID GetMenuItemInfo GetMenuState GetMenuString Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 24 12 X lý menu - L y thơng tin c a menu…(tt)... } Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 64 32 MDI - Các v n đ khác…(tt) Menu “Window” Menu item Cách x lý Tile WM_MDITILE Cascade WM_MDICASCADE Arrange Icons WM_MDIICONARRANGE Close All X lý enum VD SendMessage(hwndMDIClient,WM_MDITILE, MDITILE_SKIPDISABLED, 0L); Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 65 MDI -. .. WM_MDIACTIVATE: struct DATA_1 *data_1 = (struct DATA_1 *) GetWindowLong(hMDIWnd, 0); if (data_ 1-> nTypeOfWind==1) “X lý 1” else “X lý 2” …… break; Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 71 Winter 2010 72 Cám ơn - H i & Đáp Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 36 ... Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 27 X lý menu – Menu messages Các thơng đi p c a menu WM_MENUSELECT WM_INITMENUPOPUP WM_COMMAND WM_SYSCOMMAND Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 28 14 X lý menu - Menu messages…(tt) WM_MENUSELECT: phát sinh khi user tác đ ng (di chuy n mouse hay cursor) lên menu Thơng đi p này có th dùng. .. c a cursor (screen coordinate) Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 32 16 Xây d ng và x lý h p tho i (Dialog box) Các khái ni m Các message thư ng dùng cho dialog Các hàm thư ng dùng cho dialog Xây d ng modal dialog box Xây d ng modeless dialog box Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 33 Dialog Box – Các khái... dialog và c a s khác c a cùng ng d ng Vd Find, Replace, Spell check,… Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 34 17 Các message thư ng dùng cho dialog WM_INITDIALOG WM_COMMAND WM_CLOSE Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 35 Các hàm thư ng dùng cho dialog CheckDlgButton CheckRadioButton EnableWindow GetDlgCtrlID... IsDialogMessage SendDlgItemMessage SetDlgItemInt SetDlgItemText Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 36 18 Xây d ng modal dialog box T o dialog: dùng hàm DialogBox hay DialogBoxParam K t thúc dialog: dùng hàm EndDialog Ví d : T o dialog “Color” như hình v Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 37 Xây d ng modal dialog... n lý data c a m i child window m t cách hi u qu ? Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM Winter 2010 67 MDI - Các v n đ khác…(tt) Gi i pháp qu n lý child window data: S d ng các byte m r ng dành riêng cho m i child window wc.cbWndExtra = CB_CHILDEXTRA; // 4,8,12… bytes Cấu trúc thông tin 1 Cấu trúc thông tin 2 Các byte mở rộng Windows Programming - User Interface - . 1 Lập trình Windows (Windows Programming) Nguyễn Tri Tuấn Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn Xử lý giao diện người dùng (User Interface) Winter 201 0Windows Programming. Interface 2 Winter 201 0Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 3 Xử lý Mouse và Keyboard  Xử lý mouse  Thông điệp của mouse  Ví dụ: Vẽ hình bằng mouse  Xử lý keyboard . Các xử lý cần thiết  WM_KEYDOWN  Các bước thực hiện  Định nghĩa hàm xử lý message WM_KEYDOWN 6 Winter 201 0Windows Programming - User Interface - Nguyen Tri Tuan - DH.KHTN Tp.HCM 11 Xử lý menu 

Ngày đăng: 12/07/2014, 23:20

Từ khóa liên quan

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

Tài liệu liên quan