{RECT R.D; //Следующие три строки переносят диалоговое окно точно под //основное окно
GetWindowRect(GetNextwindow(hDlg. GW_0WNER),&R); GetwindowRect(hDlg.&D):
MoveWi ndow(hDlg.R.1eft.R.bottom.D.ri ght-D.1eft.D.bottom-D.top.TRUE);
SetFocus(GetDlgItem(hDlg.IDCANCEL)):
}
return FALSE; case WM_C0MMAND:
switch(L0W0RD(wParam))
{char s[80];
BOOL Res;
case IDOK:
GetDlgltemText(hDlg.RADIUS . s. strlen(s)-l): if(strlen(s)>0) sscanf(s." Sd".&l); //Если поле пустое, то радиус не изменится.
iHeight - GetDlgltemlntChDlg.HEIGHT.&Res.FALSE);
продолжение
Элементы управления в диалоговых окнах
Листинг 8.3 {продолжение)
//Если поле пустое, получим ноль. Надо отличать пустое поле от поля, //в котором ввели нулевую высоту. DestroyWindow(hDlg): return TRUE;} case IDCANCEL:DestroyWindow(hDlg); return TRUE; }
break;
}
return FALSE: //Обработка сообщений по умолчанию. }
Полные тексты модулей можно найти в проекте EditToWheel.
Применение переключателей В этом разделе следует добавить в проект возможность рисования ступицы и обода колеса. Для настройки параметров рисования потребуется добавить два переключателя - ЮСМШЛО! и ШС_г}А0Ю2, показанные на рис. 8.2 внизу.
Рис. 8.2. Применение переключателей Кнопки Рисовать ступицу и Не рисовать ступицу с идентификаторами IDC_RADI01, IDC_RADI02 объединены в группу. Только один из элементов группы может находиться в активном состоянии. Обычно это подчеркивают, помещая селекторы одной группы внутри рамки, которая реализуется при помощи элемента GroupBox. Но деление селекторов на группы задается все же не рамкой, а флагом Group. Начиная с элемента, отмеченного этим флагом, все следующие элементы без флага Group считаются принадлежащими группе. Очередной элемент с флагом Применение переключателей
Group начинает новую группу. Если в свойствах кнопок группы установлен флаг Auto, то перенос отметки производится системой без участия операторов приложения. При щелчке на одном из переключателей у него устанавливается соответствующая отметка, а с остальных элементов она автоматически снимается. Для управления рисунком достаточно функцией IsDl gButtonCheckedC ) прочитать в момент щелчка по кнопке ID0K состояние одного из переключателей.