2 * Defines the COM interfaces and APIs related to Component Category Manager
4 * Depends on 'obj_enumguid.h'.
6 * Copyright (C) 2002 John K. Hohm
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #ifndef __WINE_WINE_OBJ_COMCAT_H
24 #define __WINE_WINE_OBJ_COMCAT_H
28 #endif /* defined(__cplusplus) */
30 /*****************************************************************************
34 typedef REFGUID REFCATID;
35 #define CATID_NULL GUID_NULL
36 #define IsEqualCATID(a, b) IsEqualGUID(a, b)
38 typedef struct tagCATEGORYINFO {
39 CATID catid; /* category identifier for component */
40 LCID lcid; /* locale identifier */
41 OLECHAR szDescription[128]; /* description of the category */
42 } CATEGORYINFO, *LPCATEGORYINFO;
44 /*****************************************************************************
47 DEFINE_GUID(CATID_Insertable, 0x40FC6ED3, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
48 DEFINE_GUID(CATID_Control, 0x40FC6ED4, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
49 DEFINE_GUID(CATID_Programmable, 0x40FC6ED5, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
50 DEFINE_GUID(CATID_IsShortcut, 0x40FC6ED6, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
51 DEFINE_GUID(CATID_NeverShowExt, 0x40FC6ED7, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
52 DEFINE_GUID(CATID_DocObject, 0x40FC6ED8, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
53 DEFINE_GUID(CATID_Printable, 0x40FC6ED9, 0x2438, 0x11CF, 0xA3, 0xDB, 0x08, 0x00, 0x36, 0xF1, 0x25, 0x02);
54 DEFINE_GUID(CATID_RequiresDataPathHost, 0x0DE86A50, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
55 DEFINE_GUID(CATID_PersistsToMoniker, 0x0DE86A51, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
56 DEFINE_GUID(CATID_PersistsToStorage, 0x0DE86A52, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
57 DEFINE_GUID(CATID_PersistsToStreamInit, 0x0DE86A53, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
58 DEFINE_GUID(CATID_PersistsToStream, 0x0DE86A54, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
59 DEFINE_GUID(CATID_PersistsToMemory, 0x0DE86A55, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
60 DEFINE_GUID(CATID_PersistsToFile, 0x0DE86A56, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
61 DEFINE_GUID(CATID_PersistsToPropertyBag, 0x0DE86A57, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
62 DEFINE_GUID(CATID_InternetAware, 0x0DE86A58, 0x2BAA, 0x11CF, 0xA2, 0x29, 0x00, 0xAA, 0x00, 0x3D, 0x73, 0x52);
63 DEFINE_GUID(CATID_DesignTimeUIActivatableControl, 0xF2BB56D1, 0xDB07, 0x11D1, 0xAA, 0x6B, 0x00, 0x60, 0x97, 0xDB, 0x95, 0x39);
65 /*****************************************************************************
66 * Aliases for EnumGUID
68 #define IEnumCATID IEnumGUID
69 #define LPENUMCATID LPENUMGUID
70 #define IID_IEnumCATID IID_IEnumGUID
72 #define IEnumCLSID IEnumGUID
73 #define LPENUMCLSID LPENUMGUID
74 #define IID_IEnumCLSID IID_IEnumGUID
76 /*****************************************************************************
77 * Predeclare the interfaces
79 DEFINE_OLEGUID(IID_ICatInformation, 0x0002E013L, 0, 0);
80 typedef struct ICatInformation ICatInformation, *LPCATINFORMATION;
82 DEFINE_OLEGUID(IID_ICatRegister, 0x0002E012L, 0, 0);
83 typedef struct ICatRegister ICatRegister, *LPCATREGISTER;
85 DEFINE_OLEGUID(IID_IEnumCATEGORYINFO, 0x0002E011L, 0, 0);
86 typedef struct IEnumCATEGORYINFO IEnumCATEGORYINFO, *LPENUMCATEGORYINFO;
88 /* The Component Category Manager */
89 DEFINE_OLEGUID(CLSID_StdComponentCategoriesMgr, 0x0002E005L, 0, 0);
91 /*****************************************************************************
94 #define INTERFACE ICatInformation
95 #define ICatInformation_METHODS \
97 STDMETHOD(EnumCategories)(THIS_ LCID lcid, IEnumCATEGORYINFO ** ppenumCatInfo) PURE; \
98 STDMETHOD(GetCategoryDesc)(THIS_ REFCATID rcatid, LCID lcid, PWCHAR * ppszDesc) PURE; \
99 STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG cImplemented, CATID * rgcatidImpl, ULONG cRequired, CATID * rgcatidReq, IEnumCLSID ** ppenumCLSID) PURE; \
100 STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID rclsid, ULONG cImplemented, CATID * rgcatidImpl, ULONG cRequired, CATID * rgcatidReq) PURE; \
101 STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID rclsid, IEnumCATID ** ppenumCATID) PURE; \
102 STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID rclsid, IEnumCATID ** ppenumCATID) PURE;
103 ICOM_DEFINE(ICatInformation,IUnknown)
107 /*** IUnknown methods ***/
108 #define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
109 #define ICatInformation_AddRef(p) (p)->lpVtbl->AddRef(p)
110 #define ICatInformation_Release(p) (p)->lpVtbl->Release(p)
111 /*** ICatInformation methods ***/
112 #define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b)
113 #define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c)
114 #define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e)
115 #define ICatInformation_IsClassOfCategories(p,a,b,c,d,e) (p)->lpVtbl->IsClassOfCategories(p,a,b,c,d,e)
116 #define ICatInformation_EnumImplCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumImplCategoriesOfClass(p,a,b)
117 #define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b)
120 /*****************************************************************************
123 #define INTERFACE ICatRegister
124 #define ICatRegister_METHODS \
126 STDMETHOD(RegisterCategories)(THIS_ ULONG cCategories, CATEGORYINFO * rgCategoryInfo) PURE; \
127 STDMETHOD(UnRegisterCategories)(THIS_ ULONG cCategories, CATID * rgcatid) PURE; \
128 STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID rclsid, ULONG cCategories, CATID * rgcatid) PURE; \
129 STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID rclsid, ULONG cCategories, CATID * rgcatid) PURE; \
130 STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID rclsid, ULONG cCategories, CATID * rgcatid) PURE; \
131 STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID rclsid, ULONG cCategories, CATID * rgcatid) PURE;
132 ICOM_DEFINE(ICatRegister,IUnknown)
136 /*** IUnknown methods ***/
137 #define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
138 #define ICatRegister_AddRef(p) (p)->lpVtbl->AddRef(p)
139 #define ICatRegister_Release(p) (p)->lpVtbl->Release(p)
140 /*** ICatRegister methods ***/
141 #define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b)
142 #define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b)
143 #define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c)
144 #define ICatRegister_UnRegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassImplCategories(p,a,b,c)
145 #define ICatRegister_RegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->RegisterClassReqCategories(p,a,b,c)
146 #define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c)
149 /*****************************************************************************
152 #define INTERFACE IEnumCATEGORYINFO
153 #define IEnumCATEGORYINFO_METHODS \
155 STDMETHOD(Next)(THIS_ ULONG celt, CATEGORYINFO * rgelt, ULONG * pceltFetched) PURE; \
156 STDMETHOD(Skip)(THIS_ ULONG celt) PURE; \
157 STDMETHOD(Reset)(THIS) PURE; \
158 STDMETHOD(Clone)(THIS_ IEnumCATEGORYINFO ** ppenum) PURE;
159 ICOM_DEFINE(IEnumCATEGORYINFO,IUnknown)
163 /*** IUnknown methods ***/
164 #define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
165 #define IEnumCATEGORYINFO_AddRef(p) (p)->lpVtbl->AddRef(p)
166 #define IEnumCATEGORYINFO_Release(p) (p)->lpVtbl->Release(p)
167 /*** IEnumCATEGORYINFO methods ***/
168 #define IEnumCATEGORYINFO_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
169 #define IEnumCATEGORYINFO_Skip(p,a) (p)->lpVtbl->Skip(p,a)
170 #define IEnumCATEGORYINFO_Reset(p) (p)->lpVtbl->Reset(p)
171 #define IEnumCATEGORYINFO_Clone(p,a) (p)->lpVtbl->Clone(p,a)
176 #endif /* defined(__cplusplus) */
178 #endif /* __WINE_WINE_OBJ_COMCAT_H */