Полоса просмотра

Переключатели

Сообщения для кнопки

Существует два способа передачи сообщений.

Передача сообщений органу управления

Первый способ - запись сообщения в очередь приложения. Он основан на использовании функции PostMessage:

BOOL WINAPI PostMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

Функция PostMessage помещает сообщение в очередь сообщений для окна, указанного параметром hWnd, и сразу возвращает управление.

Параметр uMsg задает идентификатор передаваемого сообщения.

Второй способ - непосредственная передача сообщения функции окна минуя очередь сообщений. Этот способ реализуется функцией SendMessage:

LRESULT WINAPI SendMessage(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

Параметры функции SendMessage используются аналогично параметрам функции PostMessage. Но в отличие от последней функция SendMessage вызывает функцию окна и возвращает управление только после возврата из функции окна.


Для установки кнопки в нажатое состояние следует передать ей сообщение BM_SETSTATE с параметром wParam, равным TRUE, и lParam, равным 0:

SendMessage(hButton, BM_SETSTATE, TRUE, 0);

Для возврата кнопки в исходное состояние необходимо передать ей то же сообщение, но с параметром wParam, равным FALSE:

SendMessage(hButton, BM_SETSTATE, FALSE, 0);


Переключатели BS_CHECKBOX, BS_RADIOBUTTON, BS_3STATE не перерисовываются при их переключении, то есть необходимо их перерисовывать самим, посылая им сообщение BM_SETCHECK:

SendMessage(hButton, BM_SETCHECK, 1, 0);

Параметр wParam сообщения BM_SETCHECK определяет состояние переключателя, которое необходимо установить:

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

В любой момент времени приложение может узнать состояние переключателя, посылая ему сообщение BM_GETCHECK:

WORD nState;

nState = (WORD) SendMessage(hButton, BM_GETCHECK, 0, 0);

Возвращаемое значение, которое будет записано в переменную nState, может быть равно 0 (для выключенного переключателя), 1 (для включенного) или 2 (для переключателя, который находится в неактивном состоянии и отображается серым цветом).


Горизонтальная и вертикальная полоса просмотра посылают в функцию родительского окна сообщения WM_HSCROLL и WM_VSCROLL, соответственно.

Параметр WParam этих сообщений несет в себе информацию о действии, которое было выполнено над полосой просмотра.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: