Здравствуйте, Vi2, Вы писали:
Vi2>Если #import обнаруживает dispinterface (редкость, согласен), то формируется вызов через Invoke, т.е. осуществляя позднее связывание:
Vi2>Vi2> VARIANT _result;
Vi2> _com_dispatch_method(this, 0x225, DISPATCH_METHOD, VT_VARIANT, (void*)&_result, L"\x080c", &Index);
Vi2> return _variant_t(_result, false);
Vi2>
Колоссально! Глазам своим не верю, пришлось проверять:
#include "stdafx.h"
#import "libid:5D0CE84A-D909-11CF-91FC-00A0C903976F" no_namespace //должно работать везде
int _tmain(int argc, _TCHAR* argv[])
{
::CoInitialize(NULL);
IObjectOnePtr o1(__uuidof(ObjectOne));
_bstr_t sH = o1->SayHello(); // вот это - позднее связывание
return 0;
}
Коли так, то это — исчерпывающий ответ на первоначальный вопрос. Я, правда, не нашел как заставить импорт обернуть дуальный интерфейс по диспатчному, но, некоторым хаком тлб это должно делаться.
А почему это у ИТ в статье про импорт не написано?
GS>Коли так, то это — исчерпывающий ответ на первоначальный вопрос. Я, правда, не нашел как заставить импорт обернуть дуальный интерфейс по диспатчному, но, некоторым хаком тлб это должно делаться.
Cудя по всему — через атрибут no_dual_interfaces.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, Versus-13, Вы писали:
V1>Через это вопрос: Можно ли на VC++ получать доступ к свойствам и методам объекта через точку.
Еще вариант: создаем active script, погружаем туда нужные объекты, формируем VB (Java) скрипт и работаем через "точку"