Весна... Тянет на философию и общение. Особенно перед выборами президента.
Мы с Вами довольно долго работаем с разными сообщениями, которые являются следствием ввода. Пора глобально взглянуть откуда берутся сообщения.
Сообщения могут идти от клавиатуры. Вот такие.
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. Все они будут перед вами.