Здравствуйте, dkotlyarov, Вы писали:
D>Класс просто создается, а потом разрушается.
Добавь трассировку вызовов QueryInterface
D>Подскажите, пожалуйста, возможные причины. Заренее благодарен.
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);
-- Пользователи не приняли программу. Всех пришлось уничтожить. --