windows-nt/Source/XPSP1/NT/enduser/stuff/hhctrl/itgroup.h
2020-09-26 16:20:57 +08:00

90 lines
3 KiB
C

// ITGROUP.H: IITGroup interface declaration
#ifndef __ITGROUP_H__
#define __ITGROUP_H__
//#include <comdef.h>
// {B1A6CA91-A479-11d0-9741-00AA006117EB}
DEFINE_GUID(IID_IITGroup,
0xb1a6ca91, 0xa479, 0x11d0, 0x97, 0x41, 0x0, 0xaa, 0x0, 0x61, 0x17, 0xeb);
// {98258914-B6AB-11d0-9D92-00A0C90F55A5}
DEFINE_GUID(IID_IITGroupArray,
0x98258914, 0xb6ab, 0x11d0, 0x9d, 0x92, 0x0, 0xa0, 0xc9, 0xf, 0x55, 0xa5);
#ifdef ITPROXY
// {B1A6CA92-A479-11d0-9741-00AA006117EB}
DEFINE_GUID(CLSID_IITGroup,
0xb1a6ca92, 0xa479, 0x11d0, 0x97, 0x41, 0x0, 0xaa, 0x0, 0x61, 0x17, 0xeb);
// {98258915-B6AB-11d0-9D92-00A0C90F55A5}
DEFINE_GUID(CLSID_IITGroupArray,
0x98258915, 0xb6ab, 0x11d0, 0x9d, 0x92, 0x0, 0xa0, 0xc9, 0xf, 0x55, 0xa5);
#else
// {4662daab-d393-11d0-9a56-00c04fb68bf7} (changed from IT 3.0)
DEFINE_GUID(CLSID_IITGroupLocal,
0x4662daab, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
// {4662daac-d393-11d0-9a56-00c04fb68bf7} (changed from IT 3.0)
DEFINE_GUID(CLSID_IITGroupArrayLocal,
0x4662daac, 0xd393, 0x11d0, 0x9a, 0x56, 0x00, 0xc0, 0x4f, 0xb6, 0x8b, 0xf7);
#endif // ITPROXY
// Forward declarations
interface IITDatabase;
DECLARE_INTERFACE_(IITGroup, IUnknown)
{
STDMETHOD(Initiate)(DWORD lcGrpItem) PURE;
STDMETHOD(CreateFromBitVector)(LPBYTE lpBits, DWORD dwSize, DWORD dwItems) PURE;
STDMETHOD(CreateFromBuffer)(HANDLE h) PURE;
STDMETHOD(Open)(IITDatabase* lpITDB, LPCWSTR lpszMoniker) PURE;
STDMETHOD(Free)(void) PURE;
STDMETHOD(CopyOutBitVector)(IITGroup* pIITGroup) PURE;
STDMETHOD(AddItem)(DWORD dwGrpItem) PURE;
STDMETHOD(RemoveItem)(DWORD dwGrpItem) PURE;
STDMETHOD(FindTopicNum)(DWORD dwCount, LPDWORD lpdwOutputTopicNum) PURE;
STDMETHOD(FindOffset)(DWORD dwTopicNum, LPDWORD lpdwOutputOffset) PURE;
STDMETHOD(GetSize)(LPDWORD dwGrpSize) PURE;
STDMETHOD(Trim)(void) PURE;
STDMETHOD(And)(IITGroup* pIITGroup) PURE;
STDMETHOD(And)(IITGroup* pIITGroupIn, IITGroup* pIITGroupOut) PURE;
STDMETHOD(Or)(IITGroup* pIITGroup) PURE;
STDMETHOD(Or)(IITGroup* pIITGroupIn, IITGroup* pIITGroupOut) PURE;
STDMETHOD(Not)(void) PURE;
STDMETHOD(Not)(IITGroup* pIITGroupOut) PURE;
STDMETHOD(IsBitSet)(DWORD dwTopicNum) PURE;
STDMETHOD(CountBitsOn)(LPDWORD lpdwTotalNumBitsOn) PURE;
STDMETHOD(Clear)(void) PURE;
STDMETHOD_(LPVOID, GetLocalImageOfGroup)(void) PURE;
STDMETHOD(PutRemoteImageOfGroup)(LPVOID lpGroupIn) PURE;
};
typedef IITGroup* LPITGROUP;
#define ITGP_MAX_GROUPARRAY_ENTRIES 32 // maximum number of groups allowed in a collection
#define ITGP_ALL_ENTRIES (-1L)
#define ITGP_OPERATOR_OR 0
#define ITGP_OPERATOR_AND 1
DECLARE_INTERFACE_(IITGroupArray, IITGroup)
{
// composite group interface
STDMETHOD(InitEntry)(IITDatabase *piitDB, LPCWSTR lpwszName, LONG& lEntryNum) PURE;
STDMETHOD(InitEntry)(IITGroup *piitGroup, LONG& lEntryNum) PURE;
STDMETHOD(SetEntry)(LONG lEntryNum) PURE;
STDMETHOD(ClearEntry)(LONG lEntryNum) PURE;
STDMETHOD(SetDefaultOp)(LONG cDefaultOp) PURE;
STDMETHOD(ToString)(LPWSTR *ppwBuffer) PURE;
};
typedef IITGroupArray* LPIITGroupArray;
#endif // __ITGROUP_H__