Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI.docx
Скачиваний:
49
Добавлен:
16.12.2018
Размер:
3.43 Mб
Скачать

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

Переключатели (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);

8.1.7 Окна группы

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

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

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

SetWindowText(hwnd, pszString);

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

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

iLength = GetWindowText(hwnd, pszBuffer, iMaxLength);

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

iLength = GetWindowTextLength(hwnd);

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

Для получения ввода от мыши и от клавиатуры дочернее окно должно быть одновременно видимым (отображенным на экране) и доступным (разрешенным) для ввода. Если дочернее окно является видимым, но недоступным, 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);

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