Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
Создание и регистрация управляющих элементов ActiveX Нет ничего более простого и, одновременно, наиболее поражающего воображение программистов со старой практикой С++, чем создание управляющих элементов ActiveX (так называемых ActiveX Controls) из современных инструментальных средств программирования, таких как Delphi или Visual Basic. Современным разработчикам вовсе нет никакой необходимости досконально понимать сложную структуру встроенных интерфейсов, порой они даже не знают, что такое интерфейс iunknown и зачем нужны функции AddRef, Release и Queryinterface. Зачем им это? Теперь все за них проделывают встроенные в современные RAD-системы "мастера" и шаблоны. Порой программисты вовсе не задумываются, какую работу проделывают за них TCP/IP и RPC, когда части приложения распределяются сразу на несколько систем при помощи "мастеров развертывания и инсталляции". Впрочем, об этом позже. Что же касается управляющих элементов ActiveX, то они являются первоосновой компонентного проектирования и программирования. Именно поэтому разработчики RAD-систем предельно облегчили работу по созданию таких строительных компонентов, из которых они и сами состоят почти на 80 процентов. Как создать и зарегистрировать на локальной, либо удаленной машине ActiveX-элемент, выполняющий некоторую полезную работу и который только при помощи буксировки с помощью мыши можно перетащить на палитру компонентов в RAD-системах или встроить в любое приложение, не исключая и Web-страницы, да так, чтобы его можно было сразу использовать? Как сделать, чтобы этот OCX-элемент мог загружаться и выполнять свою работу из браузера? Предположим, вам очень часто приходится писать Интернет-приложения, в которых на Web-странице должно появляться окно со списком всех доступных на этой машине шрифтов. Не будете же вы, в самом деле, постоянно включать функцию на каком-нибудь JavaScript в каждый HTML-файл. Гораздо легче написать управляющий ActiveX-элемент. Попробуем сделать это на Visual Basic 6. Тут даже и программировать-то ничего не нужно. Запустим VB, выберем шаблон для приложения с элементом управления ActiveX и создадим в пустой форме стандартный элемент ListBox, также с помощью специального ActiveX- компонента, находящегося на стандартной палитре компонентов Visual Basic (рис. 1.7). Рис. 1.7. Окно проекта для создания управляющих элементов ActiveX в VB 6 В свойствах ToolboxBitmap мы можем выбрать желаемую пиктограмму, в качестве которой создаваемый компонент будет присутствовать на палитрах компонентов в любой RAD-системе, в которой вы пожелаете его иметь. Далее нужно связать с этим компонентом какой-либо код. В нашем случае код должен быть самым примитивным — заполнение окошечка ListBox списком присутствующих на машине шрифтов. Программировать ничего не будем, возьмем стандартный код из примеров справочной системы VB 6 и "зальем" его в окно Modulel, который предварительно создадим по команде Project-> Add Module. Ниже приведен этот код.
'Font enumeration types Type NEWTEXTMETRIC ' ntmFlags field flags Public Const NTM_REGULAR = &H40& Public Const
Код интересен тем, что он работает с WinAPI 32 и использует его стандартные функции, что само по себе в VB очень и очень привлекательно, ибо наделяет его необыкновенной мощью при использовании стандартных библиотек Windows, таких как GDI32.DLL, USER32.DLL, но нам сейчас гораздо интереснее другое — как упаковать это в переносимый, пригодный для повторного использования и применения где угодно, даже на Web- страницах Интернета новый ActiveX-элемент? Нет ничего проще. Продолжим работу в VB 6. После того как мы "залили" код в модуль, можно закрыть окно UserControl, и вы тотчас увидите выбранную вами пиктограмму в палитре инструментов. В окне UserControll в параметре initialize добавим строку Moduiei.FiiiListwithFonts Listi. Стандартная процедура должна выглядеть так, как показано на рис. 1.8. Рис 1.8. Вызов функции модуля, реализующего функцию Windows API. Ну вот и все, можно поздравить вас — вы создали первый ActiveX-элемент. Выполнить его непосредственно из Бэйсика еще нельзя, хотя можно сохранить под любым именем (расширение .осх файлу присвоится автоматически), но пока не будем делать этого, потому что такой шаг неизбежно связан с регистрацией нового элемента в системе (о ней мы расскажем позже). Попробуем использовать созданный нами управляющий элемент ActiveX. Через меню File добавим еще один проект к уже имеющемуся (File->Add Project). Выберем для нового проекта шаблон Standard EXE. Появится пустая форма. Втащим в эту форму из палитры компонентов наш ActiveX- элемент и придадим ему необходимые размеры. Теперь, при желании, можно сохранить группу проектов под любым именем по команде меню FiIe-> Sace Project Group As, чтобы впоследствии продемонстрировать кому-нибудь ваши результаты или скорректировать проект. Хранить разрабатываемые ActiveX-элементы и формы их использующие в одной группе проектов очень удобно, потому что отпадает необходимость вручную включать их каждый раз в палитру компонентов из гигантского списка компонентов, уже зарегистрированных на вашей машине. Попробуем выполнить группу проектов по команде меню Run из среды Visual Basic. То, что вы увидите на экране, показано на рис. 1.9. Рис 1.9. Использование разработанного элемента ActiveX. Как видите, запускается браузер по умолчанию, потому что используется файл с расширением .осх. Он временно регистрируется в системе и исполняется. Разумеется, с данным списком шрифтов пока ничего нельзя сделать (только просмотреть их), но ведь это только пример! Вы можете разрабатывать для себя или с целью перепродажи куда более изощренные управляющие элементы со множеством свойств и методов, способных реагировать на различные события. Главное — это понять принципы создания таких элементов и их последующего использования. Охарактеризуем вкратце базовые понятия и ключевые объекты, из которых строятся управляющие элементы ActiveX. |
|
Библиотека программиста. 2009. |
|