Xử lý các sự kiện nhập liệu
LOGO Xử lý kiện nhập liệu www.themegallery.com Nội dung Keyboard Mouse Timer Click to add Title Company Logo 4/14/2009 Giới thiệu Tìm hiểu thơng điệp phát sinh từ bàn phím hay từ thiết bị chuột để viết xử lý tương ứng với thiết bị Bộ định thời gian: Windows cung cấp chế để truyền thông với ứng dụng theo định kì Ứng dụng cần khai báo định thời gian với khoảng thời gian cho trước Khi ứng dụng hoạt động hệ thống truyền tín hiệu cho ứng dụng theo khoảng thời gian định kì khai báo Lập trình mơi trường windows 4/14/2009 Keyboard - Mouse Bàn phím chuột hai thiết bị nhập liệu quan trọng máy tính Hầu hết chức Windows hỗ trợ dùng bàn phím chuột Lập trình mơi trường windows 4/14/2009 Keyboard - Mouse Bàn phím chuột xử lý thông qua chế thông điệp Windows Mọi kiện bàn phím chuột Windows gửi đến chương trình thơng qua thơng điệp Lập trình mơi trường windows 4/14/2009 Keyboard Khi nhấn phím xảy trường hợp sau: Nhấn phím ký tự Nhấn phím điều khiển (các phím ESC, Enter, F1F12 ) Nhấn Shift Ctrl Alt tổ hợp ba phím với phím ký tự Khi phím bàn phím gõ, nhả hay giữ thông điệp tương ứng gửi đến cửa sổ focus 4/14/2009 Keyboard Các phím nhấn phân thành hai nhóm chính: Nhóm phím hệ thống (system keys): phím nhấn với phím Alt Nhóm phím thường (nonsystem keys): phím Alt khơng nhấn Thường phím hệ thống Windows xử lý dịch thành kiện tương ứng Lập trình mơi trường windows 4/14/2009 Mã phím ảo – Virtual Keycode Windows gán cho phím bàn phím mã, gọi mã phím ảo Mã phím ảo mã không phụ thuộc thiết bị, thay cho mã quét (scan code) phụ thuộc loại bàn phím nhà sản xuất Các mã phím ảo định nghĩa dạng macro, bắt đầu VK_ Ví dụ mã phím ảo cho phím ESC, Enter, F1 hay Alt VK_ESCAPE, VK_RETURN, VK_F1 VK_ALT 4/14/2009 Mã phím ảo – Virtual Keycode Cần phải phân biệt ký tự nhận ấn phím mã phím ảo Ví dụ phím A nhấn, ký nhận ký tự „a‟ „A‟ khơng, tuỳ thuộc vào trạng thái phím CAPSLOCK, phím Shift, Alt, Ctrl có nhấn hay khơng 4/14/2009 Xử lý kiện bàn phím Mơ hình xử lý kiện bàn phím Windows scan code, virtual-key code… 10 Lập trình mơi trường windows 4/14/2009 Sự kiện MouseWheel Sự kiện MouseWheel phát sinh người dùng scroll chuột Để xử lý kiện MouseWheel ta override phương thức OnMouseWheel Ví dụ: protected override void OnMouseWheel(MouseEventArgs mea) { if (mea.Delta>0) MessageBox.Show("Ban vua scroll chuot len", "Thong bao"); else MessageBox.Show("Ban vua scroll chuot xuong", "Thong bao"); } 37 Lập trình mơi trường windows 4/14/2009 Sự kiện Click Sự kiện Click phát sinh phím chuột nhấn Sự kiện phát sinh kèm theo tham số EventArgs, tham số không chứa thông tin trạng thái nút chuột nhấn vị trí trỏ chuột nhấn protected override void OnClick(EventArgs ea) { … } 38 Lập trình mơi trường windows 4/14/2009 Sự kiện DoubleClick Khi DoubleClick phát sinh dãy kiện sau: MouseDown Click MouseUp MouseMove MouseDown DoubleClick MouseUp MouseMove protected override void OnDoubleClick(EventArgs ea) { … } 39 Lập trình mơi trường windows 4/14/2009 Bài tập 40 Lập trình mơi trường windows 4/14/2009 Timer Multitasking Quản lý thông báo trạng thái Autosave Demo version Game 41 Lập trình môi trường windows 4/14/2009 Xử lý kiện Timer Theo lý thuyết thông điệp thời gian Windows cung cấp xác đến mili giây thực tế khơng hồn tồn Sự xác cịn phụ thuộc vào đồng hồ hệ thống hoạt động thời chương trình 42 Lập trình mơi trường windows Lớp Timer Có thể tạo đối tượng Timer cách dùng constructor mặc định sau: Timer timer = new Timer(); Timer có kiện: Timer Event Event Method Delegate Argument Tick OnTick EventHandler EventArgs 4/14/2009 Lập trình mơi trường windows 43 4/14/2009 Lớp Timer Chúng ta định nghĩa kiện cho timer sau: void TimerOnTick(object obj, EventArgs ea) { … } Đăng ký kiện: Timer.Tick += new EventHandler(TimerOnTick) 44 Lập trình mơi trường windows Lớp Timer Lớp Timer có thuộc tính: Timer Properties Type Property Accessibility Description int Interval bool Enabled get/set 4/14/2009 get/set Tick time in milliseconds Set to true if timer is running Lập trình mơi trường windows 45 4/14/2009 Lớp Timer Các phương thức Timer : void Start() void Stop() 46 Lập trình mơi trường windows 4/14/2009 Lớp Timer (Ví dụ 1) using System; using System.Drawing; using System.Windows.Forms; public class CloselnFive: Form { public static void Main() { Application.Run(new CloselnFive()); } //……… 47 Lập trình mơi trường windows Lớp Timer (Ví dụ 1) public class CloselnFive: Form { public CloselnFive(){ Text = "Closing in Five Minutes"; Timer timer = new Timer(); timer.Interval = * 60 * 1000; timer.Tick += new EventHandler(TimerOnTick); timer.Enabled = true; } void TimerOnTick(object obj, EventArgs ea){ Timer timer = (Timer) obj; timer.Stop(); timer.Tick -= new EventHandler(TimerOnTick); Close () ; } } 48 4/14/2009 Lập trình mơi trường windows 4/14/2009 Lớp Timer (Ví dụ 2) using System; using System.Drawing; using System.Windows.Forms; class RandomRectangle: Form{ public static void Main(){ Application.Run(new RandomRectangle()); } public RandomRectangle(){ Text = "Random Rectangle"; Timer timer = new Timer(); timer.Interval = 1; timer.Tick += new EventHandler(TimerOnTick); timer.Start(); } //……… 49 Lập trình mơi trường windows Lớp Timer (Ví dụ 2) 4/14/2009 void TimerOnTick(object obj, EventArgs ea) { Random rand = new Random(); int x1 = rand.Next(ClientSize.Width); int x2 = rand.Next(ClientSize.Width); int y1 = rand.Next(ClientSize.Height); int y2 = rand.Next(ClientSize.Height); Color color = Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256)); Graphics grfx = CreateGraphics(); grfx.FillRectangle(new SolidBrush(color), Math.Min(xl, x2), Math.Min(yl, y2), Math.Abs(x2-xl), Math.Abs(y2-yl) ); grfx.Dispose() ; } } 50 Lập trình mơi trường windows LOGO www.themegallery.com ... có nhấn hay không 4/14/2009 Xử lý kiện bàn phím Mơ hình xử lý kiện bàn phím Windows scan code, virtual-key code… 10 Lập trình mơi trường windows 4/14/2009 Xử lý kiện bàn phím Khi người dùng... Xử lý kiện bàn phím Các kiện bàn phím gửi đến cho cửa số giữ focus hành Hệ thống gửi hai kiện bàn phím khác người dùng nhấn phím nhả phím 12 Lập trình mơi trường windows 4/14/2009 Xử lý kiện. .. trường windows Xử lý kiện chuột 4/14/2009 Các kiện chuột gửi đến cho: Cửa sổ chứa trỏ chuột Hoặc cửa sổ “capture” chuột Có hai loại kiện chuột: Client area messages • Các kiện chuột xảy