Главная » C++, C++ Builder » Обзор файлов, сгенерированных для элементов ActiveX CBuilder

0

Когда вы используете обычный компонент VCL, вы включаете заголовочный файл  этого компонента. Исходный код для такого компонента живет в файле на языке Pascal (этого файла у вас может и не быть, все зависит от того, покупали ли вы исходные тексты VCL с вашей версией CBuilder). В любом случае, файл библиотеки содержит объектный файл для исходного кода на Pascal. Каким же образом CBuilder работает с управляющими элементами ActiveX как с обычными компонентами, когда они сделаны в другой системе и, скорее всего, у вас нет для них исходного кода?

Ответ в обложке, которая создается для управляющего элемента ActiveX. CBuilder умеет использовать ActiveX; просто он не умеет напрямую создавать управляющие элементы ActiveX (на самом деле умеет, как и любой компилятор C++; главное, CBuilder  не  содержит  удобных средств для работы с ActiveX). Так как же CBuilder работает с таким элементом? Помните, установщик компонента сгенерировал файл SHDOCVW.PAS? Этот файл содержит «оберточный» класс, содержащий управляющий элемент. Вот фрагмент этого файла:

procedure  TWebBrowser.GoBack; const DispInfo : array[0..7] of Byte = ($64,$00,$00,$00,$00,$01,$00,$00);

begin InvokeMethod(DispInfo, nil); end;

procedure  TWebBrowser.GoForward; const DispInfo : array[0..7] of Byte = ($65,$00,$00,$00,$00,$01,$00,$00);

begin

InvokeMethod(DispInfo, nil); end;

procedure  TWebBrowser.GoHome; const DispInfo : array[0..7] of Byte = ($66,$00,$00,$00,$00,$01,$00,$00);

begin InvokeMethod(DispInfo, nil); end;

Вызов InvokeMethod, который вы видите в этих функциях на Pascal, является основной функцией класса OLECtrl, который является базовым для класса TWebBrowser. Все эти функции просто строят массив  данных, который нужно передать методу (более низкого уровня) управляющего элемента ActiveX, а затем косвенно его (метод) вызывают. Выполняется все это через более низкоуровневый интерфейс OLE (IDispInterface), встроенный в управляющие элементы ActiveX.

Источник: Теллес М. – Borland C++ Builder. Библиотека программиста – 1998

По теме:

  • Комментарии