Шаг 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 объект.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 24.08.2001