Здравствуйте, Аноним, Вы писали:
А>Это исправил, но опять вернулась А>
А>Error 1 error C2259: 'ATL::CComObject<Base>' : cannot instantiate abstract class c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlcom.h 1787
А>
А>Может какой файл надо присоединить?
Ничего не нужно присоединять. Скорее всего не совпадают параметры в методе класса и описании интерфейса. Там точно стоит "const GUID*".
Добавление интерфейса
От:
Аноним
Дата:
18.10.05 11:34
Оценка:
Я делаю ATL проек (не атрибутированный), добавляе Simple Object:
class ATL_NO_VTABLE CMyIePlag :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CMyIePlag, &CLSID_MyIePlag>,
public IObjectWithSiteImpl<CMyIePlag>,
public IDispatchImpl<IMyIePlag, &IID_IMyIePlag, &LIBID_IEELib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
Мне надо добавить интерфейс IOleCommandTarget, в книжке написанно что достаточно добавить его в наследуемые и в карту — я это делаю:
class ATL_NO_VTABLE CMyIePlag :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CMyIePlag, &CLSID_MyIePlag>,
public IObjectWithSiteImpl<CMyIePlag>,
public IDispatchImpl<IMyIePlag, &IID_IMyIePlag, &LIBID_IEELib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IOleCommandTarget
{
public:
CMyIePlag()
{
}
Но после этого сразу выдается ошибка Error 1 error C2259: 'ATL::CComObject<Base>' : cannot instantiate abstract class c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlcom.h 1787
И еще сразу вопрос (тупить так до конца) — если я хочу переопределить метод к примеру Release() — как его нужно объявить?
Здравствуйте, Аноним, Вы писали:
А>Я делаю ATL проек (не атрибутированный), добавляе Simple Object: А>Мне надо добавить интерфейс IOleCommandTarget, в книжке написанно что достаточно добавить его в наследуемые и в карту — я это делаю: А>Но после этого сразу выдается ошибка Error 1 error C2259: 'ATL::CComObject<Base>' : cannot instantiate abstract class c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlcom.h 1787
Раз вы объявили, что ваш объект релизует интерфейс IOleCommandTarget, то нужно добавить и реализацию методов этого интерфейса, а именно QueryStatus() и Exec().
А>И еще сразу вопрос (тупить так до конца) — если я хочу переопределить метод к примеру Release() — как его нужно объявить?
Что значит переопределить, и чей это метод Release (не IUnknown)?
Re[2]: Добавление интерфейса
От:
Аноним
Дата:
18.10.05 11:59
Оценка:
Здравствуйте, algol, Вы писали:
A>Здравствуйте, Аноним, Вы писали:
A>Раз вы объявили, что ваш объект релизует интерфейс IOleCommandTarget, то нужно добавить и реализацию методов этого интерфейса, а именно QueryStatus() и Exec().
Посмотрев MSDN по этой ошибки я так и решил — вот что наваял:
в .h файле
Error 1 error C2509: 'QueryInterface' : member function not declared in 'IMyIePlag' u:\мои документы\visual studio 2005\projects\iee\iee\myieplag.cpp 10
Error 2 error C2039: 'Exec' : is not a member of 'IMyIePlag' u:\мои документы\visual studio 2005\projects\iee\iee\myieplag.cpp 16
A>Что значит переопределить, и чей это метод Release (не IUnknown)?
Именно его я имел ввиду, но как бы в общем — если ответите на первый вопрос, как я понимаю, решиться и этот.
Заранее спасибо.
Здравствуйте, Аноним, Вы писали:
А>Теперь он выдает: А>
А>Error 1 error C2509: 'QueryInterface' : member function not declared in 'IMyIePlag' u:\мои документы\visual studio 2005\projects\iee\iee\myieplag.cpp 10
А>Error 2 error C2039: 'Exec' : is not a member of 'IMyIePlag' u:\мои документы\visual studio 2005\projects\iee\iee\myieplag.cpp 16
А>
1. При чем здесь QueryInterface? Нужно определить QueryStatus.
2. Наверное ошибка из-за несовпадения параметров метода — в h. GUID*, а в .cpp const GUID*.
Re[4]: Добавление интерфейса
От:
Аноним
Дата:
18.10.05 12:41
Оценка:
Здравствуйте, algol, Вы писали:
A>1. При чем здесь QueryInterface? Нужно определить QueryStatus. A>2. Наверное ошибка из-за несовпадения параметров метода — в h. GUID*, а в .cpp const GUID*.
Да, я — баран
Это исправил, но опять вернулась
Error 1 error C2259: 'ATL::CComObject<Base>' : cannot instantiate abstract class c:\program files\microsoft visual studio 8\vc\atlmfc\include\atlcom.h 1787