Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
В этой статье представлена процедура реализации контейнера и даны ссылки на другие статьи, где более подробно объясняется этот процесс. В нем также перечислены некоторые необязательные функции OLE, которые могут потребоваться реализовать, и статьи, описывающие эти функции.
Подготовка класса, производного от CWinApp
Инициализировать библиотеки OLE путем вызова
AfxOleInitв члене функцииInitInstance.Вызов
CDocTemplate::SetContainerInfoвInitInstanceдля назначения ресурсов меню и акселераторов, используемых при активации встроенного элемента на месте. Дополнительные сведения по этой теме см. в разделе "Активация".
Эти функции предоставляются автоматически при использовании мастера приложений MFC для создания приложения контейнера. См. статью "Создание программы MFC EXE".
Чтобы подготовить ваш класс представления
Отслеживайте выбранные элементы, сохраняя указатель на выбранные элементы или список указателей, если поддерживается множественный выбор. Функция
OnDrawдолжна нарисовать все элементы OLE.Переопределите
IsSelected, чтобы проверить, выбран ли элемент в данный момент.OnInsertObjectРеализуйте обработчик сообщений для отображения диалогового окна "Вставка объекта".OnSetFocusРеализуйте обработчик сообщений для передачи фокуса из представления в активный внедренный элемент OLE на месте.OnSizeРеализуйте обработчик сообщений для информирования внедренного элемента OLE о том, что он должен изменить прямоугольник, чтобы отразить изменение размера содержащего его представления.
Так как реализация этих функций значительно отличается от одного приложения к следующему, мастер приложений предоставляет только базовую реализацию. Скорее всего, вам придется настроить эти функции, чтобы приложение было правильно функционировать. Пример этого см. в примере контейнера .
Для обработки внедренных и связанных элементов
Создайте класс на основе COleClientItem. Объекты этого класса представляют элементы, внедренные или связанные с документом OLE.
Переопредели
OnChange,OnChangeItemPositionиOnGetItemPosition. Эти функции обрабатывают изменение размера, позиционирования и изменения внедренных и связанных элементов.
Мастер приложений создаст класс для вас, но, скорее всего, потребуется переопределить OnChange и другие функции, перечисленные с ним на шаге 2 в предыдущей процедуре. Реализация скелета должна быть настроена для большинства приложений, так как эти функции реализуются по-разному от одного приложения к следующему. Примеры этого см. в примерах MFC DRAWCLI и CONTAINER.
Для поддержки OLE необходимо добавить ряд элементов в структуру меню приложения контейнера. Для получения дополнительной информации об этих вопросах см. Меню и ресурсы: Добавления контейнеров.
Вы также можете поддержать некоторые из следующих функций в приложении контейнера:
Локальная активация при редактировании встроенного элемента.
Дополнительные сведения см. в разделе "Активация".
Создание OLE-элементов путём перетаскивания выделенного элемента из серверного приложения.
Дополнительные сведения см. в разделе "Перетаскивание OLE".
Ссылки на внедренные объекты или сочетания приложений контейнера или сервера.
Дополнительные сведения см. в разделе "Контейнеры: дополнительные функции".