69270

Обробка подій миші

Лекция

Информатика, кибернетика и программирование

У цьому розділі розглядаються способи організації введення даних за допомогою миші і клавіатури. У першому розділі описується стандартна система введення даних, використовувана операційною системою Windows для контролю стану введення (input state).

Украинкский

2014-10-02

43 KB

0 чел.

Лекція № 12

Тема: Обробка подій миші

План

  1.  Події
  2.  Введення за допомогою миші
  3.  Створення обробників повідомлень миші

Події

У цьому розділі розглядаються способи організації введення даних за допомогою миші і клавіатури. У першому розділі описується стандартна система введення даних, використовувана операційною системою Windows для контролю стану введення (input state). Тут також приділяється увага розгляду концепції локального стану введення (local input state), вперше реалізованого в операційній системі Windows NT і використовуваного тепер у всіх 32-розрядних версіях Windows.

Потім розглядається введення за допомогою миші. Завдяки бібліотеці базових класів Microsoft (MFCMicrosoft Foundation Classes) часи низькорівневої коди обробки подій миші залишилися у далекому минулому (безумовно, якщо у розробника достатньо вільного часу, він може дозволити собі і таку розкіш). У даному розділі описуються методи MFC, забезпечуючий контроль і маніпулювання мишею, а також розглядаються такі питання, як зовнішній вигляд (форма) курсора миші, захоплення миші і обмеження переміщення курсора миші.

І на закінчення розглянемо способи, що дозволяють додатку використовувати введення з клавіатури. Застосовуючи такі елементи призначеного для користувача інтерфейсу, як поле введення, можна надати Windows і MFC можливість самостійно виконувати всі завдання по обробці введення з клавіатури. Проте достатньо часто буває необхідний жорсткіший контроль над подіями клавіатури. В ході обговорення цієї теми торкнуться такі поняття, як фокус введення з клавіатури (keyboard focus), текстовий курсор (точка введення) (keyboard cursor (insertion point)), стан виділення (selection state) і багато інших елементів конструкції призначеного для користувача інтерфейсу, пов'язані з введенням з клавіатури.

Для більшості програмістів, загартованих розробкою застосувань, що не мають відношення до Windows, управління подіями, характерне для операційної системи Windows, складає певну проблему, коли вони вперше приступають до розробки подібних застосувань. У контексті обробки призначеного для користувача введення термін керований подіями (event-driven) означає, що при кожному натисненні користувачем клавіші або клацанні мишею замість коди опиту, відповідного натисненню клавіш або клацанню мишею, операційна система передає додатку повідомлення Windows {WMwindows message). Бібліотека MFC співвідносить (map) повідомлення Windows з функціями C++, званими обробниками повідомлень (message handler). Оператори, оброблювальні дані, що вводяться в додаток, розташовані саме в цих функціях-обробниках повідомлень. У попередньому розділі розглядалися обробники повідомлень меню, а в справжньому розділі поговоримо про обробників повідомлень подій миші і клавіатури. Спочатку розглянемо стан введення миші, а потім і клавіатури.

Введення за допомогою миші

Як вже мовилося, Windows повідомляє вікна програм про дії користувача, сылая ним повідомлення, що зберігаються в апаратній черзі введення (input queue). Табл. містить список основних повідомлень Windows для миші, обробники яких використовують ця для організації реакції на дії користувача.

Таблиця. Повідомлення Windows для миші

Повідомлення

Причина повідомлення

WM_LBUTTONDOWN

Ліва кнопка миші нажата1 (курсор знаходиться в клієнтській області вікна)

WM_LBUTTONUP

Ліва кнопка миші відпущена

WM_RBUT TON DOWN

права кнопка миші натиснута (курсор знаходиться в клієнтській області вікна)

WM_RBUTTONUP

Права кнопка миші відпущена

WM_MBUTTONDOWN

Середня кнопка миші натиснута (курсор знаходиться в клієнтській області вікна)

WM_MBUTTONUP

Середня кнопка миші відпущена

WM_MOUSEMOVE

Курсор миші переміщається в клієнтській області вікна

Імена повідомлень починаються з префікса WM (Windows Message), вказуючого, що це повідомлення Windows.

Створення обробників повідомлень миші

Обробник повідомлень може бути створений в представленні Class View (Класи). Тепер створимо обробник повідомлення миші, який дозволить відстежувати (і відображати на екрані) переміщення курсора миші в клієнтській області вікна. Для цього необхідно зробити наступне.

1. Створіть проект додатку однодокументного інтерфейсу під назвою HandlerTest.

2. У представленні Class View (Класи) клацніть правою кнопкою мыщи на класі CHandlerTestView і в контекстному меню, що з'явилося, виберіть пункт Properties (Властивості).

3. Клацніть на піктограмі Messages (Повідомлення), розташованій у верхній частині діалогового вікна Properties. Середовище розробки Visual Studio відобразить в діалоговому вікні Properties всі повідомлення, які може отримувати вікно цього класу.

4. Знайдіть елемент WM_MOUSEMOVE І клацніть на нім. Це приведе до додавання в клас функції-члена на ім'я OnMouseMove.

