Меню и ресурсы. Добавление серверов
В этой статье описываются изменения, которые необходимо вносить в меню и другие ресурсы в приложении сервера визуального редактирования (компонента). Для серверного приложения требуется много добавлений в структуру меню и других ресурсов, так как его можно запустить в одном из трех режимов: автономном, внедренном или на месте. Как описано в статье "Меню и ресурсы" (OLE), существует не более четырех наборов меню. Все четыре используются для полносерверного приложения MDI, а для мини-сервера используются только три. Мастер приложений создаст макет меню, необходимый для типа нужного сервера. Может потребоваться некоторые настройки.
Если вы не используете мастер приложений, вам может потребоваться просмотреть HIERSVR. RC- скрипт ресурса для примера приложения HIERSVR MFC, чтобы узнать, как реализуются эти изменения.
В этой статье рассматриваются следующие темы:
Дополнения к меню сервера
Приложения сервера (компонента) должны добавлять ресурсы меню для поддержки визуального редактирования OLE. Меню, используемые при запуске приложения в автономном режиме, не нужно изменять, но перед созданием приложения необходимо добавить два новых ресурса меню: один для поддержки активации на месте и один для поддержки полного открытия сервера. Оба ресурса меню используются приложениями полного и минисервера.
Для поддержки активации на месте необходимо создать ресурс меню, который очень похож на ресурс меню, используемый при запуске в автономном режиме. Разница в этом меню заключается в том, что элементы файла и окна (и другие пункты меню, которые имеют дело с приложением, а не данные) отсутствуют. Приложение-контейнер будет предоставлять эти пункты меню. Дополнительные сведения и пример этого метода объединения меню см. в статье "Меню и ресурсы: слияние меню".
Чтобы поддерживать полностью открытую активацию, необходимо создать ресурс меню почти идентичен ресурсу меню, используемому при запуске в автономном режиме. Единственное изменение этого ресурса меню заключается в том, что некоторые элементы перенастроились, чтобы отразить тот факт, что сервер работает над элементом, внедренным в составной документ.
Помимо изменений, перечисленных в этой статье, файл ресурсов должен включать AFXOLESV. RC, необходимый для реализации библиотеки классов Microsoft Foundation. Этот файл находится в подкаталоге MFC\Include.
Дополнения таблиц акселератора приложений сервера
Необходимо добавить два новых ресурса таблицы акселератора в серверные приложения; Они соответствуют непосредственно новым ресурсам меню, описанным ранее. Первая таблица акселераторов используется при активации серверного приложения. Он состоит из всех записей в таблице акселератора представления, за исключением тех, которые привязаны к меню "Файл" и "Окно".
Вторая таблица почти является точной копией таблицы акселератора представления. Любые различия параллельных изменений, внесенных в полностью открытое меню, упоминание в добавлении меню сервера.
Пример изменений в таблице акселераторов можно сравнить IDR_HIERSVRTYPE_SRVR_IP и IDR_HIERSVRTYPE_SRVR_EМБ таблицы акселераторов с IDR_MAINFRAME в HIERSVR. RC-файл, включенный в пример OLE MFC HIERSVR. Акселераторы файлов и окон отсутствуют из таблицы на месте, а точные копии из них находятся в внедренной таблице.
Добавление строковых таблиц для серверных приложений
В серверном приложении требуется только одно строковое добавление таблицы — строка, которая означает, что сбой инициализации OLE. В качестве примера ниже приведена запись строковой таблицы, которую создает мастер приложений:
ИД | Строка |
---|---|
IDP_OLE_INIT_FAILED | Сбой инициализации OLE. Убедитесь, что библиотеки OLE являются правильной версией. |
Дополнения мини-сервера
Те же дополнения применяются к мини-серверам, что и перечисленные выше для полносерверных серверов. Так как мини-сервер не может выполняться в автономном режиме, его главное меню гораздо меньше. Главное меню, созданное мастером приложений, содержит только меню "Файл", содержащее только элементы exit and About. Встроенные и локальные меню и акселераторы для мини-серверов совпадают с теми, что и для полносерверных серверов.