Распределенные приложения: контроллеры автоматизации. Часть 2. Фертиков В.В. - 30 стр.

UptoLike

Составители: 

30
фрагментов при просмотре этих файлов, поскольку они имеют поистине впе-
чатляющие размеры (более восьми с половиной мегабайт на моем компьютере)!
Необходимо понять принципы , по которым строится модуль импортиро-
ванной библиотеки, тогда вообще незачем будет обращаться к его исходному
тексту . В данном руководстве мы сделаем лишь первый шаг на пути изучения
этих принципов .
Прежде всего, рассмотрим файл Excel_TLB.cpp, который имеет относи-
тельно небольшой размер . Он полезен, поскольку именно он в виде коммента-
риев содержит сообщения об ошибках импорта идентификаторов библиотеки:
// Errors:
// Hint: Symbol 'Windows' renamed to 'Windoz'
// Hint: Symbol 'Application' renamed to 'ExcelApplication'
// Hint: Symbol 'Chart' renamed to 'ExcelChart'
// Hint: Symbol 'Worksheet' renamed to 'ExcelWorksheet'
// Hint: Symbol 'Workbook' renamed to 'ExcelWorkbook'
...
Далее следуют определения глобальных идентификаторов всех объектов
библиотеки типов (самой библиотеки, интерфейсов и сопряженных классов ) в
виде определений констант:
const GUID LIBID_Excel = {0x00020813, 0x0000, 0x0000,
{ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
const GUID IID_Adjustments = {0x000C0310, 0x0000, 0x0000,
{ 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
Просмотр заголовочного файла Excel_TLB.h может занять существенно
более продолжительное время. Мы сосредоточим свое внимание на тех конст-
рукциях , в которые превратились импортированные интерфейсы . Ниже приве-
ден фрагмент , поясняющий некоторые особенности процедуры импорта хоро-
шо знакомого нам дуального интерфейса _Application:
interface _Application : public IDispatch
{ . . .
__property Excel_tlb::WorkbooksPtr Workbooks =
{read = get_Workbooks};
. . .
};
. . .
template <class T /* _Application */ >
class TCOM_ApplicationT : public TComInterface<_Application>,
public TComInterfaceBase<IUnknown>
{
. . .
};
typedef TCOM_ApplicationT<_Application> TCOM_Application;
. . .
                                   30
фрагментов при просмотре этих файлов, поскольку они имеют поистине впе-
чатляющие размеры (более восьми с половиной мегабайт на моем компьютере)!
      Необходимо понять принципы, по которым строится модуль импортиро-
ванной библиотеки, тогда вообще незачем будет обращаться к его исходному
тексту. В данном руководстве мы сделаем лишь первый шаг на пути изучения
этих принципов.
      Прежде всего, рассмотрим файл Excel_TLB.cpp , который имеет относи-
тельно небольшой размер. Он полезен, поскольку именно он в виде коммента-
риев содержит сообщения об ошибках импорта идентификаторов библиотеки:
// Errors:
// Hint: Symbol 'Windows' renamed to 'Windoz'
// Hint: Symbol 'Application' renamed to 'ExcelApplication'
// Hint: Symbol 'Chart' renamed to 'ExcelChart'
// Hint: Symbol 'Worksheet' renamed to 'ExcelWorksheet'
// Hint: Symbol 'Workbook' renamed to 'ExcelWorkbook'
     ...

      Далее следуют определения глобальных идентификаторов всех объектов
библиотеки типов (самой библиотеки, интерфейсов и сопряженных классов) в
виде определений констант:
const   GUID LIBID_Excel = {0x00020813, 0x0000, 0x0000,
    {   0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };
const   GUID IID_Adjustments = {0x000C0310, 0x0000, 0x0000,
    {   0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46} };

     Просмотр заголовочного файла Excel_TLB.h может занять существенно
более продолжительное время. Мы сосредоточим свое внимание на тех конст-
рукциях, в которые превратились импортированные интерфейсы. Ниже приве-
ден фрагмент, поясняющий некоторые особенности процедуры импорта хоро-
шо знакомого нам дуального интерфейса _Application :
interface _Application : public IDispatch
{     . . .
   __property   Excel_tlb::WorkbooksPtr Workbooks =
       {read = get_Workbooks};
      . . .
};
      . . .
template 
class TCOM_ApplicationT : public TComInterface<_Application>,
     public TComInterfaceBase
{
      . . .
};
typedef TCOM_ApplicationT<_Application> TCOM_Application;
      . . .