Re: Как подключиться к событиям на С++ без АТL / MFC
От: Алекс Россия http://wise-orm.com
Дата: 28.08.02 06:09
Оценка: 2 (1)
Здравствуйте Jack, Вы писали:

J>Как подключиться к событиям СOM-объекта на С++ без ATL??

J>Как это сделать используя только compiler support? (т.е. #import, _com_ptr_t)
J>Делаю импоирт, получяю ДВА класса: _DObj и _DObjEvents.
J>С первым все ясно.
J>Как использовать второй? (Только C++, без ATL или MFC).

IConnectionPointContainer* pCPC = NULL;
IConnectionPoint* pCP = NULL;
IUnknown* pUnk = NULL;
_DObjEvents* ev = NULL;
DWORD dwCook = 0;

//запрашиваем IConnectionPointContainer
hr = m_DObj->QueryInterface(__uuidof(IConnectionPointContainer),(void**)&pCPC);
if (FAILED(hr)){...};

//находим точку соединения
hr = pCPC->FindConnectionPoint(__uuidof(__uuidof(_DObjEvents)), &pCP);

//освобождаем IConnectionPointContainer
pCPC->Release();
if (FAILED(hr)){...};

//Создаем объект
ev = new _DObjEvents;

//запрашиваем его IUnknown
hr = ev->QueryInterface(__uuidof(IUnknown), (void**) &pUnk);
if (FAILED(hr)){...};

//сообщаем серваку что мы готовы
hr = pCP->Advise(pUnk,&dwCook);

//освобождаем точку соединения
pCP->Release();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.