Диалог по управлению светом
Реакция на команду обновления пользовательского интерфейса при этом может быть такой:
void COGView::OnUpdateEditProperties(CCmdUI *pCmdUI) { pCmdUI › SetCheck (m_pDlg!= 0); }
Второй вариант потребует меньше усилий:
void COGView::OnEditProperties (void) { m_pDlg = new CPropDlg(this); m_pDlg › Create(IDD_PROP); }
Но при этом необходима другая реакция на команду обновления интерфейса:
void COGView::OnUpdateEditProperties(CCmdUI *pCmdUI) { pCmdUI › Enable(m_pDlg == 0); }
Выберите и реализуйте один из вариантов.
Панель управления
Завершая разработку приложения, вставьте в панель управления четыре кнопки.
Для команд ID_EDIT_BACKGROUND, ID_EDIT_PROPERTIES, ID_VIEW_FILL и ID_VIEW_QUAD. Заодно уберите из нее неиспользуемые нами кнопки с идентификаторами ID_FILE_NEW, ID_FILE_OPEN, ID_FILE_SAVE, ID_FILE_PRINT, ID__EDIT_CUT, ID_EDIT_COPY, ID_EDIT_PASTE.
Запустите приложение, включите диалог Edit › Properties и попробуйте управлять регуляторами параметров света. Отметьте, что далеко не все из них отчетливым образом изменяют облик поверхности. Нажмите кнопку Data File, при этом должен открыться файловый диалог, но мы не сможем открыть никакого другого файла, кроме того, что был создан по умолчанию. Он имеет имя "Sin.dat" и должен находиться (и быть виден) в папке проекта.
В качестве упражнения создайте какой-либо другой файл с данными, отражающими какую-либо поверхность в трехмерном пространстве. Вы можете воспользоваться для этой цели функцией DefaultGraphic, немного модифицировав ее код. На рис. 7.5 и 7.6 приведены поверхности, полученные таким способом. Вы можете видеть эффект, вносимый различными настройками параметров освещения.
Рис. 7.5. Вид поверхности, освещенной слева