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


Образец IPDRIVE: демонстрация клиентского приложения автоматизации

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

Образец IPDRIVE представляет простое клиентское приложение автоматизации (ранее называвшейся OLE-автоматизацией), которое управляет образцом приложения INPROC. Он проверяет возможности, предоставляемые внутрипроцессным сервером автоматизации INPROC. Образец IPDRIVE может управлять и внутрипроцессной версией, и внепроцессной или локальной версией сервера INPROC, демонстрируя преимущества внутрипроцессных компонентов в производительности. Дополнительные сведения см. в образце INPROC.

xw260f0s.alert_note(ru-ru,VS.90).gifПримечание.

Перед запуском IPDRIVE необходимо запустить образец приложения INPROC, чтобы оно зарегистрировалось в реестре.

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

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

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

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

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

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

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

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

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

  1. Выполните инструкции по запуску, построению и регистрации образца INPROC.

  2. Откройте решение ipdrive.sln.

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

  4. Запустите IPDRIVE в виде изолированного приложения, чтобы оно зарегистрировалось в системе.

    Во время запуска образца IPDRIVE он загружает образец INPROC и создает объект схемы вариантов, с которым можно работать через интерфейс IPDRIVE.

Объект схемы вариантов во многом аналогичен коллекции MFC CMap. Он используется для сопоставления одного произвольного значения с другим произвольным значением. Каждое значение имеет тип VARIANT, который состоит из типа и значения. Пользовательский интерфейс IPDRIVE позволяет получать доступ и к типу, и к значению. Любая пара "тип-значение" может быть сопоставлена с любой другой парой "тип-значение".

В приложении IPDRIVE также находятся две кнопки: Test1 и Test2, с помощью которых можно проверить производительность серверного приложения INPROC. Эти функции главным образом проверяют затраты на вызов функций автоматизации. Ожидаемые затраты на вызов функций для версий INPROC с локальным сервером заметно превышают затраты для внутрипроцессных версий INPROC. Локальный сервер работает в собственном адресном пространстве в виде отдельного выполняемого объекта. Поэтому для доступа к методам и свойствам его объектов необходим удаленный вызов процедур (RPC). С другой стороны, внутрипроцессный сервер загружает библиотеку DLL в адресное пространство клиента, и для него не нужен RPC. Кнопки Test1 и Test2 запускают выполнение ровно на пять секунд, а затем показывают количество выполненных вызовов. Чем больше количество вызовов, тем выше производительность.

Образец INPROC также содержит простую коллекцию (строковый массив), с которой не работает приложение IPDRIVE.

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

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

AfxMessageBox; AfxOleInit; AfxThrowUserException; CArchive::IsStoring; CComboBox::GetCurSel; CComboBox::SetCurSel; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDialog::DoModal; CDocument::OnNewDocument; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CObject::AssertValid; CObject::Dump; CObject::Serialize; COleDispatchDriver::GetProperty; COleDispatchDriver::InvokeHelper; COleDispatchDriver::SetProperty; CScrollView::ResizeParentToFit; CStatusBar::Create; CStatusBar::SetIndicators; CString::AllocSysString; CString::Format; CString::GetBuffer; CString::LoadString; CString::ReleaseBuffer; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::GetDocument; CView::OnInitialUpdate; CWinApp::AddDocTemplate; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::OnFileNew; CWnd::DoDataExchange; CWnd::GetDlgItem; CWnd::GetParentFrame; CWnd::GetWindowText; CWnd::OnCreate; CWnd::SetDlgItemText; CWnd::SetWindowText; DragAcceptFiles; GetKeyState; GetTickCount; max; wsprintf

xw260f0s.alert_note(ru-ru,VS.90).gifПримечание.

Некоторые образцы, включая данный, не модифицировались с учетом изменений в мастерах, библиотеках и компиляторе Visual C++, однако по-прежнему демонстрируют выполнение требуемой задачи.

См. также

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

Примеры MFC