Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > _com_ptr_t пример использования


Автор: nerdy_weirdie 5.11.2010, 23:42
Решил попробовать использовать std для работы с комом. И обнаружил что в сети напрочь нету реальных рабочих примеров кода.
Делаю всё как описано в мсдне http://msdn.microsoft.com/en-us/library/h3t4kcat%28v=VS.80%29.aspx
Код
_com_ptr_t<IHTMLElement> pElem(pDisp);

Но что-то темплейт не кушает этот интерфейс
Код
Error    2    error C2039: 'Interface' : is not a member of 'IHTMLElement'    c:\program files\microsoft visual studio 8\vc\include\comip.h    66

 smile 

Автор: Alexeis 6.11.2010, 00:37
Header: comip.h

Lib: comsuppw.lib or comsuppwd.lib (see /Zc:wchar_t (wchar_t Is Native Type) for more information)

подключено?

Автор: Alexeis 6.11.2010, 01:16
Я у себя использую 
#include <atlbase.h>
CComPtr<>

Автор: alexvs11 6.11.2010, 01:18
Цитата(Alexeis @  6.11.2010,  01:16 Найти цитируемый пост)
CComPtr<>

так да, всю жизнь его используют
_com_ptr_t небось какой-нибудь внутренний объект

Автор: nerdy_weirdie 6.11.2010, 13:46
Alexis, ошибка происходит при генерации класса по темплейту, до линковки. Проект не должен использовать ATL, потому и разбираюсь с STL.
alexvs11, объект вовсе не внутренний, обычный STL.

Автор: Alexeis 6.11.2010, 14:16
Цитата(nerdy_weirdie @  6.11.2010,  14:46 Найти цитируемый пост)
Проект не должен использовать ATL, потому и разбираюсь с STL.

  Это не ATL как таковой. Не требует ни каких либ. Это чисто заголовочный файл с шаблоном. К атл он мало что имеет, скорее вспомогательный.

Автор: jonie 6.11.2010, 19:20
сдается мне надо писать так:
Код

_com_ptr_t< _com_IIID<IHTMLElement, __uuidof(IHTMLElement)> > pElem = pDisp;
или использовать макрос _COM_SMARTPTR_TYPEDEF

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)