Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том2)" -> 143

Visual С++ 6. Полное руководство: В 2 т.(том2) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том2) — Бином, 2006. — 530 c.
Скачать (прямая ссылка): vicualcc2006t2.djvu
Предыдущая << 1 .. 137 138 139 140 141 142 < 143 > 144 145 146 147 148 149 .. 173 >> Следующая

Добавление специального кода приложения-сервера
Следующим шагом после генерации мастером AppWizard основных файлов текста программы для OLE-сервера будет добавление специального кода приложения-сервера. Программа ServDemo предназначена для создания простых рисунков, содержащих сегменты прямых линий. Рисунок может создаваться как обычный документ, редактируемый в автономном режиме, и как внедренный компонент, реактируемый в программе контейнера. Чтобы добавить в программу средства рисования, выполните те же модификации и добавьте тот же код, который добавлялся в программу MiniDraw в гл. 10, 11 и 12. Для этого выполните действия, перечисленные в этих главах, учитывая следующее.
• Замените соответствующие имена классов и файлов. Например, вместо модификации класса документа CMiniDrawDoc в файле MiniDrawDoc.h измените класс документа CServDemoDoc в файле ServDemoDoc.h.
• Несколько элементов меню File в гл. 10 были удалены, а в гл. 12 были добавлены. Для экономии времени оставьте их как есть. Кроме того, в гл. 10 удалялось меню Edit, измененная версия которого затем была добавлена в гл. 11. Можете оставить неизмененную версию меню Edit, созданную ранее гл. 11.
• При желании, можно пропустить настройку значка программы (см. гл. 10).
• Чтобы задать стандартное расширение файла (см. гл. 12), не нужно изменять строковый ресурс I dr_MAIN FRAME. Стандартное расширение уже задано при генерации программы ServDemo в мастере AppWizard.
• В функцию Initinstance не нужно добавлять текст, описанный в гл. 12. Мастер AppWizard уже добавил вызовы функций DragAcceptFiles, EnableShellOpen и RegisterShellFileTypes.
Конечно, можно сэкономить время, копируя текст программы из исходных файлов MiniDraw в файлы ServDemo.
Добавление OLE-поддержки
Теперь, когда средства рисования программы ServDemo реализованы, добавим в программу несколько компонентов для поддержки OLE.
Измените два специальных меню OLE. Сначала в редакторе меню Visual С++ откройте меню idr_srvr_embedded. Это меню отображается при выполнении программы ServDemo как сервера OLE в открытом режиме. Обратите внимание, что команды меню File (рис. 24.2) отличаются от присвоенных мастером AppWizard обычному меню программы, отображаемому при ее автономном выполнении (т. е. меню idr_mainframe). Команды меню соответствуют ситуации, когда программа выполняется как сервер OLE, она не открывает и не создает новые документы (только редактирует внедренный компонент). Следовательно, обычные команды New и Open... в меню отсутствуют. Кроме того, сервер возвращает измененные данные документа в программу-контейнер, а не сохраняет документ в файле на диске. Поэтому обычная команда Save заменена командой Update, выполняющей соответствующие операции копирования. Сервер позволяет создать отдельную копию внедренного компонента в файле на диске; эта задача выполняется командой Save Copy As... меню File (программа-сервер может открыть этот документ при выполнении в автономном режиме). Заметим: при запуске сервера MFC изменяет текст заголовков команд Update и Exit для указания имени документа, содержащего внедренный компонент. Например, если такой документ, в программе-контейнере был назван House.con, то заголовок этой команды должен быть таким, как на рис. 24.3.
S SeivDemo.rc - IDR_SRVRJEMBEDDED [ЕадІ...;ЯВН
:¦: ?ite ;?dit Help і--і Update Ctrl+S Save Copy As... Exit
і j

Рис. 24.2. Отображение редактором меню Visual С++ меню File в меню idr_srvr_embedded программы ServDemo
Update Но
Save Copy As
Eat і Return to House con
Рис. 24.3. Меню File в меню idrsrvrembedded на этапе выполнения программой ServDemo редактирования внедренного компонента, содержащегося в документе House.con
Изменять меню File вам не нужно, однако меню Edit необходимо сделать таким же, как в меню idr_mainframe программы в режиме автономного выполнения. Для этого удалите всплывающее меню idr_srvr_ embedded. Затем, удерживая нажатой клавишу Ctrl, перетащите меню Edit из строки меню idr_mainframe и отпустите его на строку меню idr_srvr_embedded (рис. 24.4).
S Seivuemo.ic - IDR_SRVR_EMBEDDED [Engl... MBB
Еве.: Et» :-мф і"—) Jir*tJo_ CW+2 ¦: betete At

Рис. 24.4. Измененное меню Edit в меню idr_srvr_embedded программы ServDemo
Затем откройте меню i dr_srvr_ in place в редакторе меню, как показано на рис. 24.5. Это меню отображается программой ServDemo при редактировании на месте внедренного компонента OLE и не имеет всплывающего меню File, поскольку при редактировании внедренного компонента "на месте" за выполнение команд отвечает программа-контейнер, отображающая собственное меню File. При редактировании на месте система объединяет меню сервера и контейнера, чтобы обе программы отображали соответствующие всплывающие меню. Результирующее объединенное меню содержит следующие всплывающие меню, размещенные в порядке слева направо.
• Все всплывающие меню в меню контейнера для редактирования на месте, расположенные перед двойным разделителем (в контейнере ContDemo имеется единственное всплывающее меню File).
Предыдущая << 1 .. 137 138 139 140 141 142 < 143 > 144 145 146 147 148 149 .. 173 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100