对不起,如果这个问题没有多大意义。我正在尝试制作一个 Hello World Shell 扩展处理程序。我一直在关注本教程。
它说 Shell Extension Handlers 必须实现 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时,它说我为我的 Shell 扩展的构造函数提供了错误的参数。
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 &'
但是在教程(我发布的第一个链接)中没有任何地方说你必须(或如何)覆盖构造函数,所以我迷路了。
到目前为止,这是我的完整代码。