Учебник по Visual C++ .Net


Конструируем облик страницы свойств


Вид новой вставки в блоке страниц свойств элемента ActiveX

На рисунке показано окно диалога в активном состоянии, но вам еще предстоит поработать, чтобы довести его до этого вида. Здесь очень важно не торопиться и быть внимательным. Опыт преподавания в MS Authorized Educational Center (www.Avalon.ru) подтверждает, что большая часть ошибок вносится на стадии работы с ресурсами. Визуальные редакторы расслабляют внимание, и ошибки появляются там, где вы меньше всего их ждете.

В основных чертах окно имеет тот же облик, что и окно диалога по управлению освещением сцены, разработанное ранее (в MFC проекте). Но здесь есть два новых элемента, функциональность которых ранее была спрятана в командах меню. Так как в рамках этого проекта мы не имеем меню, то нам пришлось использовать элементы управления, сосредоточенные в нижней части окна диалоговой вставки. Во-первых, не забудьте, что справа от каждого ползунка вы должны расположить элемент типа static Text, в окне которого будет отражено текущее положение движка в числовой форме.

Кнопка Выбор файла, как и ранее, позволяет пользователю открыть файловый диалог и выбрать файл с данными для нового изображения. Выпадающий список Заполнение позволяет выбрать режим изображения полигонов (GL_FILL, GL_POINT или GL_LINE), а кнопка Quads/Strip изменяет режим использования примитивов при создании поверхности. Идентификаторы элементов управления мы сведем в табл. 9.1.

Таблица 9.1. Идентификаторы элементов управления

Элемент

Идентификатор

/ Диалог



IDD_PROPDLG

Ползунок Общая в группе Освещенность

IDC_AMBIENT

Ползунок Рассеянная в группе Освещенность

IDC_DIFFUSE

Ползунок Отраженная в группе Освещенность

IDC_SPECULAR

Text справа от Общая в группе Освещенность

IDC_AMB_TEXT

Text справа от Рассеянная в группе Освещенность

IDC_DIFFUSE_TEXT

Text справа от Отраженная в группе Освещенность

IDC_SPECULAR_TEXT

Ползунок Общая в группе Материал

IDC_AMBMAT

Ползунок Рассеянная в группе Материал

IDC_DIFFMAT

Ползунок Отраженная в группе Материал

IDC.SPECMAT

Text справа от Общая в группе Материал

IDC_AMBMAT_TEXT

Text справа от Рассеянная в группе Материал

IDC_DIFFMAT_TEXT

Text справа от Отраженная в группе Материал

IDC_SPECMAT_TEXT

Ползунок Блестскость

IDC_SHINE

Ползунок Эмиссия

IDC.EMISSION

Text справа от Блестскость

IDC_SHINE_TEXT

Text справа от Эмиссия

IDC_EMISSION_TEXT

Ползунок X

IDC_XPOS

Ползунок Y

IDC.YPOS

Ползунок Z

IDC_ZPOS

Text справа от X

IDC_XPOS_TEXT

Text справа от¥

IDC_YPOS_TEXT

Text справа от Z

IDC_ZPOS_TEXT

Выпадающий список Заполнение

IDC_FILLMODE

Кнопка Quads

IDC.QUADS

Кнопка Выбор файла

IDC_FILENAME

<
Вместо кнопки Quads просится пара переключателей (radio button) Quads/Strip. Сначала я так и сделал, но потом, к сожалению, пришлось отказаться из-за сложностей введения отклика реакции или уведомления, на выбор, произведенный в группе переключателей. Они обусловлены несовершенством бета-версии Studio.Net. Если вы впервые устанавливаете группу переключателей (radio buttons), то вам следует знать, что группа Quads/Strip будет работать правильно, если числовые значения идентификаторов составляющих ее элементов следуют подряд и (только) для первого переключателя установлено свойство Group. Для второго этот флаг должен быть снят. Если вы вставляете еще одну группу, то картина должна повториться. Первый переключатель должен иметь свойство Group в положении True, а остальные (если их много) — нет.

Для того чтобы просмотреть числовые значения идентификаторов, следует поставить фокус на элемент IDD_PROPDLG в дереве ресурсов (в окне Resource View) и вызвать контекстное меню. Затем надо выбрать команду Resource Symbols. Появится диалог со списком всех идентификаторов, которые хранятся в файле resource.h. Не следует редактировать этот файл вручную.

Изменять числовые значения идентификаторов следует с большими предосторожностями, так как ошибки на этом этапе могут внести трудно распознаваемые отказы и нестабильную работу приложения. Надо сказать, что отслеживание корректности числовых значений идентификаторов всегда было слабым местом как Visual Studio, так и среды разработки Borland. Беру на себя смелость предположить, что уйма времени была затрачена разработчиками всех стран на поиск ошибок такого рода, так как сам потратил много усилий и времени пока не понял, что легче уничтожить ресурс и создать заново, чем пытаться найти новый диапазон числовых значений, который не затронет другие идентификаторы.

Если, несмотря на предостережения, вам захочется изменить числовое значение какого-либо идентификатора, то можете это сделать в окне Properties.

  • Поставьте фокус на элемент управления, идентификатор которого вас не устраивает, и перейдите в окно Properties.

  • В конец строки с идентификатором добавьте текст вида «=127», где 127 — новое значение идентификатора. Например, IDC_QUAD=127.

    Редактор ресурсов может с возмущением отвергнуть ваш выбор. Тогда ищите другой диапазон с помощью уже рассмотренного диалога Resource Symbols. Эта тактика потенциально опасна. Повторюсь и скажу, что проще удалить и создать заново весь ресурс. Однако если вы самостоятельно выработаете или узнаете о более надежной технологии, то прошу сообщить мне. В этот момент следует запустить сервер и проверить наличие элементов на новой странице свойств. Если что-то не так, надо внимательно проверить, а возможно, и повторить все шаги создания вкладки.


    Содержание раздела