WizKnowledge COM对象之IWizFolder

- 文件:WizKMCore.dll
IWizFolderCollection是一个IWizFolder对象的集合。
object,
uuid(6A7B925B-14C7-434B-80E9-2165CD059A79),
dual,
nonextensible,
helpstring("IWizFolderCollection Interface"),
pointer_default(unique)
]
interface IWizFolderCollection : IDispatch{
//生成一个新的IEnumXXXX类型的接口,可以在某些语言内使用for_each类型的语法。
[id(DISPID_NEWENUM), propget] HRESULT _NewEnum([out, retval] IUnknown** ppUnk);
//获得某一个对象。Index:索引值,以0开始;返回值:IWizFolder对象
[id(DISPID_VALUE), propget] HRESULT Item([in] long Index, [out, retval] IDispatch** pVal);
//获得集合内元素的数量
[id(1), propget] HRESULT Count([out, retval] long * pVal);
};
IWizFolder对象
object,
uuid(B0E49F7C-CF4B-4DD4-A3F3-432F628C3A31),
dual,
nonextensible,
helpstring("IWizFolder Interface"),
pointer_default(unique)
]
interface IWizFolder : IDispatch{
//获得或者设置文件夹名称,直接对应于磁盘文件夹的名称。
[propget, id(1), helpstring("property Name")] HRESULT Name([out, retval] BSTR* pVal);
[propput, id(1), helpstring("property Name")] HRESULT Name([in] BSTR newVal);
//获得或者设置文件夹是否需要和网络同步。仅针对根文件夹有效。
[propget, id(2), helpstring("property Sync")] HRESULT Sync([out, retval] VARIANT_BOOL* pVal);
[propput, id(2), helpstring("property Sync")] HRESULT Sync([in] VARIANT_BOOL newVal);
//获得完整的文件夹路径,例如D:\My Documents\My Knowledge\Data\Default\新闻
[propget, id(3), helpstring("property FullPath")] HRESULT FullPath([out, retval] BSTR* pVal);
//获得文件夹的位置,相对于数据库文件夹,格式为/abc/def/类型
[propget, id(4), helpstring("property Location")] HRESULT Location([out, retval] BSTR* pVal);
//获得文件夹内所有文档的集合,类型为IWizDocumentCollection
[propget, id(5), helpstring("property Documents")] HRESULT Documents([out, retval] IDispatch** pVal);
//获得所有子文件夹的集合。类型为IWizFolderCollection
[propget, id(6), helpstring("property Folders")] HRESULT Folders([out, retval] IDispatch** pVal);
//是否是根文件夹
[propget, id(7), helpstring("property IsRoot")] HRESULT IsRoot([out, retval] VARIANT_BOOL* pVal);
//是否是已删除文件夹(回收站)
[propget, id(8), helpstring("property IsDeletedItems")] HRESULT IsDeletedItems([out, retval] VARIANT_BOOL* pVal);
//获得父文件夹,如果是个文件夹,返回值为空。返回类型为IWizFolder
[propget, id(9), helpstring("property Parent")] HRESULT Parent([out, retval] IDispatch** pVal);
//获得文件夹所在的数据库对象,类型为IWizDatabase
[propget, id(10), helpstring("property Database")] HRESULT Database([out, retval] IDispatch** pVal);
//创建子文件夹。bstrFolderName:子文件夹名称;返回值:成功创建的文件夹对象,类型为IWizFolder
[id(11), helpstring("method CreateSubFolder")] HRESULT CreateSubFolder([in] BSTR bstrFolderName, [out,retval] IDispatch** ppNewFolderDisp);
//创建一个新的文档。bstrTitle:文档标题;strName:文档名称,一般就是文档对应的磁盘ziw文件名,如果没有指定,才用标题作为文件名;bstrURL:文档的原始URL;返回值:成功创建的文档对象,类型为IWizDocument
[id(12), helpstring("method CreateDocument")] HRESULT CreateDocument([in] BSTR bstrTitle, [in] BSTR strName, [in] BSTR bstrURL, [out,retval] IDispatch** ppNewDocumentDisp);
[id(13), helpstring("method CreateDocument2")] HRESULT CreateDocument2([in] BSTR bstrTitle, [in] BSTR bstrURL, [out,retval] IDispatch** ppNewDocumentDisp);
//删除文件夹
[id(14), helpstring("method Delete")] HRESULT Delete(void);
//移动到其它的文件夹。pDestFolderDisp:目标文件夹
[id(15), helpstring("method MoveTo")] HRESULT MoveTo([in] IDispatch* pDestFolderDisp);
//移动到跟目录,当前文件夹作为数据库下面的根文件夹
[id(16), helpstring("method MoveToRoot")] HRESULT MoveToRoot();
//是否是目标文件夹的子文件夹(多级)。pFolderDisp:目标文件夹
[id(17), helpstring("method IsIn")] HRESULT IsIn([in] IDispatch* pFolderDisp, [out,retval] VARIANT_BOOL* pvbRet);
//设置文件夹自定义图标。hIcon:图标句柄,类型为HICON。该句柄仅针对进城内调用有效
[id(18), helpstring("method SetIcon")] HRESULT SetIcon([in] OLE_HANDLE hIcon);
//设置文件夹自定义图标。bstrIconFileName:图标文件名,可以是icon、exe、dll等可以包含图标的文件;nIconIndex:图标索引,对于exe、dll文件,可能包含多个图标,可以指定是哪一个图标。如果nIconIndex大于等于0,表示图标索引,如果小于0,表示是图标的资源ID。
[id(19), helpstring("method SetIcon2")] HRESULT SetIcon2([in] BSTR bstrIconFileName, [in] LONG nIconIndex);
//获得文件夹图标文件名。
[id(20), helpstring("method GetIconFileName")] HRESULT GetIconFileName([out,retval] BSTR* pbstrIconFileName);
//获得文档数量。nFlags:选项,可以为wizDocumentCountContainsSubFolders=0×02,表示包含子文件夹。
[id(21), helpstring("method GetDocumentCount")] HRESULT GetDocumentCount([in] LONG nFlags, [out,retval] LONG* pnCount);
//获得文件夹的显示名称,例如My Journals文件夹,在不同的语言下面,显示名称不同。nFlags:保留,必须为0
[id(22), helpstring("method GetDisplayName")] HRESULT GetDisplayName([in] LONG nFlags, [out,retval] BSTR* pbstrDisplayName);
//获得用于显示文件夹的内文档的显示模板。
[id(23), helpstring("method GetDisplayTemplate")] HRESULT GetDisplayTemplate([out,retval] BSTR* pbstrReaingTemplateFileName);
//设置用于显示文件夹内的文档的显示模板
[id(24), helpstring("method SetDisplayTemplate")] HRESULT SetDisplayTemplate([in] BSTR bstrReaingTemplateFileName);
//获得文件夹所在的根文件夹的对象。返回值类型为IWizFolder。
[propget, id(25), helpstring("property RootFolder")] HRESULT RootFolder([out, retval] IDispatch** pVal);
};
博主,您好!
可以教个问题吗?
//获得某一个对象。Index:索引值,以0开始;返回值:IWizFolder对象
[id(DISPID_VALUE), propget] HRESULT Item([in] long Index, [out, retval] IDispatch** pVal);
========================
请问这里是如何实现返回IWizFolder对象的?
’———————-
//下面这个是我写的。
interface IMatchCollection : IDispatch
{
[id(DISPID_NEWENUM), propget]
HRESULT _NewEnum([out, retval] IUnknown** ppUnk);
[id(DISPID_VALUE), propget]
HRESULT Item([in] long Index, [out, retval] IDispatch** ppMatch); //这里我不知道如何实现返回IMatch 集合。请问如何实现?
[id(0x00000001), propget]
HRESULT Count([out, retval] long * pVal);
};
interface IMatch : IDispatch
{
[id(DISPID_NEWENUM), propget]
HRESULT _NewEnum([out, retval] IUnknown** ppUnk);
[id(DISPID_VALUE), propget]
HRESULT Item([in] long Index, [out, retval] BSTR* pVal);
[id(0x00000001), propget]
HRESULT Count([out, retval] long * pVal);
};