В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Образец: MFCAxs.exe реализация сервера Active сценариев, с помощью MFC

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:168214
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.
Аннотация
MFCAxs.exe приведен пример, содержащий MfcAxscrVb. MfcAxscrVb — учебные примеры использования активных сценариев узел написано с помощью MFC. Размещается VBScript DLL; механизмы активных сценариев, общий механизм все активные сценарии. MfcAxscrVb показывает только один из возможных способов предоставить диспетчера объектов из узла, для реализации интерфейсов активных сценариев в основном приложении и для подключения сообщения окон в узле с событиями для обработчика сценариев.

MfcAxscrVb включает файл рабочей области и проекта Visual C++ 5.0. Несмотря на то, что VC ++ 4.2 совместимый файл makefile или mdpfile не указан, исходный код для MfcAxscrVb совместим с MFC 4.2b.

Необходимые условия: COM, автоматизация
Дополнительная информация
Указанный ниже файл можно загрузить с веб-сайта Центра загрузки Майкрософт::
Дополнительные сведения о загрузке файлов поддержки Майкрософт см. в следующей статье базы знаний Майкрософт::
119591Как загрузить файлы поддержки Microsoft из Интернета
Корпорация Microsoft проверила этот файл на наличие вирусов.. Корпорация Майкрософт использует последние версии антивирусного программного обеспечения, имеющиеся на момент публикации файла.. Файл хранится на защищенных серверах, что предотвращает его несанкционированное изменение..

Выполнение примера

При выполнении примера MfcAxscrVb можно заметить ввода в верхнем левом углу приложения. Можно вставить или тип сценария, в это окно и выберите команду "выполнить сценарий" кнопку, чтобы вызвать сценарий.Несколько сценариев тестирования предоставляются для вас в файлах Script.txt и Testevents.txt.

Предоставление доступа на узел: отправить объектов

Главное фокусирование, для этого образца является реализацией диспетчера объектов с помощью MFC. Причина этого проста. Язык сценариев, не больше использовать, если что-либо внести в сценарий.

Основные технологии, от которых зависит всех активных сценариев является большинство определенно автоматизации. Прежде чем любого узла активные сценарии кода сплошной практические знания автоматизации является абсолютно необходимым.Существует несколько хороших ссылок для автоматизации: главы 14 и 15 Brockshmidt "внутри OLE, «Глава 11-Глеб Rogerson «внутри COM» и «Справочник программиста OLE Automation».

CCmdTargetPlus:

Что нужно — это некоторые объекты, которые позволяют вносить в сценарий свойств и методов происходит через IDispatch, но также генерировать события с помощью сценариев. MFC определенно выполняет большую часть работы grunt при реализации интерфейсов диспетчеризации для COM-объекта. Однако только класс MFC, который поддерживает и диспетчерские интерфейсы, входящих и исходящих интерфейсов диспетчеризации или приемников событий, является COleControl. COleControl является слишком сильно громоздкие для необходимой. Просто нужно событий, интерфейс диспетчеризации и введите сведения. VBScript, необходимо прочитать сведения о типе для обработки объектов, которые поддерживают события.Можно либо создать это на лету, или создать статический тип библиотеки для обработки объектов главного приложения и получить ITypeInfo для каждого отдельного объекта.

Хотя вряд ли необходимо MfcAxscrVb имеет базовый класс с именем CCmdTargetPlus, который поддерживает следующие три части: отправка интерфейса, точки подключения с помощью сопоставления событий стиля элемента управления и доступного типа данных через интерфейс IProvideClassInfo. Большая часть кода в CmdTargetPlus была добавлена возможность для сопоставления событий, который делает добавление событий в производных классов, гораздо проще.

Объекты диспетчера:

Все объекты, предоставленное узлом диспетчеризации реализуются с помощью CCmdTargetPlus.Их нужно хорошо работать на несколько моментов. Ссылаться на какие-либо объекты диспетчеризации (CAButtonDispatch, CBButtonDispatch и т. д.) для стандартного на то, что является необходимым. Краткое описание на объектной модели MfcAxscrvb перечислены в конце этого документа.

При добавлении собственных объектов, убедитесь, что для трех уникальных идентификаторов GUID для отправки основного и основные события и интерфейсы и clsid для объекта в сумме, проверьте еще раз. Это необходимо сделать в файл реализации и в файле .odl. (Копирование и вставка помогает здесь). Вырезать и вставить все макросы мастер класса и затем измените имя нового класса. Мастер классов является весьма определенным, но при выполнении всего лишь непосредственно в .odl, .cpp и .h файлов, его можно использовать для добавления нового события, свойства и методы для отправки вашего объекта, как если бы он был MFC OLE управления. Это, менее удобно.

MfcAxscrVb сохраняет реализации механизмов диспетчеризации, отдельно от объекта MFC, что фактически ссылается на объект. Например диалоговое окно имеет кнопки с названием «AButton, «что из сценариев. Объект кнопки MFC — CButton. Класс производный от CCmdTargetPlus, CAButtonDispatch, является отдельных и различных. Это ключевой момент. Только что узла программист явно выбирает для предоставления базовых объектов MFC и элементы управления Windows будет вносить в сценарий.