5. Додайте в код функції OnMouseMove наступні рядки.

CClientDC ClientDC( this );

CString strlnfo;

strlnfo.Format( "Current Mouse Position = X:%d Y:%d"

point.x, point.у ) ;

CLIENTDC.TextOut(10, 10, strlnfo, strlnfo.GetLength() );

6. Відкомпілюйте і запустіть додаток. При переміщенні миші в клієнтській частині вікна на екрані відображатимуться координати її курсора.

 


 

А также другие работы, которые могут Вас заинтересовать

33381. Структура однопроцессорной СУ с двумя магистралями 35 KB
  Схема микропроцессорной управляющей системы Расширители стандартных арифметических функций МП УЧПУ необходимы для повышения производительности МПС при выполнении операций входящих в базовый набор арифметических функций. Примером реализации данной структуры являются УЧПУ 2С42 Маяк600. Уже в однопроцессорных УЧПУ в полной мере определились основные принципы организации МПС УЧПУ обеспечивающие возможность расширения системы при сохранении функциональной гибкости и обеспечении надежности функционирования при малом времени восстановления в...
33382. Структура многопроцессорной СУ с параллельным обменом информации между процессорами 29 KB
  Верхний уровень управления системная магистраль. Нижний уровень управления локальные магистрали ВЧС1 ВЧС n. В качестве примера реализации данной структуры можно назвать СУ промышленных роботов: РБ242Б двухпроцессорная двухуровневая система управления с БОП Сфера 36 семипроцессорная двухуровневая система управления с модулем связи.
33383. Структура многопроцессорной СУ с последовательным обменом информации между процессорами 29.5 KB
  2 б в отличие от первой МП ВЧС имеют равные возможности обмена данными. Обмен осуществляется через адаптеры связи АС1АС3 подключенные к локальным магистралям соответствующих вычислителей и имеющих выходы на два последовательных канала обмена. Достоинством данной структуры является конструктивная автономность локальных ВЧС вычислитель возможность их встраивания в аппаратуру расположенную в различных местах общей системы управления при минимальном числе линий обмена и хорошей а в перспективе при использовании оптических каналов обмена ...
33384. Структура с ее перекрестными связями 29.5 KB
  Коммутация может осуществляться в каждом коммутирующем узле КУ матричной системы обеспечивая физическое подсоединение любого модуля памяти МП к любому процессору ПРЦ. Выход из строя части коммутатора не приводит к отказу системы так как функции процессоров коммутируемых этой частью могут быть распределены между другими процессорами системы. Данные системы используются там где необходимо получить максимальную производительность при вычислениях либо управлении.
33385. Структура с многошинными связями 29 KB
  ММПС с многошинными связями В ММПС с многошинными связями каждый процессорный модуль имеет доступ к любому модулю памяти при помощи собственных шин. Пропускная способность схем с многошинными связями ниже чем с матричным коммутатором но у них меньше и аппаратные затраты.
33386. Структура с общей шиной и общими модулями памяти 30 KB
  ММПС с общей шиной отличаются наибольшей простотой организации связей и наименьшими аппаратными затратами. Основными недостатками таких систем являются ограниченная пропускная способность общей шины и невысокая надежность так как выход из строя общей шины приводит к отказу всей системы. Структуры с общей шиной ШД в настоящее время получили наибольшее распространение.
33387. Структура с общей шиной и раздельной памятью 31.5 KB
  ОШ служит только для межпроцессорного обмена в процессе взаимодействия программных модулей выполняемых на разных ПРЦ. ММПС с объединёнными локальной и общей памятью процессоров Физически отдельная ОМП общая память может располагаться как на шинах ПРЦ так и на ОШ рис. Наибольшим быстродействием обладают структуры в которых общая память физически отделена и расположена на шинах ПРЦ так как в этих случаях отсутствуют конфликты при одновременных обращениях одного из ПРЦ в область локальной памяти и других ПРЦ в область общей памяти....
33388. Система управления МАЯК 600 на базе промышленного компьютера. Характеристика, структура 36 KB
  УЧПУ Маяк600 относится к многопроцессорным системам класса CNC. Структурная схема УЧПУ представлена на рис. УЧПУ предназначено для управления технологическим оборудованием и позволяет управлять 8 следящими приводами подач. Основные технические характеристики УЧПУ Маяк600 Наименование параметра Величина 1.
33389. Система управления Маяк 600 на базе ПК. Характеристика СУ, назначение модулей СУ 41.5 KB
  Основные технические характеристики УЧПУ Маяк600 Наименование параметра Величина 1. Максимальное число связей с электрооборудованием станка для одного блока вводавывода входы выходы 48 32 УЧПУ состоит из двух функциональных блоков: блока управления БУ и пульта оператора. Возможность работы с различными комбинациями модулей позволяет оптимально сконфигурировать УЧПУ применительно к управлению конкретным технологическим оборудованием. Компьютер БУ управляет УЧПУ по программе базового программного обеспечения хранящейся в электронном Flsh...