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. Відкомпілюйте і запустіть додаток. При переміщенні миші в клієнтській частині вікна на екрані відображатимуться координати її курсора.

 


 

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

23152. Шістдесятництво як явище 168.13 KB
  Зустрічі на яких громили шістдесятників відбулися у Києві Львові Харкові й Дніпропетровську. Влада не сиділа склавши руки: крім звільнень з роботи звільнили Василя Стуса Михайлину Коцюбинську В’ячеслава Чорновола організовувалися мітинги робітників і колгоспників які засуджували дії шістдесятників. 28 листопада 1970 року за таємничих обставин була вбита одна з головних учасниць руху шістдесятників Алла Горська. Феномен молодості природний для кожного нового покоління у шістдесятників щасливо поєднався із зустрічною потребою...
23153. Життя і творчий шлях Юрія Клена 66.5 KB
  Вже в 20ті роки розкрилися ті особливості його манери письма які зближували Юрія Клена з неокласиками: досконале володіння мистецькою формою своєрідний панестетизм. 1943 року з'являється в світ збірка поезій Юрія Клена Каравели в якій автор спробував синтезувати творчі принципи київських неокласиків та ідейнохудожні шукання поетів празької школи. Вершинними здобутками Юрія Кленапоета є поеми Прокляті роки 1937 та Попіл імперій 1943 1947.
23154. Я хочу правді бути вічним другом і ворогом одвічним злу... творчість Василя Симоненка 27.5 KB
  Це очі Василя Симоненка поета якому судилося прожити усього 28 років але залишитися в пам'яті народній назавжди. Тому мабуть кожне наступне покоління буде вважати Василя Симоненка своїм однолітком і гортаючи сторінки знаходити в поезіях відгуки власних емоцій і почуттів. Найбільша любов поета це рідна земля Україна саме цій темі присвячена більшість творів Симоненка: Україно ти моя молитва ти моя розпука вікова.
23155. Ліна КОСТЕНКО БЕРЕСТЕЧКО 414 KB
  Кишить Вкраїна кишлами орди І Бог згортає чорними сувоями твоє терпіння виткане з біди НЕ ЖАЛІВ МЕНІ ХАН НІ ВИНА НІ КУМИСУ НІ МЕДУ. І розджохався хан усе причіпеньки шукав: Ти мене одурив проклятий ґяуре Я привів своє військо а ти мене ошукав Що ж ти хочеш козацький ти макогоне щоб у тих болотах мені жаба цицьки дала Ти ж казав що їх мало. Ти ж мені любий брат казав Гірей. Несу свій хрест на свої Голгочі А цар стромляє мені у спину Свої двойлезі каправі очі.
23156. В. Симоненко про історичну місію людини на землі («Ти знаєш, що ти - людина?») 24 KB
  Симоненко про історичну місію людини на землі Ти знаєш що ти людина В історії української літератури шістдесяті роки стали роками творчості письменників які віддали свій голос на захист простої людини. Вони намагалися пробити чиновницькобюрократичну стіну суспільства де людина була лише гвинтиком їхнього апарату а не творцем своєї долі своєї історії. Повага до людини зокрема до її гідності до права жити так як вона хоче в цьому філософська наснаженість і гуманістична спрямованість поезії Ти знаєш що ти людина Лад у...
23157. Головний герой поезій В. Симоненка 23.5 KB
  В його юнацькому серці завжди жили любов віра в людину в її творчі можливості. Такі вірші як Лебеді материнства Україні Земле рідна Україно п'ю твої зіниці вражають читачів великою синівською любов'ю поета до своєї Батьківщини непідробним почуттям патріота. Ліричний герой цих поезій наголошує що без любові до Батьківщини нема справжньої людини. У віршах Любов Вона прийшла Є в коханні і будні і свята розкрито інтимні почуття ліричного героя.
23159. Духовні цінності людини в поезії Ліни Костенко 26 KB
  Поставити свого сучасника обличчям до норм що їх виробляло людство впродовж століть задуматися над сутністю власного життя зосередитися на усвідомленні себе сином української землі взяла на себе обов'язок поетеса Ліна Костенко. Звичайно у зв'язку із своєю позицією поетапатріота Ліна Костенко перебувала в опозиції до офіційних властей тоталітарного радянського суспільства. У своїх поезіях Ліна Костенко бачить конкретних винуватців моральної і духовної деградації людей.
23160. Євген Маланюк (1897-1968) 27 KB
  Як пише сам Євген Маланюк його прізвище фігурувало ще в реєстрах старшини часів Богдана Хмельницького. В колишньому Єлисаветграді Маланюк закінчує реальну гімназію раніше тут навчалися брати Тобілевичі Марко Кропивницький Є. Мобілізація у зв'язку з першою світовою війною Київська військова школа і поручник Євген Маланюк стає командиром сотні 2го Туркестанського стрілецького полку.