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

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

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

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

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

Первый способ - запись сообщения в очередь приложения. Он основан на использовании функции 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 этих сообщений несет в себе информацию о действии, которое было выполнено над полосой просмотра.