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

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

10 781 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 22,89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Multi point

Trang 1

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

Trang 2

Trong MainWindows.xaml.cs, cho vào đoạn code như sau:

Miếng Code

1. public MainWindow()

2. {

3. InitializeComponent();

4. this.Loaded += newRoutedEventHandler(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. }

Trang 3

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 += newRoutedEventHandler(MainWindow_Loaded);

Trang 4

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,…)

Trang 5

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 inMultipointSdk.Instance.MouseDeviceList)

10. {

11. item.DeviceVisual.DisableMovement = false;

12. }

13. break;

14. }

15. }

16. void MainWindow_Loaded(object sender, RoutedEventArgs e)

Trang 6

17. {

18. // Register this window with MultiPoint Mouse

19. MultipointSdk.Instance.Register(this);

20. // Disable movement of all mouses

21. foreach (DeviceInfo item inMultipointSdk.Instance.MouseDeviceList)

22. {

23. item.DeviceVisual.SetPosition(newPoint(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

Trang 7

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

Trang 8

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

Trang 9

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 inMultipointSdk.Instance.MouseDeviceList)

7. {

8. item.DeviceVisual.SetPosition(newPoint(0, 0));

9. item.DeviceVisual.DisableMovement = true;

10. }

11. // Handle mouses plug-in and plug-out

Trang 10

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(newPoint(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