Использование IConnectionPointImplMT
От: Kirill.CP  
Дата: 18.11.04 13:58
Оценка:
При замене IConnectionPointImpl на IConnectionPointImplMT компилятор выдает ошибки

error C2352: 'ATL::CComDynamicUnkArray::GetUnknown' : illegal call of non-static member function
error C2352: 'ATL::CComDynamicUnkArray::GetCookie' : illegal call of non-static member function

Все делаю по инструкции Microsoft Q280512.

У меня VS.NET 2003 & WindowsXP

Помогите разобраться.
Re: Использование IConnectionPointImplMT
От: shrek  
Дата: 18.11.04 14:25
Оценка:
Здравствуйте, Kirill.CP, Вы писали:

KC>При замене IConnectionPointImpl на IConnectionPointImplMT компилятор выдает ошибки


KC>error C2352: 'ATL::CComDynamicUnkArray::GetUnknown' : illegal call of non-static member function

KC>error C2352: 'ATL::CComDynamicUnkArray::GetCookie' : illegal call of non-static member function
KC>

KC>Все делаю по инструкции Microsoft Q280512.

KC>У меня VS.NET 2003 & WindowsXP


KC>Помогите разобраться.


у меня было нечто похожее — исправлял руками прямо в коде атл, в форуме где то были мои мессаги на эту тему.

если скажешь имя файла и номер строки — могу сказать более конкретно
Re[2]: Использование IConnectionPointImplMT
От: Kirill.CP  
Дата: 18.11.04 14:48
Оценка:
Ошибки генерят вот эти строки из ATLCPImpl.h
pend->dwCookie = _CDV::GetCookie(reinterpret_cast<IUnknown **>(pDWCookie));
DWORD dwGITCookie = (DWORD)_CDV::GetUnknown(dwCookie);

Если отбросит все typedef то _CDV это CComDynamicUnkArray. Неужели в Майкрософте не знали, что вызов нестатических методов приведет к ошибке? Или я что-то пропустил в жизни
Re[3]: Использование IConnectionPointImplMT
От: shrek  
Дата: 18.11.04 14:59
Оценка:
Здравствуйте, Kirill.CP, Вы писали:

KC>Ошибки генерят вот эти строки из ATLCPImpl.h

KC>
pend->>dwCookie = _CDV::GetCookie(reinterpret_cast<IUnknown **>(pDWCookie));
KC>DWORD dwGITCookie = (DWORD)_CDV::GetUnknown(dwCookie);
KC>

KC>Если отбросит все typedef то _CDV это CComDynamicUnkArray. Неужели в Майкрософте не знали, что вызов нестатических методов приведет к ошибке? Или я что-то пропустил в жизни


в каком каталоге этот файл — -я его найти не могу
Re[3]: Использование IConnectionPointImplMT
От: shrek  
Дата: 18.11.04 15:05
Оценка:
Здравствуйте, Kirill.CP, Вы писали:

KC>Ошибки генерят вот эти строки из ATLCPImpl.h

KC>
pend->>dwCookie = _CDV::GetCookie(reinterpret_cast<IUnknown **>(pDWCookie));
KC>DWORD dwGITCookie = (DWORD)_CDV::GetUnknown(dwCookie);
KC>

KC>Если отбросит все typedef то _CDV это CComDynamicUnkArray. Неужели в Майкрософте не знали, что вызов нестатических методов приведет к ошибке? Или я что-то пропустил в жизни



Нашёл. Там файл надо подключать не ATLCPImpl.h

а ATLCPImplMT.h

!
Re[3]: Использование IConnectionPointImplMT
От: Kirill.CP  
Дата: 18.11.04 15:08
Оценка:
Да все правильно ATLCPImplMT.h
В этом файле ошибки и происходят.
Использование IConnectionPointImplMT
От: shrek  
Дата: 18.11.04 15:17
Оценка:
#Имя: FAQ.com.IConnectionPointImplMT
Здравствуйте, Kirill.CP, Вы писали:

KC>Да все правильно ATLCPImplMT.h

KC>В этом файле ошибки и происходят.

//<Nick> 17.07.2004
//    DWORD dwGITCookie = (DWORD)_CDV::GetUnknown(dwCookie);
    DWORD dwGITCookie = reinterpret_cast<DWORD>(m_vec.GetUnknown(dwCookie)); 

.......

//<Nick 17.07.2004>
//    pend->dwCookie = _CDV::GetCookie(reinterpret_cast<IUnknown **>(pDWCookie));
    pend->dwCookie = m_vec.GetCookie(reinterpret_cast<IUnknown **>(pDWCookie));
Re[5]: Использование IConnectionPointImplMT
От: Kirill.CP  
Дата: 18.11.04 15:26
Оценка:
Здравствуйте, shrek, Вы писали:

S>Здравствуйте, Kirill.CP, Вы писали:


KC>>Да все правильно ATLCPImplMT.h

KC>>В этом файле ошибки и происходят.


S>

S>//<Nick> 17.07.2004
S>//    DWORD dwGITCookie = (DWORD)_CDV::GetUnknown(dwCookie);
S>    DWORD dwGITCookie = reinterpret_cast<DWORD>(m_vec.GetUnknown(dwCookie)); 

S>.......

S>//<Nick 17.07.2004>
S>//                pend->dwCookie = _CDV::GetCookie(reinterpret_cast<IUnknown **>(pDWCookie));
                pend->>dwCookie = m_vec.GetCookie(reinterpret_cast<IUnknown **>(pDWCookie));
S>


Спасибо. Так собралось.
Однако все же за Microsoft обидно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.