C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 96 - Что делает директива Import? / ActiveX по шагам / Приложение

Шаг 96 - Что делает директива Import?

Директиву Import можно использоваться и без проекта на VC++. Просто саму в результате в папке Debug она сформирует THL файл. Он текстовый файл и в нем будут описания классов и интерфейсов.

// Created by Microsoft (R) C/C++ Compiler Version 12.00.8168.0 (80e16df7).
//
.....
ICTestDll : IDispatch
{
    //
    // Wrapper methods for error-handling
    //

    HRESULT MessageMi ( );

    //
    // Raw methods provided by interface
    //

    virtual HRESULT __stdcall raw_MessageMi ( ) = 0;
};
.....................

Посмотрев его Вы сможете изучить какие там есть методы. Второй файл будет иметь расширение TLI в котором будет реализация классов.

// interface ICTestDll wrapper method implementations
//
...........
inline HRESULT ICTestDll::MessageMi ( ) {
    HRESULT _hr = raw_MessageMi();
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _hr;
}
...........

Так вот название классов и интерфейсов, название пространства имен берется именно из этого файла который компилятор генерирует автоматически. Как видите классы объектов COM просто оборачивают IDispatch. Из этих файлов видно, что используется заголовочный файл #include "comdef.h" соответсвенно в этом заголовочном классе находятся все шаблоны и мактросы.

_COM_SMARTPTR_TYPEDEF(ICTestDll, __uuidof(ICTestDll));

описан там же который создает указатель на COM объект.


| |
Автор Каев Артем.
[AD]