Некоторые сообщения Windows.

WM_ACTIVATE

Посылается когда окно активируется (получает фокус ввода) или деактивируется (теряет фокус ввода). Обрабатывать это сообщение нужно, если необходимо выполнять какие - либо действия при активации окна (например передавать фокус ввода в определенный Эл. упр., или инициализировать каким - то значением каждый раз когда окно активируется)

fActive = LOWORD(wParam); // флаг активации

fMinimized = (BOOL) HIWORD(wParam); // флаг минимизации

hwndPrevious = (HWND) lParam; // дескриптор окна

Параметры

fActive – определяет было окно активировано или деактивировано. Принимает следующие значения:

WA_ACTIVE - Активировано методом отличным от нажатия мыши (например с помощью клавиатуры (Activated by some method other than a mouse click (for example, by a call to the SetActiveWindow function or by use of the keyboard interface to select the window).)

WA_CLICKACTIVE - активировано мышью (Activated by a mouse click.)

WA_INACTIVE – Деактивировано (Deactivated.)

fMinimized – не 0, если окно было минимизировано, иначе 0.

(Value of the high - order word of wParam. Specifies the minimized state of the window being activated or deactivated. A nonzero value indicates the window is minimized. )

hwndPrevious – если fActive = WA_INACTIVE, это дескриптор окна, которое активно; если fActive = WA_ACTIVE или WA_CLICKACTIVE – дескриптор окна, которое было деактивировано. (Value of lParam. Identifies the window being activated or deactivated, depending on the value of the fActive parameter. If the value of fActive is WA_INACTIVE, hwndPrevious is the handle of the window being activated. If the value of fActive is WA_ACTIVE or WA_CLICKACTIVE, hwndPrevious is the handle of the window being deactivated. This handle can be NULL.)

НЕ нашли? Не то? Что вы ищете?

WM_CHAR

Посылается в окно с фокусом ввода когда сообщение WM_KEYDOWN (нажатие клавиши клавиатуры) было обработано ф - ей TranslateMessage. При обработке этого сообщения можно отлавливать нажатия на определенные буквы.

chCharCode = (TCHAR) wParam; // код символа

lKeyData = lParam; // данные о клавише

chCharCode - код символа.

lKeyData – содержит:

Биты:

счетчик повторений (Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.)

1скан - код клавиши (Specifies the scan code. The value depends on the original equipment manufacturer (OEM).)

24 содержит 1, если была нажата клавиша расширенной клавиатуры (как правый ALT или CTRL или другие) иначе 0. (Specifies whether the key is an extended key, such as the right - hand ALT and CTRL keys that appear on an enhanced 101 - or 102 - key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.)

2Не используется. Reserved; do not use.

29 содержит 1, если одновременно с клавишей была нажата ALT, иначе 0. (Specifies the context code. The value is 1 if the ALT key is held down while the key is pressed; otherwise, the value is 0.)

30 содержит 1, если клавиша была нажата до посылки этого сообщения, иначе 0. (Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up.)

31 содержит 0, если клавиша была нажата и 1 если была отпущена (Specifies the transition state. The value is 1 if the key is being released, or it is 0 if the key is being pressed.)

WM_CLOSE

Посылается окну или приложению как сигнал, что пора закрываться.

Не имеет параметров.

WM_COMMAND

Посылается когда:

1.  Пользователь нажимает на пункт меню;

2.  Элемент управления посылает извещение;

3.  Пользователь нажимает горячую клавишу.

Обработка этого сообщения – реакция на действия пользователя. Основная часть программы, связанная с обработкой данных и интерфейса будет находится в обработчике этого сообщения. Выбор меню, нажатия на кнопки и т. д. и т. п.

wNotifyCode = HIWORD(wParam);// код извещения

wID = LOWORD(wParam); // идентификатор пункта меню, Эл. упр. или горячей клавиши

hwndCtl = (HWND) lParam; // дескриптор Эл. упр, иначе NIL

Параметры:

wNotifyCode - Value of the high - order word of wParam. Specifies the notification code if the message is from a control. If the message is from an accelerator, this parameter is 1. If the message is from a menu, this parameter is 0.

wID - Value of the low - order word of wParam. Specifies the identifier of the menu item, control, or accelerator.

hwndCtl - Value of lParam. Identifies the control sending the message if the message is from a control. Otherwise, this parameter is NULL.

Если программа обрабатывает это сообщение, она должна возвратить ноль.

WM_CREATE

Посылается когда приложение требует, чтобы окно было создано с помощью CreateWindowEx или CreateWindow. Оконная функция получает это сообщение после завершения ф - ий CreateWindowEx или CreateWindow, когда окно уже создано, но еще не отображается на экране. Обрабатывается, если необходимо произвести какие - либо действия при создании окна (например проинициализировать какие - нибудь структуры данных)

lpcs = (LPCREATESTRUCT) lParam;// указатель на запись, содержащую информацию о созданном окне.

WM_DESTROY

Посылается когда окно должно быть уничтожено и уже убрано с экрана. Должно быть обработано обязательно, иначе закрыть окно корректно не удастся.

WM_ENABLE

Сообщение WM_ENABLE посылается тогда, когда прикладная программа изменяет включенное состояние окна. Оно посылается окну, чьё включенное состояние изменяется. Это сообщение посылается перед возвращением значения функцией EnableWindow, но только после того, как изменилось включенное состояние (бит стиля WS_DISABLED) окна.

fEnabled = (BOOL) wParam; // флажок включить/заблокировать

Параметры

fEnabled - Устанавливает, было ли окно включено или заблокировано. Этот параметр был бы ИСТИНА (TRUE), если бы окно было включено или ЛОЖЬ(FALSE), если бы окно было заблокировано. Если программа обрабатывает это сообщение, она должна возвратить ноль.

WM_KEYDOWN

Посылается когда нажимается клавиша на клавиатуре.

nVirtKey = (int) wParam; // Виртуальный код клавиши

lKeyData = lParam; // данные о нажатии

lKeyData содержит байты:

счетчик повторений Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.

1скан - код клавиши Specifies the scan code. The value depends on the original equipment manufacturer (OEM).

24 содержит 1, если была нажата клавиша расширенной клавиатуры (как правый ALT или CTRL или другие) иначе 0. Specifies whether the key is an extended key, such as the right - hand ALT and CTRL keys that appear on an enhanced 101 - or 102 - key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.

2Reserved; do not use.

29 всегда 0. Specifies the context code. The value is always 0 for a WM_KEYDOWN message.

30 содержит 1, если клавиша была нажата до посылки этого сообщения, иначе 0. Specifies the previous key state. The value is 1 if the key is down before the message is sent, or it is 0 if the key is up.

31 всегда 0.Specifies the transition state. The value is always 0 for a WM_KEYDOWN message.

WM_KEYUP

Посылается когда нажимается клавиша на клавиатуре.

nVirtKey = (int) wParam; // Виртуальный код клавиши

lKeyData = lParam; // данные о нажатии

lKeyData содержит байты:

счетчик повторений Specifies the repeat count. The value is the number of times the keystroke is repeated as a result of the user holding down the key.

1скан - код клавиши Specifies the scan code. The value depends on the original equipment manufacturer (OEM).

24 содержит 1, если была нажата клавиша расширенной клавиатуры (как правый ALT или CTRL или другие) иначе 0. Specifies whether the key is an extended key, such as the right - hand ALT and CTRL keys that appear on an enhanced 101 - or 102 - key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.

2Reserved; do not use.

29 всегда 0.

30 всегда 1

31 всегда 1

WM_KILLFOCUS

Сообщение WM_KILLFOCUS отправляется окну немедленно перед тем, как оно теряет фокус клавиатуры.

Параметры

hwndGetFocus = (HWND) wParam; // дескриптор окна, принимающего фокус

hwndGetFocus - Идентифицирует окно, которое принимает фокус клавиатуры (может быть значением ПУСТО (NULL)). Прикладная программа должна возвратить нуль, если она обрабатывает это сообщение.

WM_LBUTTONDBLCLK

Сообщение WM_LBUTTONDBLCLK посылается когда пользователь делает двойной щелчок левой кнопкой мыши в клиентской области окна.

Параметры

fwKeys = wParam; // флаг (см. ниже)

xPos = LOWORD(lParam); // горизонтальная позиция курсора

yPos = HIWORD(lParam); // вертикальная позиция курсора

fwKeys – показывает была ли нажата какая - либо виртуальная клавиша. Может принимать комбинации следующих значений:

MK_CONTROL если клавиша CTRL была нажата. (Set if the CTRL key is down.)

MK_LBUTTON если левая кнопка мыши была нажата. (Set if the left mouse button is down.)

MK_MBUTTON если средняя кнопка мыши была нажата. (Set if the middle mouse button is down.)

MK_RBUTTON если правая кнопка мыши была нажата. (Set if the right mouse button is down.)

MK_SHIFT если клавиша SHIFT была нажата. (Set if the SHIFT key is down.)

xPos – горизонтальная координата позиции курсора относительно верхнего левого угла клиентской области. (Specifies the x - coordinate of the cursor. The coordinate is relative to the upper - left corner of the client area.)

yPos - вертикальная координата позиции курсора относительно верхнего левого угла клиентской области. (Specifies the y - coordinate of the cursor. The coordinate is relative to the upper - left corner of the client area.)

Аналогично WM_MBUTTONDBLCLK и WM_RBUTTONDBLCLK но для средней и правой кнопок мыши.

WM_LBUTTONDOWN

Посылается когда пользователь нажимает левую кнопку мыши.

Параметры (см. WM_LBUTTONDBLCLK)

fwKeys = wParam; // флаг

xPos = LOWORD(lParam); // горизонтальная позиция курсора

yPos = HIWORD(lParam); // вертикальная позиция курсора

Аналогично WM_MBUTTONDOWN и WM_RBUTTONDOWN но для средней и правой кнопок мыши.

WM_LBUTTONUP

Посылается когда пользователь отпускает левую кнопку мыши.

Параметры

fwKeys = wParam; // флаг (см. ниже)

xPos = LOWORD(lParam); // горизонтальная позиция курсора

yPos = HIWORD(lParam); // вертикальная позиция курсора

fwKeys – показывает была ли нажата какая - либо виртуальная клавиша. Может принимать комбинации следующих значений:

MK_CONTROL если клавиша CTRL была нажата. (Set if the CTRL key is down.)

MK_MBUTTON если средняя кнопка мыши была нажата. (Set if the middle mouse button is down.)

MK_RBUTTON если правая кнопка мыши была нажата. (Set if the right mouse button is down.)

MK_SHIFT если клавиша SHIFT была нажата. (Set if the SHIFT key is down.)

xPos – горизонтальная координата позиции курсора относительно верхнего левого угла клиентской области. (Specifies the x - coordinate of the cursor. The coordinate is relative to the upper - left corner of the client area.)

yPos - вертикальная координата позиции курсора относительно верхнего левого угла клиентской области. (Specifies the y - coordinate of the cursor. The coordinate is relative to the upper - left corner of the client area.)

Аналогично WM_MBUTTONUP и WM_RBUTTONUP но для средней и правой кнопок мыши.

WM_MOVE

Сообщение WM_MOVE передается после того, когда окно будет перемещено.

Параметры

xPos = (int) LOWORD(lParam); // позиция по горизонтали

yPos = (int) HIWORD(lParam); // позиция по вертикали

xPos - Значение младшего байта слова lParam. Устанавливает x - координату левого верхнего угла рабочей области окна.

yPos - Значение старшего слова lParam. Устанавливает y - координату левого верхнего угла рабочей области окна.

Если программа обрабатывает это сообщение, она должна возвратить ноль.

Замечания

xPos и yPos параметры даны в экранных координатах для перекрывающих и выскакивающих окон и в координатах пользователя - родителя для дочерних окон. Прикладная программа может использовать макрокоманду MAKEPOINTS, чтобы преобразовать параметр lParam для структуры POINTS.

WM_QUIT

Сообщение WM_QUIT указывает запрос, чтобы завершить прикладную программу и создается, когда из прикладной программы вызвана функция PostQuitMessage. Это вынуждает функцию GetMessage возвратить нуль (см цикл обработки сообщений).

Параметры

nExitCode = (int) wParam; // код завершения

nExitCode - Определяет код завершения, данный в функции PostQuitMessage.

WM_SETFOCUS

Сообщение WM_SETFOCUS посылается окну после того, как оно получило фокус клавиатуры.

Параметры

hwndLoseFocus = (HWND) wParam; // дескриптор окна, теряющего фокус

hwndLoseFocus - Идентифицирует окно, которое потеряло фокус клавиатуры (может быть значением ПУСТО (NULL)).

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

WM_SIZE

Сообщение WM_SIZE посылается окну после того, как его размер изменился.

Параметры

fwSizeType = wParam; // флажок изменения размеров

nWidth = LOWORD(lParam); // ширина рабочей области

nHeight = HIWORD(lParam); // высота рабочей области

fwSizeType - Определяет тип запрошенного изменения размеров. Этот параметр может принимать одно из следующих значений:

SIZE_MAXHIDE - Сообщение посылается всем выскакивающим окнам, когда развернуто некоторое другое окно.

SIZE_MAXIMIZED - Окно было развернуто.

SIZE_MAXSHOW - Сообщение посылается всем выскакивающим окнам, когда некоторое другое окно было восстановлено в его прежних размерах.

SIZE_MINIMIZED - Окно было свернуто(минимизировано).

SIZE_RESTORED - Окно было изменено, но ни одно значение SIZE_MINIMIZED ни SIZE_MAXIMIZED не применяется.

nWidth - Устанавливает новую ширину рабочей области.

nHeight - Устанавливает новую высоту рабочей области.

Если программа обрабатывает это сообщение, она должна возвратить ноль.