CEventsButton CEventsEdit, CeventsListBox:

Для событий должен существовать определенный код, который реагирует на Windows события — например, нажатие кнопки — и создается событие для обработчика сценария.(Помните, что событие является диспетчеризации Invoke на интерфейсе, обрабатываемых точки соединения в объекте узла.) Этот пример выполняет это путем добавления стандартных обработчиков сообщений MFC в объекты, производные от различных классов. Каждый из этих обработчиков просто должен вызывать FireEvent (предоставлено код, добавленный к CCmdTargetPlus) для обработки объекта. Все остальное происходит автоматически.

За отдельно в этом примере объект обработки и к самому объекту окна MFC родительском диалоговом окне, необходимо явным образом соединения двух вместе. Это делается в конструкторе Mfcaxscrvbdlg.

Именованные элементы

После отправки объектов, необходимо настроить их так, чтобы обработчик сценария знает о них. Коллекции все объекты с именем диспетчеризации, известных обработчика сценария, называется "Namespace сценарий". Элементы добавляются в пространство имен сценария посредством метода IActiveScript::AddNamedItem. Как упоминалось ранее, это по пошлинам с узла для реализации объекта IDispatch и поддержка типа данных через ITypeInfo для объекта. Если обработчик сценария необходимо, чтобы разрешить ссылку на именованный элемент, метод IActiveScriptSite::GetItemInfo используется для запроса указатель IUnknown (который его запрашивает главным образом IDispatch) и указатель ITypeInfo.

Не все, что основное приложение хочет быть вносить в сценарий должен быть именованный элемент.Обычно узел будет иметь иерархию объектов, где какие доступны через объект верхнего уровня. Общие метафоры является применение-> документов-> элемент иерархии, где объект документа доступен объект верхнего уровня приложения как свойство IDispatch самого объекта приложения. Таким же образом сам объект Document представляет несколько подобъекты и каждый является элемент, можно получить через массив элементов или других contrivance.

При выборе этой схемы, обработчик сценариев является использование интеллектуальных для перехода к sub-item, когда код сценария, — говорит следующее без необходимости документ или элемент добавлен в пространство имен сценария:
Set Obj = Application.Document.Item(1)				
До тех пор, пока какие предоставляются как get свойства их родительскому объекту, обработчик сценария находит их успешно. Интересно обработчик сценария может "предположить" элемент верхнего уровня в иерархии.Это означает, что если приложение объявляется как элемент верхнего уровня, затем достаточно сказать, что следующий код предыдущего сценария:
Set Obj = Document.Item(1)				
Именно это как Internet Explorer 3.0 позволяет выполнять код сценария в контексте объекта Window не всегда префикса все ссылки на объекты с «Окно». Сервер сценариев, необходимо определить элемент верхнего уровня сценария в вызове AddNamedItems с помощью флага SCRIPTITEM_GLOBALMEMBERS. То, что обычно не выполненные снимите документации активных сценариев, тем не менее, только с именем элементов можно поддерживать события. С помощью приведенного выше примера, не существует синтаксиса сказать, что следующие действия для обработки событий, в какой-либо элемент:
   Sub Application.Document.Item(1)_OnEvent ' this doesn't work!				
Таким образом MfcAxscrvbdlg, так как нам нужно иметь возможность обрабатывать события каждого объекта в иерархии, каждый объект добавляется как именованный элемент. Каждый объект доступен также через профессионала объект верхнего уровня (диалоговое окно самого себя), которая в настоящее время не поддерживает события.

Элемент управления WebBrowser.

В этом примере сервер сценариев предоставляет только один внешний объект к пространству имен для сценариев. Это элемент управления WebBrowser, размещенных в диалоговом окне Поддержка контейнеров MFC по умолчанию элемента управления. Все, что требуется AddRef и отправки указателя на элемент управления и используется для установки. Для событий необходимо предоставлять указатель ITypeInfo каким-либо образом внешний объект. MfcAxscrVb получает это IProvideClassInfo::GetClassInfo. В качестве последнего средства узла может прочитать объект типа данных для предоставления ITypeInfo.К счастью элемент управления WebBrowser поддерживает GetClassInfo, что это не MfcAxscrVb.

Если требуется добавить другие объекты автоматизации внешнего пространства имен, обычно не требуется только для получения помощи CoCreateInstance интерфейса IUnknown. Кроме того узел поддерживает универсального средства для получения внешних объектов, хотя, нет необходимости иметь обработки событий. В Visual Basic CreateObject вызывается функция, чтобы сделать это.

В других приложениях: HostCreateObject

