Ресурсы
шаблона документов
Если мы не
поленимся и создадим для второго шаблона документов все остальные перечисленные
выше ресурсы, то приложение действительно будет вести себя в соответствии с
концепцией MDI, так как она трактуется компанией Microsoft. Это означает, что
приложение будет следить за типом активного документа и автоматически изменять
связанные с ним ресурсы (значок и меню). К сожалению, автоматическая смена панели
инструментов все-таки потребует некоторых усилий. Имя текущего документа совпадает
с именем файла, в котором он хранится, но если документ еще не был сохранен,
то его имя генерируется автоматически и также зависит от выбранного шаблона.
Перейдите в окно Resource View и откройте в дереве ресурсов узел Icon. Вы видите
индексы двух значков, которые сгенерированы мастером AppWi zard и служат для
идентификации приложения (IDR_MA IN FRAME) и его документов (IDR_TreeTYPE).
При желании вы можете отредактировать изображения, открыв их в окне редактора
или, что проще, заменив их на другие. Техника замены проста: открыть готовое
изображение в рамках Studio.Net (их много по адресу ..\Microsoft Visual Studio.Net
\ Common7\ Graphics\icons), скопировать в буфер, открыть существующий значок,
нажать Delete и Ctrl+V. He забывайте, что на самом деле имеется 4 значка (2
маленьких и 2 больших). Переход между изображениями значков разных размеров
производится в диалоге, вызываемом командой Image > Open > Image >
Туре. Команда доступна, когда курсор стоит в окне редактора изображений. Теперь
опишем, как добавить еще один значок.
- Вызовите контекстное
меню на узле дерева IDR_TreeTYPE и дайте команду Insert Copy.
- В окне диалога измените
язык ресурса на любой другой, нажмите ОК, переведите курсор на новый узел
дерева ресурсов и перейдите в окно Properties.
- Измените идентификатор
на IDR_DrawTYPE и верните язык. К сожалению, в моей версии изменения происходят
только после того, как будет дана команда Save.
- Замените новые изображения,
большое и маленькое, на какие-то другие.
Откройте в
окне редактора меню IDR_TreeTYPE. Удалите из меню File команды Print, Print
Preview, Print Setup и один разделитель (Separator). Повторите действия по копированию
ресурсов и сделайте копию всего меню IDR_TreeTYPE. Поменяйте идентификатор копии
на IDR_DrawTYPE. Откройте копию меню в окне редактора и уберите из него команду
View > Split и добавьте View > Documents с идентификатором ID_VIEW_TOGGLE.
В пункт меню Edit добавьте две новые команды: New Poly и Poly Color. ... Вновь
откройте меню IDR_TreeTYPE, удалите в нем весь пункт меню Edit, добавьте команды
View > Geometry с идентификатором ID_VIEW_TOGGLE и View > Refresh
с идентификатором ID_VIEW_REFRESH. Команда ID_VIEW_70GGLE будет служить для
переключения между двумя окнами CTreeFrame и CDrawFrame, содержащими три представления
одного и того же документа.
В том и другом
из рассматриваемых меню измените команду Window > Tile на Window > Tile
Horizontally и добавьте новую команду Window > Tile Vertically, выбрав из
выпадающего списка идентификатор ID_WINDOW_TILE_VERT. Обработчики этих команд
уже существуют в каркасе приложения, поэтому нам не нужно их создавать.
Откройте инструментальную
панель (Toolbar) IDR_MAINFRAME. Удалите из нее кнопки вырезания, копирования,
вставки и печати. Используя технику копирования, добавьте две новые инструментальные
панели: IDR_TreeTYPE и IDR_DrawTYPE. В последнюю вставьте две новые кнопки,
соответствующие двум командам меню: New Poly и Poly Color.. .. Добавьте два
новых курсора, которые будут использованы в разные моменты жизни приложения.
Один будет загружаться автоматически при попадании фокуса в окна демонстрации
содержимого документов (типа CWndGeom). Другой будет использован в режиме визуального
редактирования данных документа.
- Вызовите контекстное
меню в окне Resource View и дайте команду Add Resource.
- В списке диалога выберите
Cursor и нажмите кнопку New.
- Задайте идентификатор
IDC_MYHAND и скопируйте изображение курсора H_POINT.CDR из папки Cursors студии.
- Повторите эти действия
для создания курсора IDC_MOVE с изображением, скопированным из файла 4WAY02.CUR.
Если вы вместо
IDC_MYHAND зададите IDC_HAND, то компилятор многократно сообщит о переопределении
стандартного курсора с таким индексом. Внесите еще одно изменение, связанное
с ресурсами. Так как мы сами будем перезагружать инструментальные панели, то
надо упростить доступ к ним. В файле MainFrm.h перенесите следующие два объявления
из секции protected в секцию public:
public:
CToolBar
m_wndToolBar;
CStatusBar
m_wndStatusBar;