Обзор сообщений
while (GetMessage(&msg , 0 , 0 , 0 ) ) {TranslateMessage(&msg); DispatchMessage(&msg);}
Обработчики всех клавиатурных сообщений должны возвращать нулевое значение.
При любом перемещении мыши по экрану генерируется сообщение WM_NCHITEST. Старшее слово параметра lParam этого сообщения содержит вертикальную, а младшее слово – горизонтальную координату курсора мыши в момент появления сообщения. Обычно это сообщение не обрабатывается приложением , а передается функции DefWindowProc . После обработки этого сообщения Windows анализирует положение курсора, а также наличие нажатия клавиши мыши и генерирует одно из нижеперечисленных сообщений. В случае, если курсор находится в рабочей области окна генерируются сообщения :
WM_LBUTTONDBLCLK – двойной щелчок левой кнопкой мыши;
WM_LBUTTONDOWN – нажата левая кнопка мыши;
WM_LBUTTONUP – отпущена левая кнопка мыши;
WM_MBUTTONDBLCLK – двойной щелчок средней кнопкой мыши;
WM_MBUTTONDOWN – нажата средняя кнопка мыши;
WM_MBUTTONUP – отпущена средняя кнопка мыши;
WM_RBUTTONDBLCLK – двойной щелчок правой кнопкой мыши;
WM_RBUTTONDOWN – нажата правая кнопка мыши;
19
WM_RBUTTONUP – отпущена правая кнопка мыши;
WM_MOUSEMOVE – перемещение курсора мыши;
WM_MOUSEACTIVATE – нажата клавиша мыши над неактивным окном.
Для всех перечисленных сообщений параметр lParam содержит координаты курсора мыши (старшее слово – вертикальную, младшее – горизонтальную), а параметр wParam представляет логическую комбинацию следующих битовых флагов :
MK_CONTROL– нажата клавиша CTRL;
MK_LBUTTON– левая кнопка мыши находится в нажатом состоянии;
предыдущаяследующая