juice |
Отправлено: 04.07.2005, 17:27 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 33
|
Есть такой код:
CODE |
Variant oApp, oNs1;
oApp = CreateOleObject("outlook.application");
oNs1 = oApp.OleFunction("GetNameSpace", "MAPI");
IConnectionPointContainer * oContain = dynamic_cast [b]IConnectionPointContainer* [/b]( oNs1.OlePropertyGet("SyncObjects").OleFunction("Item",1) ); // Вот тут ошибка, что мол каст невозможен
|
Но как преобразовать вариант в IConnectionPointContainer* ? Мне дальше по ходу программы нужно работать с Item именно как с IConnectionPointContainer.
Отредактировано Gedeon — 04/07/2005, 17:38 |
|
olegenty |
Отправлено: 05.07.2005, 07:53 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
сначала вынь то, что находится в Variant. это либо IDispatch, либо IUnknown. потом, в зависимости от того, ЧТО ТАМ, получи указатель на нуждый тебе интерфейс. если там IUnknown, то посредством QueryInterface, если IDispatch — то его средствами.
а dynamic_cast тут близко не стоит, Variant и IConnectionPointContainer никакими родственными связями не опутаны.
|
|
juice |
Отправлено: 05.07.2005, 08:55 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 33
|
Угу, так оно и было |
|
|