Шаг 159 - Некоторые обобшения - Виды ввода

Весна... Тянет на философию и общение. 
Особенно перед выборами президента.

Мы с Вами довольно долго работаем с разными сообщениями, которые являются следствием ввода. Пора глобально взглянуть откуда берутся сообщения.

Сообщения могут идти от клавиатуры. Вот такие.

WM_KEYDOWN      Пользователь нажал клавишу
WM_KEYUP        Пользователь отпустил клавишу
WM_SYSKEYDOWN   Пользователь нажал системную клавишу
WM_SYSKEYUP     Пользователь отпустил системную клавишу

Ввод символа это не тоже самое, что нажал кнопку хотя принцип тот же. Для того, чтобы получить символ нужно нажать и отпустить кнопку. В данном случае эти сообщения транслируются в одно сообщение, что в случае самостоятельной реализации ввода символов в окно удобно. Например, легко запретить вводить ряд символов :-). Кодировка символов ANSI

WM_CHAR 	Пользователь ввел символ
WM_SYSCHAR	Пользователь ввел системный символ

Да системные клавиши это все кроме букв и цифр, то есть Alt или, например, F10 разбивка сообщений на эти два вида тоже искусственная. Но удобна.

От мыши.

WM_MOUSEMOVE     Пользователь перемещает курсор мыши  в/через окно.
WM_LBUTTONDOWN   Пользователь нажимает левую кнопку.
WM_LBUTTONUP     Пользователь отпускает левую кнопку.
WM_LBUTTONDBLCLK Пользователь  нажимает,  отпускает  и 
вновь нажимает левую кнопку (в рамках отпущенного системой времени).
WM_MBUTTONDOWN   Пользователь нажимает среднюю кнопку.
WM_MBUTTONUP     Пользователь отпускает среднюю кнопку.
WM_MBUTTONDBLCLK Пользователь  нажимает,  отпускает  и
вновь нажимает среднюю кнопку(в рамках
отпущенного системой времени).
WM_RBUTTONDOWN   Пользователь нажимает правую кнопку.
WM_RBUTTONUP     Пользователь отпускает правую кнопку.
WM_RBUTTONDBLCLK Пользователь  нажимает,  отпускает  и
вновь  нажимает правую кнопку (в рам-
ках отпущенного системой времени).

Сообщение от мыши Вы получите только в том случае, если мышка внутри окна. Ради справедливости можно сказать, что можно ловить сообщения и вне окна, для этого нужно использовать SetCapture, тогда весь ввод от мыши будет в окне. Мышь будет у Вас пока вы её не освободите с помощью ReleaseCapture. Окно, которое ухватило мышь можно вычислить с помощью GetCapture. Двойной щелчок окно может получать не всегда. Только если стиль его CS_DBLCLKS. MFC заботится об этом и поэтому он уже установлен.

От таймера

WM_TIMER         Таймер сработал

Скорость посылки сообшений таймером устанавливается в милисекундах. В одной секунде 1000 милисекунд. Расчет простой считайте.

От полос прокрутки

WM_HSCROLL       Пользователь жмет горизонтальную прокрутку
WM_VSCROLL       Пользователь жмет вертикальную прокрутку

От меню

WM_COMMAND      Пользователь выбрал пункт меню
WM_SYSCOMMAND   Пользоваитель выбрал пункт системного меню

Ну и на всякий случай как их все отловить. Нажмите правую кнопку на классе и выберите пункт меню Add Windows Message Handle. Все они будут перед вами.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 20.03.2000