Re[2]: проблема с shell extension
От: dkotlyarov Россия  
Дата: 25.07.05 14:42
Оценка:
КД>
КД>class CShellExt : public IShellExtInit, public IContextMenu
КД>//...
КД>STDMETHODIMP CShellExt::QueryInterface(REFIID riid, void** ppv)
КД>{
КД> *ppv = 0;

КД> if (riid == IID_IUnknown || riid == IID_IShellExtInit || riid == IID_IContextMenu)
КД> {
КД>  *ppv = this;
 
КД>  AddRef();
КД>  return(S_OK);
КД> }

КД> return (E_NOINTERFACE);
КД>}
КД>


КД>Очень странная реализация QueryInterface. Как минимум для IID_IContextMenu нужно было использовать

КД>
КД>*ppv=static_cast<IContextMenu*>(this);
КД>


Спасибо, часть проблем решилась с внесением данной поправки.
Однако я не совсем понял, почему в данном случае необходимо применять static_cast, ведь мы возвращаем указатель на класс через void*, и, таким образом, не должно происходить сужение типа...

И еще, почему

Как минимум для IID_IContextMenu нужно было использовать...

Это не относится в той же мере и к IID_IShellExtInit?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.