Извините, если этот вопрос не имеет большого смысла. Я пытаюсь сделать Hello World Shell Extension Handler. Я следующие this учебник.Какой аргумент должен DllGetClassObject для конструктора его обработчика расширения оболочки?
В нем говорится, что обработчики расширения оболочки должны реализовывать интерфейс IUnknown и фабрику классов, которые я сделал.
class TestInterfaceImplementation : public IUnknown, public IClassFactory
ULONG STDMETHODCALLTYPE AddRef()
RESULT STDMETHODCALLTYPE QueryInterface(IN REFIID riid, OUT void **ppvObject)
ULONG STDMETHODCALLTYPE Release()
HRESULT STDMETHODCALLTYPE CreateInstance(IN IUnknown *pUnkOuter, IN REFIID riid, OUT void **ppvObject)
HRESULT STDMETHODCALLTYPE LockServer(IN BOOL fLock)
Но это все, что он говорит. Когда я перехожу к реализации DllGetClassObject, он говорит, что я предоставляю неправильный аргумент конструктору моего расширения оболочки.
HRESULT __stdcall DllGetClassObject(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID *ppv) {
TestInterfaceImplementation *tii = new TestInterfaceImplementation(rclsid);
}
Точная ошибка:
error C2664: 'TestInterfaceImplementation::TestInterfaceImplementation(const TestInterfaceImplementation &)' : cannot convert parameter 1 from 'const IID' to 'const TestInterfaceImplementation &'
Но нигде в учебнике (первой ссылке, которую я разместил) это что у вас есть (или как) переопределить конструктор, так что я потерял.
Here - это мой полный код до этого момента.
Во-первых, это не расширение оболочки, так как не использовать интерфейс оболочки. Во-вторых, где объявлен конструктор? – Xearinox