Отличный набор свойств, используемых для отображения всех дочерних объектов на основной объект профессионала (диалоговое окно самим классом) предоставляет только один специальный метод. Этот метод показывает, означает, что простой для имитации VB функции CreateObject. Обратите внимание на то, что метод с именем HostCreateObject, чтобы подчеркнуть, что этот метод не предоставляется бесплатно обработчиком сценария, но узел должен реализовывать его самого. Некоторые хосты четко не потребуется обеспечить эту возможность в целях безопасности, IE3 приведен простой пример. Основной целью HostCreateObject является возвращают указатель диспетчеризации запрошенного объекта. После того как обработчик сценариев содержит указатель диспетчеризации, он знает что делать с него.

Примечание.: Как версии 2.0 обработчики VBScript и JScript теперь поддерживают CreateObject как встроенную функцию. Узел не обязательно для реализации этой функции. Эта функция тем не менее, проверить объект, чтобы убедиться, что это безопасный для сценариев, прежде чем разрешить объект, который будет использоваться. Объекты кажутся сами безопасный для сценариев, поддерживающих интерфейс IObjectSafety или пометка записей реестра соответствующей категории компонентов для безопасный для сценариев. Обратитесь к Microsoft Knowledge Base для получения дополнительных сведений.

Поддержка мастера классов

Последний немного trickery в MfcAxscrVb является обработку, сделанные для поддержки ClassWizard. Мастер классов, технически не «чистое». Он просто mentally вызывается. Это очень удобно то, что он делает, но следует помнить его вслепую только поиск файлов, поиск этих специальных ClassWizard комментарии. Если формат для COleControl, вы может только о немедленно получить с помощью автоматизации и события ClassWizard вкладки.

Одним сложным моментом является то, что MfcAxscrVb использует наследования в части иерархии объектов. Все кнопки объекты являются производными от общих CButtonDispatch объект, который предоставляет свойства и методы, которые он будет отдельно поддерживает. Тем не менее когда речь идет о времени заполнения его .odl, каждого отдельного объекта должен содержать все свойства и методы класса-родителя. Нечего и говорить, что это будет перепутать мастер классов, когда речь идет о времени для нумерации идентификаторов DISPID. Если используется мастер классов, убедитесь, что еще раз проверьте DISPID, созданные в двух местах: в файле .odl класс автоматизации и перечисления внутри определения класса. При работе с помощью кнопки для производных классов, удобно для просмотра одного и того же идентификатора DISPID, назначенных для нескольких свойств и методов. Гораздо проще для исправления идентификаторы DispId, тем не менее, чем добавлять все с нуля, поэтому функциональные возможности оставлено в MfcAxscrVb.

С помощью Visual C++ 5.0 Улучшенная поддержка языка IDL Описывает методы и свойства с помощью ClassView это выбрасывать до ClassWizard, необходим или нет. Но MfcAxscrVb его сейчас. Оцените возможности.

Приложение а объектной модели

Профессионала.

Это основной объект, из которого наследуются все остальные объекты. Он является "IMfcaxscrvbDlg" в файле .odl, но добавляется в качестве именованного элемента «Профессионала». Он содержит один метод HostCreateObject, описанному выше.

Кнопка объекты:

AButton BButton, RunScript CancelButton OKButton,

Свойства
  • Caption: Текст из поверхность кнопки.
методов:Нажмите клавишу: Работает, как если бы было помещено кнопки.
  • Нажмите клавишу: Работает, как если бы было помещено кнопки.
События
  • OnClick: Запускаемый при передаче кнопки.
  • OnMouseOver: Запускаемый при наведении указателя мыши на кнопку.
  • Запускаемый OnFocus(bSet): При наличии фокуса или из кнопки.
BroCon:

BroCon представляет собой имя элемента управления WebBrowser, в диалоговом окне. Он поддерживает все свойства и методы, как описано в пакете SDK SDK/ActiveX обозревателя клиента для элемента управления WebBrowser.

EditCon:

методов:
  • AppendLine(strToAdd): Добавление strToAdd до конца окна редактирования текста.
  • InsertLine (strToAdd, nWhere): Добавление strToAdd на #nWhere строки.
  • RemoveLine(nWhere): Удаление # nWhere строки в окне редактирования.
События
  • OnMouseOver: Запускаемый при наведении указателя мыши на окно.
  • OnChar(strChar):, Запускаемый при strChar знак, введенный в окно.
  • Запускаемый OnFocus(bSet): При наличии фокуса или из кнопки.
Lbox:

методов:
  • AddString(strIn): Добавление строк в поле со списком.
  • ClearList: Очистить все строки из списка.
  • RemoveString(strRemove): Удаляет первый экземпляр StrRemove и удаляет его из списка.
  • SelectString(strSelect): Выбор strSelect строки.
События
  • OnMouseOver: Запускаемый при наведении указателя мыши на окно.
  • Запускаемый OnFocus(bSet): При наличии фокуса или из кнопки.
  • OnSelCancel(strCancelled): Если выделение отменяется в strCancelled элемент списка поля.
  • OnSelChange(strChange): При strChange элемент списка поле выбран пользователем.

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 168214 — последний просмотр: 11/14/2010 08:49:00 — редакция: 2.0

Microsoft Foundation Class Library 4.2

  • kbdownload kbfile kbinfo kbsample kbmt KB168214 KbMtru
Отзывы и предложения