Технический документ Microsoft Технический документ Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 10 января 2010 г. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 2 Юридические сведения Этот документ предоставляется «как есть». Сведения и точки зрения, приведенные в этом документе, в том числе URL-адреса и другие веб-ссылки, могут изменяться без уведомления. Вы принимаете на себя весь риск, связанный с его использованием. Некоторые представленные примеры используются только в иллюстративных целях и являются вымышленными. Любые совпадения с реальными лицами или событиями являются случайными. Документ не предоставляет никаких юридических прав на интеллектуальную собственность в отношении любого продукта Майкрософт. Этот документ разрешен для копирования и внутреннего использования в справочных целях. © Корпорация Майкрософт (Microsoft Corporation), 2009. Все права защищены. Microsoft, C#, C++, Expression Blend, MultiPoint, .NET, Visual Basic, Visual Studio, Windows и Windows Vista являются товарными знаками группы компаний Майкрософт. Прочие товарные знаки являются собственностью соответствующих владельцев. ОГЛАВЛЕНИЕ Введение ...................................................................................................................................................................... 3 Приступая к работе с пакетом SDK ............................................................................................................................. 3 Требования к программному обеспечению ............................................................................................................ 3 Установка пакета MultiPoint Mouse SDK ................................................................................................................. 4 Ссылки на необходимые библиотеки ..................................................................................................................... 4 Инициализация пакета MultiPoint Mouse SDK ........................................................................................................ 4 Выполнение приложения ........................................................................................................................................ 5 Обработка событий добавления и удаления мыши............................................................................................... 6 Создание пользовательского интерфейса с поддержкой технологии MultiPoint Mouse ........................................... 6 Добавление элемента управления MultiPoint ........................................................................................................ 7 Обработка щелчков мыши MultiPoint Mouse .......................................................................................................... 7 Определение мыши, сделавшей щелчок ............................................................................................................... 8 Настройка мыши MultiPoint Mouse .............................................................................................................................. 8 Задание цветов указателя ................................................................................................................................. 8 Задание пользовательских изображений ......................................................................................................... 8 Замораживание мыши ............................................................................................................................................ 9 Дополнительные темы ............................................................................................................................................... 10 Исключение указателей из области на экране .................................................................................................... 10 Задание функций для конкретной мыши (мыши учителя) .................................................................................. 10 Приложение A. Сценарии использования ................................................................................................................ 10 Сценарий использования: пример Map ................................................................................................................ 11 Сценарий использования: пример Quiz ............................................................................................................... 12 © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 3 Введение Пакет Windows® MultiPoint™ Mouse Software Development Kit (SDK) — это среда разработки, с помощью которой разработчики могут создавать приложения, поддерживающие одновременное функционирование до 25 отдельных устройств мыши на одном компьютере. Используя пакет MultiPoint Mouse SDK, разработчики могут создавать учебные приложения для школ с ограниченной технологической инфраструктурой, тем самым увеличивая время использования компьютера, доступное отдельному учащемуся. Первоначальные пилотные программы, проводимые подразделением Microsoft® Research в Индии, показывают, что в отдельных учебных предметах технологии совместного обучения, такие как Windows MultiPoint, оказываются более эффективными, чем сценарии работы «один компьютер — одна мышь»1. Пакет MultiPoint Mouse SDK не следует отождествлять с приложениями, где несколько людей могут управлять несколькими устройствами мыши для выполнения стандартных операций. В этих случаях системе обычно не удается определить, с помощью какой мыши сделаны те или иные изменения, и, как правило, отсутствует возможность управления разрешениями на различных устройствах. Пакет MultiPoint Mouse SDK содержит среду разработки, с помощью которой можно создавать приложения, использующие преимущества нескольких устройств мыши, включая возможность независимой обработки щелчков мыши от различных пользователей и назначение каждой мыши различн ых разрешений. Например, мыши, которую использует в обучающем приложении учитель, могут потребоваться дополнительные разрешения для контроля деятельности. Этот документ поможет начать работу с пакетом MultiPoint Mouse SDK: в нем содержится обзор таких элементов, как пространства имен, классы, полезные свойства и функции, а также обсуждаются распространенные проблемы и аспекты создания приложений с помощью MultiPoint Mouse SDK. Приступая к работе с пакетом SDK В этом разделе описываются действия, которые необходимо выполнить перед началом работы над созданием приложений с помощью пакета MultiPoint Mouse SDK. Предполагается, что читатель знаком с созданием приложений Windows Presentation Foundation (WPF) на платформе Microsoft® .NET Framework, поэтому здесь подробно обсуждаются только аспекты, относящиеся к реализации функциональности MultiPoint Mouse. Дополнительные сведения о создании приложений с помощью WPF см. в приложении A этого документа. Требования к программному обеспечению Рекомендуемая среда программирования — Microsoft Expression Blend® с Visual Studio 2008 или Visual Studio 2010. Expression Blend — это графический интерфейс пользователя (GUI) для создания приложений. Visual Studio обеспечивает сходную функциональность, и хотя она не настолько обширна, как в Expression Blend, но должна быть достаточной для разработки приложений с помощью пакета MultiPoint Mouse SDK. Для работы пакета MultiPoint Mouse SDK требуется следующее ПО. Рекомендуется 32- или 64-разрядная версия ОС Windows® 7. Пакет MultiPoint Mouse SDK совместим с Windows Vista® с пакетом обновления 2 (SP2) и Windows® XP с пакетом обновления 3 (SP3). Visual Studio 2008, Visual Studio 2010 Express или более старшая версия Visual Studio. При разработке приложений Windows Presentation Foundation следует пользоваться средой Expression Blend. Примечание. Пакет MultiPoint Mouse SDK установит шаблон для соответствующей версии Visual Studio. 1 Результаты исследований Microsoft Research в области эффективности технологий совместной работы можно найти на веб-сайте MultiPoint по адресу http://www.microsoft.com/unlimitedpotential/TransformingEducation/MultiPoint.mspx. © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 4 Примечание. Пакет MultiPoint Mouse SDK не поддерживает разработку пользовательского интерфейса Windows Forms. Установка пакета MultiPoint Mouse SDK После установки пакета SDK в меню «Пуск» появится папка Windows MultiPoint Mouse SDK. В папке содержится несколько элементов. Папка Samples, которая включает следующие папки с примерами решений. o Папка TicTacToe: базовый пример приложения «Крестики-нолики», иллюстрирующий игру для двух участников. o Папка Map: обучающий пример на основе карты, в котором учащиеся соревнуются в поиске городов. o Папка Quiz: обучающий пример викторины, в котором для учащихся выделяются области на экране, где они должны ответить на максимальное количество вопросов в течение заданного времени. o Папка Control: флажок с поддержкой технологии MultiPoint Mouse. Папка SDK Documentation: справочные сведения по разработке приложений с помощью SDK. В папку установки (по умолчанию C:\Program Files\Windows Multipoint Mouse SDK) добавляются следующие дополнительные папки. Bin: содержит библиотеки DLL MultiPoint Mouse и файл слияния MSM для использования с MSI-установщиками. Docs: содержит документацию по пакету MultiPoint Mouse SDK. License: содержит условия лицензионного соглашения по использованию SDK. Samples: содержит весь исходный код примеров приложений и пример элемента управления MultiPoint Mouse. Ссылки на необходимые библиотеки Чтобы создать приложение с помощью пакета MultiPoint Mouse SDK, в проекте необходимо указать ссылки на следующие библиотеки, расположенные в глобальном кэше сборок: Microsoft.Multipoint.Sdk.dll Microsoft.Multipoint.Sdk.Controls.dll Сводные сведения о библиотеках и классах, которые они содержат, включая полезные методы и свойства, см. ниже в разделе Общие сведения о пакете SDK. © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 5 Инициализация пакета MultiPoint Mouse SDK Чтобы приложение могло обрабатывать данные ввода с нескольких устройств мыши, следует инициализировать пакет MultiPoint Mouse SDK. Для этого приложение должно инициализировать объект MultipointSdk, сопоставив его окну WPF. Лучше всего это сделать в рамках события Window.Loaded основного окна приложения, как описано в следующей процедуре. Инициализация пакета MultiPoint Mouse SDK в приложении 1. Объявите и настройте обработчик событий Window.Loaded. Поскольку действия по инициализации должны выполняться только после загрузки окна, их следует включить в обработчик событий Window.Loaded. 2. Вызовите метод Initialize на объекте MultipointSdk, передавая текущее окно. Библиотеки DLL MultiPoint Mouse выполняют в фоновом режиме следующие действия: А. Регистрация текущего окна, чтобы задать в пакете SDK окно, в котором будет выполняться мониторинг событий MultiPoint Mouse. Поскольку пакету SDK необходима информация о родительском окне, отвечающем за визуальные элементы, перед прорисовкой визуальных элементов устройства для устройств мыши необходимо зарегистрировать текущее окно. Б. Регистрация устройств мыши. В ходе этой регистрации перечисляются все устройства ввода, подключенные к компьютеру, и создается список зарегистрированных устройств мыши, доступных приложению. Примечание. MultiPoint Mouse SDK не распознает в качестве устройства ввода сенсорные панели ноутбука. Поэтому для разработки и тестирования приложений, созданных с помощью технологии MultiPoint Mouse, следует использовать USB-мышь. В. Прорисовка визуального элемента мыши для каждой подключенной мыши и задание для каждой из них указателя по умолчанию. Г. Скрытие системного указателя. В приложении, созданном с помощью пакета MultiPoint Mouse SDK, системный указатель не используется для подключенных устройств и для удобства работы становится скрытым. В следующем примере кода показана процедура инициализации: // Set up the Window Loaded Event Handler, // and Initialize the SDK private void Window1_Loaded(object sender, EventArgs e) { // Initialize the Multipoint Mouse SDK MultipointSdk.Instance.Initialize(this); } Выполнение приложения Запустите приложение. Для каждой подключенной к компьютеру мыши на экране должен появиться отдельный указатель. С выходом из приложения могут возникнуть трудности, поскольку этими мышами нельзя щелкать стандартные элементы управления, такие как кнопка Close (Закрыть) в правом верхнем углу экрана. Поэтому рекомендуется создать обработчик событий клавиатуры, с помощью которого можно выйти из приложения по нажатию определенной клавиши (к примеру, клавиши ESC). Для этого добавьте объявление KeyEventHandler в конструктор для главного окна приложения, как показано ниже: // Declare KeyEventHandler to handle keyboard events this.KeyDown += KeyDown_Event; © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 6 Добавив объявление KeyEventHandler, создайте обработчик событий, как показано ниже: // Handle keyboard events private void KeyDown_Event(object sender, KeyEventArgs e) { if (e.Key == Key.Escape) { MultipointSdk.Instance.Dispose(); App.Current.Shutdown(); } } Обработка событий добавления и удаления мыши Создавая приложение, поддерживающее несколько устройств мыши, следует включить в него функциональность, которая позволит добавлять и удалять устройства во время выполнения приложения. Пакет MultiPoint Mouse SDK предоставляет события, вызываемые при добавлении и удалении устройств, с помощью которых каждой подключаемой мыши можно назначать свой указатель. Обработка событий добавления мыши 1. Объявите обработчик событий подключения устройства. Его следует объявлять при инициализации приложения: либо в конструкторе, либо в обработчике событий Window.Loaded для главного окна приложения. Например: MultipointSdk.Instance.DeviceArrivalEvent += MultipointDeviceArrivalEvent; 2. Настройте в функции обработчика событий (в соответствии с объявлением в скобках в предыдущем примере кода) вызов следующего события: private void MultipointDeviceArrivalEvent(object sender, DeviceNotifyEventArgs e) { // add code to handle the arrival of the device here } 3. Назначьте указатель новой мыши. Например: e.DeviceInfo.DeviceVisual.CursorBitmap = bitmap; Полный пример управления указателями и их назначения новым устройствам мыши см. в файле Microsoft.Multipoint.Sdk.Samples.Common\CursorAssignments.cs. Кроме того, можно обрабатывать в коде событие удаления мыши, используя обработчик DeviceRemovalEvent. Однако в пакете SDK предусмотрено автоматическое удаление мыши и сопоставленного ей указателя при отключении мыши. Если при удалении мыши не требуется выполнять никаких специальных операций, этот шаг можно пропустить. Создание пользовательского интерфейса с поддержкой технологии MultiPoint Mouse Пакет MultiPoint Mouse SDK перехватывает низкоуровневые сообщения Windows и позволяет одновременно использовать несколько устройств мыши. Это означает, что большинство стандартных элементов управления WPF не будут отвечать на щелчки этих устройств. С пакетом MultiPoint Mouse SDK поставляется собственный элемент управления в качестве ловушки для событий мыши. В данном разделе показано, как с помощью этого элемента управления создать пользовательский интерфейс с поддержкой технологии MultiPoint Mouse. © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 7 Добавление элемента управления MultiPoint Чтобы добавить элемент управления в новое окно, которое может принимать события щелчка MultiPoint Mouse и действовать на их основе, нужно добавить элемент управления, реализующий интерфейс IMultipointMouseEvents. В пространстве имен Microsoft.Multipoint.Sdk.Controls доступен элемент управления MultipointButton. Реализуя интерфейс IMultipointMouseEvents, эти элементы управления могут выполнять мониторинг и обработку событий, созданных устройствами мыши. Добавление элемента управления MultiPoint 1. Импортируйте пространство имен в код Window1, как показано ниже: using Microsoft.Multipoint.Sdk.Controls; 2. Добавьте ссылку на это пространство имен в файл Window1.xaml, как показано ниже: <Window x:Class="MultipointBasicApp.Windowl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mp="clr-namespace:Microsoft.Multipoint.Sdk.Controls; assembly=Microsoft.Multipoint.Sdk.Controls" Title="Windowl" WindowState="Maximized"> Поскольку системный указатель не полностью отключен, а просто скрыт, рекомендуется задать значение WindowState равным Maximized, чтобы системный указатель не смог случайно щелкнуть другие окна, когда он будет находиться вне окна приложения. 3. Добавьте к окну объект MultipointButton, включив в файл Window1.xaml следующий код: <Grid> <mp:MultipointButton Name="mpButton" Content="Click Me" Click="mpButton_Click" /> </Grid> Обработка щелчков мыши MultiPoint Mouse Реализовав элемент управления (кнопку), обрабатывающий щелчки мыши, можно объявить обработчик событий. Объявление обработчика событий щелчков мыши 1. Объявите обработчик событий объекта mpButton, добавив в конструктор следующее объявление: II Declare Multipoint mouse button handler mpButton.MultipointClick += mpButton_Click; 2. Создайте обработчик событий, как показано ниже: II Handle Clicks on the mpButton MultiPointButton private void mpButton_Click(object sender, RoutedEventArgs e) { mpButton.Content = "Click"; } © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 8 Определение сделавшей щелчок мыши Возможности пакета MultiPoint Mouse SDK позволяют определить, щелчком какой мыши была нажата интерфейсная кнопка, и отобразить на этой кнопке ИД соответствующего указателя мыши. Определение мыши, с помощью которой нажата кнопка 1. Получите экземпляр нажатой кнопки. 2. Передайте содержимое объекта sender в объект MultipointButton, как показано ниже: MultipointButton btn = (MultipointButton)sender; 3. Чтобы получить сведения о сделавшей щелчок мыши, передайте содержимое RoutedEventArgs в MultipointMouseEventArgs, как показано ниже: MultipointMouseEventArgs multipointargs = e as MultipointMouseEventArgs; Оператор as предотвращает исключения InvalidCastException в случае сбоя передачи. 4. Перед выполнением требуемого действия убедитесь, что значение multipointargs не равно null, как показано ниже: if (multipointargs != null) { // perform required action } 5. Для определения мыши, сделавшей щелчок, просмотрите свойство Id объекта DeviceInfo. Эту информацию можно вывести на кнопку следующим образом: mpButton.Content = String.Format("Mouse #{0} Clicked me", multipointargs.DeviceInfo.Id); Настройка мыши MultiPoint Mouse Новым устройствам мыши назначается указатель мыши по умолчанию. Это может быть неудобно, поскольку все указатели мыши выглядят одинаково и сложно понять, какой мыши соответствует тот или иной указатель. Технология MultiPoint Mouse позволяет назначить устройствам мыши различные цвета и виды указателей. Задание цветов указателя DeviceInfo.DeviceVisual содержит свойство CursorColor. Чтобы выбрать красный цвет для указателя первой мыши, используйте следующий код: MultipointSdk.Instance.MouseDeviceList[0].DeviceVisual. CursorColor = Colors.Red; © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 9 Задание пользовательских изображений Вместо различных цветов указателя можно задавать для них разные точечные рисунки. Задание пользовательских изображений для указателей мыши 1. Найдите или создайте изображения для указателя в формате JPG, GIF или PNG и добавьте их к проекту в качестве ресурсов. 2. Чтобы получить доступ к этим ресурсам как к объектам Bitmap, импортируйте пространство имен System.Drawing, как показано ниже: using System.Drawing; 3. Создайте новую функцию поиска GetCursorImage, передавая ИД. Эта функция возвращает изображение вместо цвета, как показано ниже: private Bitmap GetCursorImage(int id) { switch (id) { case 0: return Properties.Resources.boy_01; case 1: return Properties.Resources.boy_02; case 2: return Properties.Resources.boy_03; case 3: return Properties.Resources.boy_04; default: return Properties.Resources.boy_05; } } Полный пример кода см. в файле Microsoft.Multipoint.Sdk.Samples.Common.CursorAssignments.cs. Замораживание мыши В некоторых сценариях работы в классе учителю может потребоваться заморозить указатели мыши учащихся, например, чтобы привлечь их внимание. Для этого установите значение свойства DisableMovement объекта MultipointMouseDevice равным true. Чтобы заморозить все устройства мыши, пройдите по списку устройств, замораживая каждое из них. private void FreezeMice() { foreach(var deviceInfo in MultipointSdk.Instance.MouseDeviceList) { deviceInfo.DeviceVisual.DisableMovement = true; } } Полный пример см. в: © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 10 Microsoft.Multipoint.Sdk.Samples.Quiz.Model.PlayerManager.ToggleMiceFrozen. Дополнительные темы Исключение указателей из области на экране В примере Quiz игрокам доступна только собственная область вопросов на экране. При попытке выйти за пределы этой области указатель возвращается обратно с помощью метода MultipointMouseDevice.SetPosition. Дополнительные сведения об этой технологии см. в: Microsoft.Multipoint.Sdk.Samples.Quiz.Model.PlayerManager.HandleMouseMovement. Задание функций для конкретной мыши (мыши учителя) В примере Map у мыши учителя есть специальный доступ к панели управления, а все остальные устройства мыши исключаются из этой области. Мышь учителя определяется путем ввода пред варительно заданного шаблона: в данном случае путем нажатия клавиши M и последующим щелчком правой кнопкой мыши в течение двух секунд. Мыши учителя назначается особый указатель, поэтому ее легко отличить от других. Это лишь один пример, демонстрирующий, как задавать функции для конкретной мыши с помощью шаблона из щелчков мыши и/или нажатий клавиши. Дополнительные сведения об этой технологии см. в: Microsoft.Multipoint.Sdk.Samples.Map.WindowMain.OnKeyDown Microsoft.Multipoint.Sdk.Samples.Map.WindowMain.OnMultipointMouseDown Приложение A. Сценарии использования В этом разделе приводятся сценарии использования примеров Map и Quiz. Следующий сценарий будет использоваться в качестве основы для каждого из сценариев использования. Г-жа Адамс — учитель третьего класса начальной школы в городском квартале, где проживает малоимущее население. У школы нет средств, чтобы приобрести компьютеры для всех учащихся. В классе г-жи Адамс 30 учащихся, у каждого из которых есть беспроводная мышь, подключенная к ее компьютеру. Экран компьютера учителя проецируется на большой экран в передней части класса. © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 11 Сценарий использования: пример Map Класс г-жи Адамс будет выполнять задание в примере Map. Цель задания — указать место на карте, ответив на вопрос на экране. При запуске примера загружаются варианты заданий: они отображаются в правой части экрана. Автоматически загружается первый вариант, Cities Around the World («Города мира»), и над картой появляется первый вопрос. Рис. 1. Пример Map На рис. 1 над картой отображается вопрос Where is Sydney? (Где находится Сидней?). На карте видны три пользовательских указателя, соответствующих трем игрокам, а внизу экрана отображается список подключенных игроков. В списке справа отображаются доступные в примере варианты заданий. Каждый подключенный игрок должен щелкнуть место на карте, о котором говорится в вопросе. Как только игрок отвечает на вопрос, результат записывается и отображается на табло в левой части окна. На табло отображается время, которое понадобилось учащемуся, чтобы выбрать и щелкнуть место на карте, а также результат ответа: правильно (зеленый) или неправильно (красный). Когда все игроки ответят на вопрос, появляется следующий вопрос о расположении еще одного города. Процесс повторяется до тех пор, пока не будут найдены все заданные места. Учитель может перейти к следующему вопросу в любое время, нажав на экране кнопку Next Location (Следующее расположение). После окончания задания автоматически начинается следующее задание. Кроме того, можно выбрать задание, нажав на экране кнопку Next Activity (Следующее задание). © Корпорация Майкрософт (Microsoft Corporation), 2009. Приступая к работе с пакетом Windows MultiPoint Mouse SDK 1.5 — 12 Сценарий использования: пример Quiz Класс г-жи Адамс будет выполнять задание в примере Quiz. В примере Quiz на экране отображаются четыре отдельных области для каждого игрока. В каждой области выводится вопрос, на который игрок должен ответить, нажав одну из кнопок ответа. Рис. 2. Пример Quiz Указатель каждого игрока может перемещаться только по соответствующей ему области, поэтому игрок не может отвечать на вопросы в других областях. Таймер ведет обратный отсчет одной минуты, и цель задания — ответить на максимальное количество вопросов в течение этого времени. © Корпорация Майкрософт (Microsoft Corporation), 2009.