Поделиться через


Образец ACTIVEDOC: реализация сервера активных документов

Обновлен: Ноябрь 2007

В образце ACTIVEDOC показано, как реализовать сервер активных документов. В образце демонстрируются следующие возможности.

  • Реализация интерфейсов IOleDocument и IOleDocumentView.

  • Выполнение слияния меню с контейнером.

  • Реализация панели инструментов в объекте.

  • Переопределение методов Load и Save интерфейса IPersistStreamInit для выполнения нестандартных операций сохранения и загрузки.

  • Использование класса CDialogImpl для реализации диалогового окна "О программе".

  • Создание подкласса для элемента управления "Поле ввода" с расширенными функциями.

dssbex6h.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

Этот образец кода служит для демонстрации основных принципов и не предназначен для использования в приложениях или на веб-узлах, поскольку не может считаться примером наиболее безопасного кода. Корпорация Майкрософт не несет ответственности за случайные или косвенные убытки в случае использования образца кода не по назначению.

Чтобы получить образцы и инструкции по их установке, выполните следующие действия.

  • В меню Справка среды Visual Studio выберите пункт Примеры.

    Дополнительные сведения см. в разделе Поиск файлов примеров.

  • Самая последняя версия и полный список образцов доступны в Интернете на странице образцов Visual Studio 2008.

  • Кроме того, образцы находятся на жестком диске компьютера. По умолчанию образцы кода и файл Readme копируются в папку, находящуюся в папке \Program Files\Visual Studio 9.0\Samples\. Все образцы кода для экспресс-выпусков Visual Studio находятся в Интернете.

Построение и запуск образца

Построение образца

  1. Откройте решение ActiveDoc.sln.

  2. В меню Построение выберите команду Построить решение.

Запуск образца в Internet Explorer

  1. Откройте файл ActiveDoc.htm или созданный файл ActiveDoc.AAA в обозревателе Internet Explorer (чтобы открыть файл ActiveDoc.AAA, нажмите кнопку Open, когда будет предложено открыть этот файл).

  2. Измените цвет введенного текста с помощью меню Format, которое будет добавлено в строку меню Internet Explorer, или путем нажатия цветных кнопок в панели инструментов.

Запуск образца в Microsoft Office Binder

  1. Запустите Microsoft Office Binder и в меню Раздел выберите команду Добавить.

  2. Выберите значок с подписью "Класс ActiveDoc" и нажмите кнопку ОК.

    Будет показан объект, внедренный в Office Binder. Заметьте, что выполнено слияние меню и показывается панель инструментов ActiveDoc. Можно ввести текст, а затем с помощью меню и кнопок панели инструментов изменить его цвет.

Образцы файлов

В этот образец входят следующие главные файлы:

  • ActiveCtl.h

  • ActiveCtl.cpp — реализует класс CActiveDoc, который представляет общий объект ActiveDoc.

  • OleDocument.h — содержит реализацию интерфейсов IOleDocument и IOleDocumentView.

  • Toolbar.h — содержит класс CToolbar, который участвует в реализации панели инструментов.

Ключевые слова

В этом образце используются следующие ключевые слова:

ActiveXDocActivate; ALT_MSG_MAP; ATLASSERT; ATLTRACE; BEGIN_COM_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; BEGIN_PROPERTY_MAP; BEGIN_TOOLBAR_MAP; CAboutDlg::DoModal; CanInPlaceActivate; CComCoClass; CComControl; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; CComObjectRootEx::InternalQueryInterface; CComPtr; CHARFORMAT; CMenu; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; COMMAND_ID_HANDLER; COMMAND_RANGE_HANDLER; CreateMenu; CreateRTFWindow; CreateToolbar; CreateWindowEx; CToolbar; CWindow::DestroyWindow; CWindow::ModifyStyle; CWindow::SetFocus; CWindow::SetParent; CWindow::SetWindowPos; DECLARE_REGISTRY_RESOURCEID; DestroyMenu; DestroyToolbar; DisableThreadLibraryCalls; DllMain; DoesVerbUIActivate; EDITSTREAM::dwCookie; EDITSTREAM::dwError; EDITSTREAM::pfnCallback; Ellipse; END_COM_MAP; END_MSG_MAP; END_OBJECT_MAP; END_PROPERTY_MAP; END_TOOLBAR_MAP; EndDialog; ExtTextOut; FreeLibrary; GetMenuItemCount; GetMenuItemID; GetMenuState; GetMenuString; GetResourceInstance; GetStockObject; GetSubMenu; GetTextMetrics; GetWindow; GetWindowContext; GetWindowRect; HDC; hdcDraw;; IDataObjectImpl; IDispatchImpl; InitCommonControls; InlineIsEqualGUID; InPlaceDeactivate; InPlaceMenuCreate; InPlaceMenuDestroy; InsertMenu; InterfaceSupportsErrorInfo; InternalQueryInterface; IOleControlImpl; IOleDocument::GetDocMiscStatus; IOleDocumentImpl; IOleDocumentView::ApplyViewState; IOleDocumentView::SetInPlaceSite; IOleDocumentViewImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceFrame*   pFrame;; IOleInPlaceFrame::InsertMenus; IOleInPlaceFrame::Release; IOleInPlaceFrame::SetMenu; IOleInPlaceObjectWindowlessImpl; IOLEInPlaceSite::GetWindowContext; IOleObjectImpl; IPersistStorageImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IQuickActivateImpl; ISupportErrorImpl; IViewObjectExImpl; LoadLibrary; LoadMenu; LoadString; MAKEINTRESOURCE; MergeMenus; MESSAGE_HANDLER; NOTIFY_CODE_HANDLER; OBJECT_ENTRY; OleCreateMenuDescriptor; OLEINPLACEFRAMEINFO; OnInPlaceActivate; OnUIActivate; prcBounds; RECT rcPos, rcClip;; RemoveMenu; SelectObject; SendMessage; SetActiveObject; SetBkMode; SetBorderSpace; SetControlFocus; SetFocus; SetInPlaceSite; SetMenu; SetObjectRects; SetTextColor; ShowObject; ShowWindow; UIActivate; UIDeactivate; UnmergeMenus; ZeroMemory

См. также

Другие ресурсы

Образцы ATL