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