Index: src/chext/MenuExt.h =================================================================== diff -u -N -rb26ced3298e3e7e51d91f3ac70b56746786da83b -r6609ba39811176f4803f0556db3da30e9e457b9d --- src/chext/MenuExt.h (.../MenuExt.h) (revision b26ced3298e3e7e51d91f3ac70b56746786da83b) +++ src/chext/MenuExt.h (.../MenuExt.h) (revision 6609ba39811176f4803f0556db3da30e9e457b9d) @@ -24,35 +24,26 @@ #include "../common/TShellExtMenuConfig.h" #include "TShellExtData.h" #include "../liblogger/TLogger.h" +#include "ShellExtControl.h" class TShellMenuItem; ///////////////////////////////////////////////////////////////////////////// // CMenuExt -class ATL_NO_VTABLE CMenuExt : - public CComObjectRootEx, - public CComCoClass, +class CMenuExt : public IShellExtInit, public IContextMenu3 { public: CMenuExt(); ~CMenuExt(); -DECLARE_REGISTRY_RESOURCEID(IDR_MENUEXT) -DECLARE_NOT_AGGREGATABLE(CMenuExt) - -DECLARE_PROTECT_FINAL_CONSTRUCT() - -BEGIN_COM_MAP(CMenuExt) - COM_INTERFACE_ENTRY(IShellExtInit) - COM_INTERFACE_ENTRY(IContextMenu) - COM_INTERFACE_ENTRY(IContextMenu2) - COM_INTERFACE_ENTRY(IContextMenu3) -END_COM_MAP() - // IMenuExt public: + STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *) override; + STDMETHODIMP_(ULONG) AddRef() override; + STDMETHODIMP_(ULONG) Release() override; + STDMETHOD(Initialize)(LPCITEMIDLIST pidlFolder, IDataObject* piDataObject, HKEY /*hkeyProgID*/); STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO lpici); STDMETHOD(GetCommandString)(UINT_PTR idCmd, UINT uFlags, UINT* /*pwReserved*/, LPSTR pszName, UINT cchMax); @@ -64,6 +55,7 @@ HRESULT DrawMenuItem(LPDRAWITEMSTRUCT lpdis); private: + volatile ULONG m_ulRefCnt = 0; TShellExtData m_tShellExtData; TShellExtMenuConfig m_tShellExtMenuConfig;