Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ch-08.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
645.12 Кб
Скачать

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

Переключатели (radio buttons) похожи на флажки, но их форма не квадратная, а круглая. Жирная точка внутри кружка показывает, что переключатель помечен. Переключатель имеет стиль окна BS_RADIOBUTTON или BS_AUTORADIOBUTTON, но последний используется только в окнах диалога. В окнах диалога группы переключателей, как правило, используются для индикации нескольких взаимоисключающих опций. В отличие от флажков, если повторно щелкнуть на переключателе, его состояние не изменится.

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

SendMessage(hwndButton, BM_SETCHECK, 1, 0);

Для всех остальных переключателей этой группы можно отключить контрольную метку, послав сообщение BM_SETCHECK с параметром wParam, равным 0:

SendMessage(hwndButton, BM_SETCHECK, 0, 0);

Окна группы

Окно группы (group boxes) — стиль BS_GROUPBOX — является исключением в классе кнопок. Оно не обрабатывает ни сообщения от клавиатуры, ни сообщения от мыши, оно не посылает своему родительскому окну сообщений WM_COMMAND. Окно группы представляет собой прямоугольную рамку с текстом вверху. Окна групп часто используются для того, чтобы в них размещать другие кнопки управления.

Изменение текста кнопки

Вы можете изменить текст кнопки (или любого другого окна) с помощью вызова функции SetWindowText :

SetWindowText(hwnd, pszString);

где hwnd — это описатель окна, в котором изменяется текст, а pszString — это указатель на оканчивающуюся нулем строку. Для обычного окна этот текст — текст строки заголовка. Для кнопок управления — это текст, который выводится на экран вместе с кнопкой.

Вы также можете получить текущий текст окна:

iLength = GetWindowText (hwnd, pszBuffer, iMaxLength);

Параметр iMaxLength задает максимальное число символов для копирования в буфер, который определяется указателем pszBuffer. Возвращаемым значением функции является длина скопированной строки. Вы можете подготовить вашу программу для приема строки конкретной длины, вызвав сначала функцию:

iLength = GetWindowTextLength(hwnd);

Видимые и доступные кнопки

Для получения ввода от мыши и от клавиатуры дочернее окно должно быть одновременно видимым (отображенным на экране) и доступным (разрешенным) для ввода. Если дочернее окно является видимым, но недоступным, Windows выводит на экран текст окна не черным, а серым цветом.

Если при создании дочернего окна, вы не включили в класс окна идентификатор WS_VISIBLE, то дочернее окно не появится на экране до тех пор, пока вы не вызовете функцию ShowWindow:

ShowWindow (hwndChild, SW_SHOWNORMAL);

Если вы включили в класс окна идентификатор WS_VISIBLE, то вам нет необходимости вызывать функцию ShowWindow. Однако, с помощью вызова этой функции можно скрыть дочернее окно:

ShowWindow (hwndChild, SW_HIDE);

Определить, является ли дочернее окно видимым, можно, вызвав функцию:

IsWindowVisible (hwndChild);

Вы также можете сделать дочернее окно доступным или недоступным для ввода. По умолчанию дочернее окно доступно. Вы можете сделать его недоступным с помощью вызова функции:

EnableWindow (hwndChild, FALSE);

Для кнопок этот вызов приводит к изображению текстовой строки кнопки серым цветом. Кнопка перестает реагировать на ввод с клавиатуры и мыши. Это лучший способ продемонстрировать, что какая-то опция, соответствующая кнопке, в данный момент недоступна.

Вы можете вновь сделать дочернее окно доступным, вызвав функцию:

EnableWindow (hwndChild, TRUE);

Определить, доступно или нет дочернее окно, можно с помощью функции:

IsWindowEnabled (hwndChild);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]