ActiveX — это технология, созданная на основе модели компонентных объектов (Component
Object Model, COM). Помимо создания WFC-ком-понентов, Visual J+ + используют
и для создания и импорта ActiveX-элементов. Поскольку ActiveX строится на основе
СОМ, встраивать ActiveX в программу так же легко, как и другие СОМ-объекты.
Можно создавать элементы управления для применения в других средах разработки,
например в Microsoft Visual Basic или Microsoft Visual C++, и для расширения
возможностей HTML-страниц. Более того, можно импортировать ActiveX-элементы
сторонних поставщиков для улучшения своих WFC-приложений. Из этой главы Вы узнаете:
Создание
элементов управления ActiveX
Средствами
модели WFC-компонентов можно создать элементы управления ActiveX, которые будут
использоваться, в WFC-приложениях или в других средах разработки, поддерживающих
ActiveX. Для создания ActiveX-элемента из WFC-элемента зарегистрируйте класс
WFC-элемента в качестве класса СОМ. После этого поместите файл класса в COM
DLL и зарегистрируйте ее в реестре как ActiveX-элемент. Элемент управления,
зарегистрированный как ActiveX-элемент, доступен для ActiveX-клиента.
В данном
примере использован WFC-элемент, описанный в разделе «Создание элемента
управления» главы 1 «Создание проектов». Если он еще не создан,
то сделайте это, а затем следуйте процедурам, изложенным в этом разделе. Далее
Вы узнаете:
Примечание
Для последующих операций необходим открытый в Visual J++ проект компонента
WFC.
Определение
элемента управления WFC как СОМ-объекта
Для получения
доступа к элементу управления из других клиентов ActiveX нужно определить его
как объект СОМ. Чтобы представить класс в виде объекта СОМ, поместите перед
определением класса тэг комментария @com.register. Visual J++ позволяет автоматически
генерировать такой тэг для конструируемых Вами классов.
Примечание
Если проект элемента управления создан с использованием шаблона Control,
то он уже содержит тэг комментария для регистрации в качестве объекта СОМ.
Вам нужно только удалить две косые черты «//» в начале комментария.
Чтобы
определить компонент WFC как объект СОМ:
Visual J++
добавит поверх определения класса тэг комментария для регистрации класса в качестве
объекта СОМ.
Примечание
Если не нужно определять несколько классов в качестве СОМ, то класс
СОМ можно определить в диалоговом окне Class Properties. Для вывода этого
диалогового окна щелкните правой кнопкой мыши в Class Outline на имени класса
и выберите команду меню Class Properties. В появившемся диалоговом окне
отметьте флажок COM Class.
Размещение
элемента управления в COM DLL
После того
как элемент управления WFC определен в качестве CQM-объекта, обязательно поместите
файлы класса элемента управления в файл COM DLL. Это необходимо, чтобы элемент
был доступен как ActiveX-элемент. COM DLL предоставляет интерфейс, используемый
клиентами ActiveX для доступа к элементу управления и его компонентам.
Примечание
Для распространения ActiveX-элементов по Интернету можно разместить их в САВ-файле,
а не в COM DLL.
Чтобы
создать элемент управления как COM DLL:
Теперь на вкладке
должны быть разрешены другие элементы.
После конфигурирования
опций размещения необходимо собрать проект. Затем Visual J++ добавит в проект
библиотеку типов, где определен СОМ-интерфейс для элемента управления. Библиотека
типов также содержит информацию, которую реестр использует для регистрации СОМ-класса
в качестве элемента управления. После генерирования библиотеки типов Visual
J++ регистрирует в реестре имеющиеся в проекте СОМ-классы, используя созданный
файл библиотеки типов. Зарегистрировав классы, Visual J + + помещает файлы классов
проекта и библиотеку типов в COM DLL.
Чтобы
собрать проект:
После регистрации
WFC-классов в качестве СОМ-классов и размещения их в COM DLL нужно зарегистрировать
COM DLL в системном реестре. Для этого применяется программа Regsvr32.exe. Поскольку
библиотека типов описывает СОМ-классы в проекте как элемент управления, то Regsvr32
регистрирует COM DLL как элемент управления ActiveX. Когда COM DLL зарегистрирована,
другие приложения могут видеть Ваш WFC-элемент в списке ActiveX-элементов, имеющихся
в системе.
Чтобы
зарегистрировать COM DLL:
Если получите
сообщение, что регистрация не удалась, то проверьте правильность пути к файлу
и наличие самого файла.
Тестирование
элемента управления в среде Microsoft Visual Basic
Чтобы протестировать
элемент управления ActiveX, добавьте его в приложение или в программный инструмент,
который поддерживает ActiveX. Например, используйте для этого Microsoft Visual
Basic версии 5.0 или более поздней.
Чтобы
добавить ActiveX-элемент на основе WFC в форму Visual Basic:
Для данного примера
укажите элемент управления Projectl.
Элемент будет помещен
в центр формы. 3. Нажмите F5 для запуска проекта.
На экране
появится форма с элементом управления. Если Вы работаете с элементом управления,
который описан в разделе «Создание элемента управления» главы 1
«Создание проектов», то можете воспользоваться горизонтальной полосой
прокрутки. Текст в элементе управления будет меняться в зависимости от положения
ползунка. Информацию об импорте ActiveX-элемента в WFC-приложение см. в следующем
разделе «Импорт элементов управления ActiveX».
Импорт
элементов управления ActiveX
Элементы
управления ActiveX расширяют возможности приложений на основе WFC. Сторонние
поставщики предлагают ряд ActiveX-элементов, реализующих, например, кнопки произвольной
формы, телефонные технологии, диаграммы, графики и электронные таблицы. Visual
J + + импортирует элементы управления ActiveX, используя процесс, напоминающий
импорт СОМ-объектов.
В данном
примере Вы импортируете элемент управления Microsoft ActiveMovie, который устанавливается
вместе с Microsoft Internet Explorer версии 4.0. Вы узнаете:
Регистрация
элемента управления
Чтобы элемент
управления ActiveX был доступен в Visual J++, его нужно зарегистрировать в системном
реестре.
Примечание
В данном примере не нужно регистрировать элемент
управления ActiveMovie, так как он регистрируется при установке Internet Explorer.
Чтобы
зарегистрировать элемент управления ActiveX:
Если получите
сообщение, что регистрация не удалась, проверьте правильность пути к файлу и
наличие самого файла.
Когда импортируется
элемент управления ActiveX, Visual J + + создает в проекте каталоги пакетов
и добавляет в них классы-оболочки (class wrappers), используемые для доступа
к ActiveX-элементу в этих каталогах. Следовательно, для импорта такого элемента
нужно иметь доступный WFC-проект.
Чтобы
создать WFC-npoект:
В Project Explorer
появится свернутое изображение проекта. (Если Project Explorer не виден,
то выберите команду Project Explorer из меню View.)
В проект добавится
файл с именем по умолчанию Forml.java.
Импорт
элемента управления ActiveX
После создания
проекта в него можно импортировать элемент управления ActiveX. Для выбора ActiveX-элемента
из списка элементов, установленных в системе, используйте диалоговое окно Customize
Toolbox.
Примечание
После добавления в Toolbox ActiveX-элемента он будет видим для всех
проектов, пока его не удалят.
Чтобы
импортировать элемент управления ActiveX:
Для данного примера
укажите ActiveMovie Control Object.
Выбранные
элементы управления добавятся на Toolbox.
Добавление
элемента управления на форму
При добавлении
ActiveX-элемента на форму Visual J + + создает один или несколько пакетов в
каталоге проекта и добавляет для элемента управления классы-оболочки. Последние
используются в Visual J+ + для доступа к классам и компонентам ActiveX-элемента.
Если импортированный элемент управления находится в файле, который содержит
несколько ActiveX-элементов, то Visual J++ предоставит классы-оболочки для них
всех, но добавит в Toolbox только выбранный элемент управления.
Чтобы
добавить элемент управления ActiveX на форму:
Установка
свойств элемента управления
После добавления
на форму ActiveX-элемента задайте его свойства и создайте обработчики событий,
используя окно Properties.
Чтобы
установить свойства для элемента управления ActiveMovie:
- или —
Щелкните кнопку с
многоточием в разделе значений свойства filename, чтобы вывести диалоговое
окно для поиска файла на компьютере.
После добавления
ActiveX-элемента на форму и установки его свойств соберите проект и запустите
его для проверки функциональных возможностей.
Чтобы
собрать и запустить форму:
Если появятся какие-либо
сообщения об ошибках компиляции, исправьте ошибки и заново соберите проект.
Будет показан фильм, заданный в свойстве filename.
Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.