Re[5]: Работа с COM-объектом через "точку"
От: Vi2 Удмуртия http://www.adem.ru
Дата: 18.05.06 08:55
Оценка: 30 (3)
Здравствуйте, Left2, Вы писали:

L>#import никак не оборачивает вызовы Invoke. Смысл выделенного непонятен. Может, ты путаешь с MFC? Её визард генерил обёртки именно так как ты рассказываешь...


Если #import обнаруживает custom или dual интерфейс, то формируется вызовы через vtable, т.е. осуществляя раннее связывание:
    BSTR _result;
    HRESULT _hr = get_Name(&_result);
    if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
    return _bstr_t(_result, false);

Если #import обнаруживает dispinterface (редкость, согласен), то формируется вызов через Invoke, т.е. осуществляя позднее связывание:
    VARIANT _result;
    _com_dispatch_method(this, 0x225, DISPATCH_METHOD, VT_VARIANT, (void*)&_result, L"\x080c", &Index);
    return _variant_t(_result, false);
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.