Ладно, забить на игру слов... Просто я под интерфейсом понимал другое, чем MSDN-овцы.
Суть-то в том, что VTable общая у всех экземпляров одного класса. А как обзывать указатели на указатели на неё - личное дело каждого.
ANDLL писал(а):2tyomitch: Ты не понял. VBA-проект использует VB-DLL. Каким образом он сможет обращаться к членам класса. Или же VB-EXE использует VB-DLL. Тот же вопрос. Он же не может определить, на каком языке написана DLL
ANDLL писал(а):Гм. Темыч, стандарт COM не предусматривает открытых переменных без get/put.
GSerg писал(а):Наверное, как Object which impements COM Interface
tyomitch писал(а):ANDLL писал(а):Гм. Темыч, стандарт COM не предусматривает открытых переменных без get/put.
Неужели? А к чему тогда относится ITypeInfo::GetVarDesc
Чесслово, ты в PSDK хоть заглянул, прежде чем отвечать? Я же тебе конкретный метод назвал...
Public A as string
Public B as string
Public sub C()
end sub
[
odl,
uuid(664BF320-AA9D-421D-A367-8D23C7BA1F8F),
version(1.0),
hidden,
dual,
nonextensible,
oleautomation
]
interface _Class1 : IDispatch {
[id(0x40030000), propget]
HRESULT A([out, retval] BSTR* A);
[id(0x40030000), propput]
HRESULT A([in] BSTR A);
[id(0x40030001), propget]
HRESULT B([out, retval] BSTR* B);
[id(0x40030001), propput]
HRESULT B([in] BSTR B);
[id(0x60030000)]
HRESULT C();
};
ANDLL писал(а):2tyomitch: Посмотрел, но есть подозрение, что это чисто информационная функция.
ANDLL писал(а):ты думаешь, что если программа, скажем на Cpp создаст экземпляр этого класса и попросит узнгать значение переменной A, то она завалится? Ведь если у этого метода нет реализации, то именно так и должно произойти.
tyomitch писал(а):А что здесь такое "object"?
tyomitch писал(а):"class is the blueprint for an object". Меня не покидает ощущение, что нас принимают за телепузиков... Блин, какие чертежи внутри компа?
GSerg писал(а):tyomitch писал(а):А что здесь такое "object"?
Конкретно здесь должно быть что-то вроде "Сущность, инкапсулирующая в себе..."
_Class1* cls;
CLSID cls_id,int_id;
CoInitialize(0);
UuidFromStringW(L"FE4E036B-716A-4639-A9EF-9E1C4E7C54DF",&cls_id);
UuidFromStringW(L"664BF320-AA9D-421D-A367-8D23C7BA1F8F",&int_id);
CoCreateInstance(cls_id,0,CLSCTX_INPROC_SERVER,int_id,(void**)&cls);
if(!cls)
throw 10;
cls->A=SysAllocString(L"AAA");
BSTR a=cls->A;
cls->Release();
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 112