В окне диалога также следует разместить одиночный переключатель Высота вкл/выкл с идентификатором IDC_RADI03, который будет менять состояние поля задания высоты текстовой области. Если переключатель не включен, то ввод данных в поле будет невозможен. У этого переключателя в редакторе ресурсов был сброшен флаг Auto, поэтому при щелчке по переключателю в диалоговое окно посылается от него сообщение WM_COMMAND, но отметка на переключателе автоматически не устанавливается. Путем обработки этого сообщения необходимо организовать изменение состояния переключателя при помощи функции CheckDlgBut-ton( ). Менять статус поля Edit можно при помощи функции EnableWindow( ).

Чтобы изменения в группе переключателей не влияли на состояние IDC_RADI03, у этого органа управления взведен флаг Group, указывающий, что данный элемент представляет собой отдельную группу из одного переключателя. Возможно, из-за того что IDC_RADI03 является единственным элементом в группе, ему нельзя устанавливать флаг Auto.

Создание диалоговых окон является рутинной работой, но общие принципы реализации диалогов позволяют ускорить и упростить этот процесс. Для каждого элемента диалога можно объявить переменную, определяющую его состояние, после чего объявить функцию SaveParam(void) для сохранения значений этих переменных при вызове диалога и функцию RestoreParam(void) для восстановления изначальных значений. В проекте RadioButton для отображения данных в диалоговом окне объявлены следующие переменные:

int iHeight Высота текстовой части рабочей области int 1 Радиус колеса

bool bObod Признак рисования обода и ступицы bool bHeight Признак активности поля «Высота» Для временного сохранения исходных значений объявлены дополнительные переменные

int LocjHeight, int LocJ. bool Loc_bObod. bool Loc_bHeight.

Кроме того, вводятся функции, позволяющие обеспечить постоянное соответствие значений этих переменных и их отображения в полях диалогового окна. Функция Updatelmage(HWND) отображает значения переменных в диалоговом окне, а функция UpdateData(HWND) записывает данные из полей диалога в переменные.


⇐ Предыдущая| |Следующая ⇒