функцииввода
В системе Windows приложение принимает ввод от пользователя через мышь или клавиатуру. Такие встроенные в Windows элементы управления, как кнопки, элементы управления редактированием, меню и т.д., отвечают на события клавиатуры и мыши соответствующим образом по умолчанию. Однако для некоторых приложений необходимо изменить предусмотренные по умолчанию действия клавиатуры или мыши, как в случае элементов управления, определяемых пользователем. В API Win32 предусмотрен широкий набор функций для управления клавиатурой и мышью.
Сообщениямыши
С точки зрения программиста, мышь взаимодействует с программой, отправляя ряд сообщений. Система Windows вырабатывает несколько сообщений, когда пользователь передвигает мышь или нажимает кнопки мыши. В табл. 9.1 показаны некоторые из наиболее распространенных сообщений, применяемых в приложении.
Таблица 9. 1. Обычные сообщения мыши |
|
Сообшение |
Описание |
WMJ.BUTTONDBLCLK |
Левая кнопка мыши нажата второй раз в течение времени регистрации двойного щелчка |
WM_LBUTTONDOWN |
Нажата левая кнопка мыши |
WM_LBUTTONUP |
Отпущена левая кнопка мыши |
WM_MOUSEMOVE |
Передвинут курсор мыши |
WM_NCHITTEST |
Выполняется проверка, над объектом какого типа находится курсор (рамка, заголовок, клиентская область и т.д.) |
WM_NCMOUSEMOVE |
Курсор мыши переместился внутри неклиентской области окна |
WM_RBUTTONDBLCLK |
Правая кнопка мыши нажата второй раз в течение времени регистрации двойного щелчка |
WM_RBUTTONDOWN |
Нажата правая кнопка мыши |
WM_RBUTTONUP |
Отпущена правая кнопка мыши |
WM_SETCURSOR |
Должна быть выполнена смена курсора мыши |
Когда приложение получает сообщение мыши, значение параметра IParamэтого сообщения содержит координаты дс, у курсора на экране. Координата у находится в старшем слове, координата д: — в младшем. Для извлечения этих двух значений применяются макрокоманды LOWORDи HIWORD. В листинге 9.1 показан фрагмент программы, который связан с обработкой сообщений WM_MOUSEMOVEв функции WndProc.
Листинг 9.1. СообщенияWM_MOUSEMOVEвфункцииWndProc__________________________
LKESULT CALLBACK WndProc( ИТОГО hWnd, OINT uMsg, WPARAM wParam, LPARAM IParam )
{
static int nXpos, nYpos;
switch( uMsg )
{
case WM_MOUSEMOVE:
nXpos = LOWORD ( IParam ) ; nYpos = HIWORD ( IParam ) ;
Обратите внимание, что позиция курсора мыши указана относительно левого верхнего угла клиентской области окна. В API Win32 предусмотрены две функции для прямого и обратного преобразования экранных и клиентских координат: ScreenToClient и ClientToScreen. Эти функции часто применяются в составе процедур обработки сообщений мыши.
Двойной щелчок мышью означает, что пользователь нажал кнопку мыши дважды в течение короткого периода времени, установленного системой. Пользователь может изменить продолжительность этого времени с помощью панели управления. Это значение можно также изменить в приложении с помощью функции SetDoubleClickTlme. Двойные щелчки обычно используются для выбора элемента и, одновременно с этим, выполнения какого-то действия. Например, если пользователь дважды щелкнет на элементе в списке, приложение может автоматически продолжить работу, как если бы пользователь выбрал этот элемент, а затем щелкнул на кнопке ОК. Окно не получает автоматически сообщения двойных щелчков, если к стилю класса окна не добавлено значение CS_DBLCLKS.
Сообщенияклавиатуры
Система Windows сообщает также приложению о нажатиях клавиш, посылая сообщения. Наиболее широко распространенные сообщения приведены в табл. 9.2.
Таблица 9.2. Обычные сообщения клавиатуры |
|
Сообщение |
Описание |
WM CHAR |
Код ASCII для символа, если была нажата клавиша какого-то символа |
WM KEYDOWN |
Сообщение о том, что была нажата клавиша |
WM KEYUP |
Сообщение о том, что была отпущена клавиша |
WM_SYSCHAR |
Код ASCII для клавиши символа, которая была нажата при нажатой клавише Alt |
WM SYSKEYDOWN |
Сообщение о том, что была нажата клавиша при нажатой клавише Alt |
WM SYSKEYUP |
Сообщение о том, что была отпущена клавиша при нажатой клавише Alt |
Сообщение WM_CHARвырабатывается функцией TranslateMessage в цикле обработки сообщений нити. Эта функция описана в главе 5. Как правило, в приложении для определения нажатий функциональных клавиш, клавиш со стрелками, клавиш цифровой клавиатуры и клавиш редактирования, таких как PgUp, PgDn и т.д..
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.