16,472
社区成员
发帖
与我相关
我的任务
分享
class ATL_NO_VTABLE CFTProp :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CFTProp, &CLSID_FTProp>,
// public IFTProp
public IShellExtInit,
public IShellPropSheetExt
{
public:
CFTProp()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_FTPROP)
DECLARE_NOT_AGGREGATABLE(CFTProp)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CFTProp)
// COM_INTERFACE_ENTRY(IFTProp)
COM_INTERFACE_ENTRY(IShellExtInit)
COM_INTERFACE_ENTRY(IShellPropSheetExt)
END_COM_MAP()
// IFTProp
public:
// IShellExtInit
STDMETHODIMP Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
// IShellPropSheetExt
STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE, LPARAM);
STDMETHODIMP ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM) { return E_NOTIMPL; }
};
class ATL_NO_VTABLE CFTComment :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CFTComment, &CLSID_FTComment>,
// public IFTComment
public IShellExtInit, // 使用Shell接口的初始化;
public IContextMenu // 使用Shell中菜单接口;
{
public:
CFTComment()
{
}
DECLARE_REGISTRY_RESOURCEID(IDR_FTCOMMENT)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CFTComment)
// COM_INTERFACE_ENTRY(IFTComment)
COM_INTERFACE_ENTRY(IShellExtInit) // IShellExtInit接口映射;
COM_INTERFACE_ENTRY(IContextMenu) // IContextMenu接口映射;
END_COM_MAP()
// IFTComment
public:
STDMETHOD(Initialize)(LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDataObj, HKEY hkeyProgID); // 接口初始化方法;
STDMETHOD(QueryContextMenu)(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
STDMETHOD(GetCommandString)(UINT idCmd, UINT uFlags, UINT *pwReserved, LPSTR pszName, UINT cchMax);
STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO pici);
};
import "oaidl.idl";
import "ocidl.idl";
[
object,
uuid(DB456395-46F3-47AE-8887-E76B1D4648C0),
helpstring("IFTComment Interface"),
pointer_default(unique)
]
interface IFTComment : IUnknown
{
};
[
object,
uuid(D22F5D40-1DDD-48BA-A760-EE8F85F3AEF1),
helpstring("IFTProp Interface"),
pointer_default(unique)
]
interface IFTProp : IUnknown
{
};
[
uuid(F6EAED7B-24B7-4BB6-9F26-5A9C918F4E2E),
version(1.0),
helpstring("FTManager 1.0 Type Library")
]
library FTMANAGERLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
[
uuid(FFA53628-0D3B-43D5-AF64-1E1656B7EE24),
helpstring("FTComment Class")
]
coclass FTComment
{
[default] interface IFTComment;
};
[
uuid(BA056691-6D35-4666-A255-3C79CC110C61),
helpstring("FTProp Class")
]
coclass FTProp
{
[default] interface IFTProp;
};
};