1. Trang chủ
  2. » Công Nghệ Thông Tin

viêt ứng dụng Multi point mouse đầu tiên

10 780 0

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

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Lab: Viết ứng dụng MultiPoint Mouse đầu tiên

  • MultiPoint Mouse hoá ứng dụng WPF

  • Xử lý thao tác với con trỏ chuột

    • Multipoint Controls

  • Xử lý việc plug-in/plug-out các thiết bị chuột

Nội dung

Multi point

Lab: Viết ứng dụng MultiPoint Mouse đầu tiên Tiếp xúc với công nghệ đa chuột MultiPoint Mouse, nhiều người không biết phải bắt đầu develop như thế nào vì nguồn tài liệu gần như không có. Đây là bài viết hướng dẫn các bước cơ bản để làm ứng dụng MultiPoint Mouse, kèm theo đó là những giải thích ở các bước. Nội dung chính Các công nghệ sử dụng Ứng dụng WPF nhỏ khai thác các tính năng cơ bản của MultiPoint Mouse SDK. WPF C# MultiPoint Mouse hoá ứng dụng WPF Việc đầu tiên cần “kích hoạt” chức năng MultiPoint Mouse cho một ứng dụng WPF. Vào menu File –> New –> New Project để tạo một project WPF mới. Đặt tên Project là FirstMPMApp, click OK để tạo project. MPM cung cấp 2 file thư viện cho việc lập trình trong thư mục cài đặt. Đầu tiên ta add file thư viện Microsoft.Multipoint.Sdk.dll. Vào menu Project –> Add Reference… Chọn tab Browse và trỏ tới đường dẫn cài đặt MultiPoint Mouse (mặc định là C:\Program Files\Windows MultiPoint Mouse SDK\Bin), chọn file thư viện cần như trong hình. Click OK. Trong MainWindows.xaml.cs, cho vào đoạn code như sau: Miếng Code 1. public MainWindow() 2. { 3. InitializeComponent(); 4. this.Loaded += new RoutedEventHandler(MainWindow_Loaded); 5. } 6. void MainWindow_Loaded(object sender, RoutedEventArgs e) 7. { 8. // Register this window with MultiPoint Mouse 9. MultipointSdk.Instance.Register(this); 10. } Cần thêm namespace cần thiết ở đầu file, thêm dòng “using Microsoft.Multipoint.Sdk; “ Dòng code thứ 4 để thêm một event handler cho sự kiện Loaded của cửa sổ hiện hành. Khi cửa sổ được load lên ta thực hiện đăng kí nó với MultiPoint Mouse để chức năng MPM có thể chạy. Dòng code thứ 10 trong event handler thực hiện điều đó. F5 chạy chương trình được kết quả sau: Khi cửa sổ đã được đăng kí với MPM, MPM tự động nhận biết các thiết bị chuột kết nối với máy và tạo các con trỏ tương ứng trên cửa sổ ứng dụng. Máy mình đang kết nốt 1 chuột USB và 1 trackpad sẵn của laptop nên có 2 con chuột trên màn hình. Nhấn Alt + F4 để thoát ứng dụng. Để tiện lợi trong sử dụng, ta nên thêm chức năng nhấn Esc để đóng cửa sổ, bằng cách thêm event handler cho sự kiện this.KeyDown. Miếng Code 1. public MainWindow() 2. { 3. InitializeComponent(); 4. this.Loaded += new RoutedEventHandler(MainWindow_Loaded); 5. this.KeyDown += new KeyEventHandler(MainWindow_KeyDown); 6. } 7. void MainWindow_KeyDown(object sender, KeyEventArgs e) 8. { 9. switch (e.Key) 10. { 11. case Key.Escape: 12. this.Close(); 13. break; 14. } 15. } Xử lý thao tác với con trỏ chuột MPM hỗ trợ nhiều chức năng với việc xử lý con trỏ chuột. Một vài chức năng quan trọng: • Thay đổi hình ảnh con trỏ chuột, chuyển chúng thành các hình ảnh bitmap tuỳ ý. • Thay đổi tốc độ của các chuột. • Điều chỉnh cho chuột được/ko đc phép di chuyển (đứng yên tại chỗ). • Điều chỉnh ẩn/hiện các chuột. • Điều chỉnh vị trí của các chuột trên màn hình (gán vào một toạ độ bất kì). • Xử lý các sự kiện click chuột. • Lấy các thông tin về thiết bị chuột (ID phân biệt, name,…) Từng đó thao tác đã đủ để ta quản lý hầu hết các tác vụ liên quan tới chuột. Các chức năng này sẽ lần lượt được trình bày trong bài lab này và các bài lab tiếp theo. Bây giờ ta thử thực hiện cho các chuột nằm ở vị trí (0,0) và bắt nó đứng yên cho tới khi ta nhấn Space thì mới cho phép chạy. Bổ sung 2 event handler đã tạo ở phần trước như sau: Miếng Code 1. void MainWindow_KeyDown(object sender, KeyEventArgs e) 2. { 3. switch (e.Key) 4. { 5. case Key.Escape: 6. this.Close(); 7. break; 8. case Key.Space: // Enable movement of all mouses 9. foreach (DeviceInfo item in MultipointSdk.Instance.MouseDeviceList) 10. { 11. item.DeviceVisual.DisableMovement = false; 12. } 13. break; 14. } 15. } 16. void MainWindow_Loaded(object sender, RoutedEventArgs e) 17. { 18. // Register this window with MultiPoint Mouse 19. MultipointSdk.Instance.Register(this); 20. // Disable movement of all mouses 21. foreach (DeviceInfo item in MultipointSdk.Instance.MouseDeviceList) 22. { 23. item.DeviceVisual.SetPosition(new Point(0, 0)); 24. item.DeviceVisual.DisableMovement = true; 25. } 26. } Vòng lặp trong handler Loaded duyệt qua collection MultipointSdk.Instance.MouseDeviceList chứa thông tin của tất cả các chuột hiện hành (dưới dạng biến Microsoft.Multipoint.Sdk.DeviceInfo), và thực hiện thay đổi các thông tin trong field DeviceVisual – quản lý thông tin hiển thị của trỏ chuột. Vòng lặp trong case nhấn Space trong handler KeyDown chỉ thực hiện việc cho phép các trỏ chuột có thể di chuyển trở lại. //YOU-DO: F5 chạy chương trình để thử. Multipoint Controls Tiếp theo, ta làm một chức năng đơn giản cho chuột click vào một button và tên của thiết bị sẽ hiện ra. Thực hiện lại việc Add Reference đối với file thư viện Microsoft.Multipoint.Sdk.Controls.dll như đã làm ở trên. Bổ sung code giao diện trong file MainWindow.xaml như sau: Miếng Code 1. <Window x:Class=“FirstMPMApp.MainWindow” 2. xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation&#822 1; 3. xmlns:x=“http://schemas.microsoft.com/winfx/2006/xaml&#8221; 4. xmlns:mpm=“clr- namespace:Microsoft.Multipoint.Sdk.Controls;assembly=Microsoft.Multipoi nt.Sdk.Controls” 5. Title=“MainWindow” Height=“350″ Width=“525″> 6. <Grid> 7. <mpm:MultipointButton Content=“Click Me” Margin=“10″ Height=“25″ Width=“100″ 8. HorizontalAlignment=“Right” VerticalAlignment=“Top” 9. x:Name=“mbtnClickMe” Focusable=“False” 10. MultipointClick=“mbtnClickMe_MultipointClick”/> 11. <TextBlock x:Name=“txtMouseName” Margin=“5,45,5,5″ TextWrapping=“Wrap” 12. FontSize=“25″/> 13. </Grid> 14. </Window> Dòng 4 là để thêm namespace Microsoft.Multipoint.Sdk.Controls vào file. Hiện trại thư viện control này có 2 control cơ bản của MPM là MultipointButton, MultipointTextbox tương ứng với chức năng của Button và Textbox trong ứng dụng thường. Chỉ có các control xây dựng đã áp dụng MPM mới có thể nhận được các sự kiện nhấn phím của chuột. Các control có sẵn của WPF ko hỗ trợ MPM. Dòng 7, control MultipointButton nhận sự kiện riêng sinh bởi trỏ chuột trong MPM là MultipointClick, tương ứng với sự kiện Button.Click trong WPF. Trong code behind MainWindow.xaml.cs ta bổ sung event handler MultipointClick: Miếng Code 1. private void mbtnClickMe_MultipointClick(object sender, RoutedEventArgs e) 2. { 3. MultipointMouseEventArgs args = e as MultipointMouseEventArgs; 4. if (args == null) return; 5. txtMouseName.Text = args.DeviceInfo.DeviceName; 6. } Chuyển kiểu RoutedEventArgs về Microsoft.Multipoint.Sdk.MultipointMouseEventArgs, thông qua đó ta lấy được thông tin về chuột đã thực hiện event tương ứng. Sau đó thực hiện truy cập thông tin của chuột qua field DeviceInfo. //YOU-DO: F5 chạy chương trình, nhấn Space để cho các chuột di chuyển, thử click các chuột lên button để thấy DeviceName của chúng. Xử lý việc plug-in/plug-out các thiết bị chuột Trong quá trình sử dụng ứng dụng, các thiết bị chuột có thể bị tháo ra hoặc lắp vào thêm. Khi đó có thể ta cần xác định chuột nào đã bị tháo ra/lắp vào và thực hiện các công việc tương ứng. Để phân biệt các thiết bị có thể sử dụng DeviceInfo.DeviceId hoặc DeviceInfo.Id hoặc DeviceInfo.DeviceName. MPM đã hỗ trợ sẵn việc huỷ con trỏ của chuột khi thiết bị được tháo ra và tự tạo một con trỏ mới có cursor mặc định như thấy trong hình. Có thể ta sẽ cần thực hiện gán cursor mới mỗi khi có thiết bị mới gắn vào để có thể phân biệt các con trỏ, hoặc huỷ các thông tin người dùng của con trỏ đó trong ứng dụng (vd: điểm số, tên,…). Bây giờ ta thực hiện thông báo trong TextBlock mỗi khi thiết bị được tháo ra hoặc cắm vào, và thiết bị mới được gắn sẽ đặt con trỏ tại vị trí (0, 0) cho tới khi nhấn Space mới di chuyển được. Bổ sung code trong code behind MainWindow.xaml.cs như sau: Miếng Code 1. void MainWindow_Loaded(object sender, RoutedEventArgs e) 2. { 3. // Register this window with MultiPoint Mouse 4. MultipointSdk.Instance.Register(this); 5. // Disable movement of all mouses 6. foreach (DeviceInfo item in MultipointSdk.Instance.MouseDeviceList) 7. { 8. item.DeviceVisual.SetPosition(new Point(0, 0)); 9. item.DeviceVisual.DisableMovement = true; 10. } 11. // Handle mouses plug-in and plug-out 12. MultipointSdk.Instance.DeviceArrivalEvent += new EventHandler<DeviceNotifyEventArgs>(Instance_DeviceArrivalEvent); 13. MultipointSdk.Instance.DeviceRemoveCompleteEvent += new EventHandler<DeviceNotifyEventArgs>(Instance_DeviceRemoveCompleteE vent); 14. } 15. void Instance_DeviceRemoveCompleteEvent(object sender, DeviceNotifyEventArgs e) 16. { 17. txtMouseName.Text = “Just plug-out a device!! \n Name: “ + e.DeviceInfo.DeviceName; 18. } 19. void Instance_DeviceArrivalEvent(object sender, DeviceNotifyEventArgs e) 20. { 21. txtMouseName.Text = “New pointing-device!! \n Name: “ + e.DeviceInfo.DeviceName; 22. // Init first status of a new pointer 23. e.DeviceInfo.DeviceVisual.SetPosition(new Point(0, 0)); 24. e.DeviceInfo.DeviceVisual.DisableMovement = true; 25. } Dòng 14 thêm event handler khi một thiêt bị được gắn vào. Dòng 15 thêm event handler khi một thiết bị bị tháo ra. //YOU-DO: chạy thử chương trình, trong quá trình dùng thử tháo ra và gắn vào các chuột đồng thời quan sát quá trình xử lý. Chú ý chuột mới gắn vào thì phải nhấn Space chuột mới được phép di chuyển.

Ngày đăng: 11/03/2014, 19:35

TỪ KHÓA LIÊN QUAN

w