home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 November / PCWorld_2000-11_cd.bin / Software / Topware / devc40 / _SETUP.5 / Group3 / oaidl.h < prev    next >
C/C++ Source or Header  |  1999-11-07  |  10KB  |  405 lines

  1. #ifndef _OAIDL_H
  2. #define _OAIDL_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #ifdef NONAMELESSUNION
  7. #define __VARIANT_NAME_1 n1
  8. #define __VARIANT_NAME_2 n2
  9. #define __VARIANT_NAME_3 n3
  10. #else
  11. #define __tagVARIANT
  12. #define __VARIANT_NAME_1
  13. #define __VARIANT_NAME_2
  14. #define __VARIANT_NAME_3
  15. #endif
  16. #define DISPID_UNKNOWN (-1)
  17. #define DISPID_VALUE (0)
  18. #define DISPID_PROPERTYPUT (-3)
  19. #define DISPID_NEWENUM (-4)
  20. #define DISPID_EVALUATE (-5)
  21. #define DISPID_CONSTRUCTOR (-6)
  22. #define DISPID_DESTRUCTOR (-7)
  23. #define DISPID_COLLECT (-8)
  24. #define FADF_AUTO (1)
  25. #define FADF_STATIC (2)
  26. #define FADF_EMBEDDED (4)
  27. #define FADF_FIXEDSIZE (16)
  28. #define FADF_BSTR (256)
  29. #define FADF_UNKNOWN (512)
  30. #define FADF_DISPATCH (1024)
  31. #define FADF_VARIANT (2048)
  32. #define FADF_RESERVED (0xf0e8)
  33. #define PARAMFLAG_NONE (0)
  34. #define PARAMFLAG_FIN (1)
  35. #define PARAMFLAG_FOUT (2)
  36. #define PARAMFLAG_FLCID (4)
  37. #define PARAMFLAG_FRETVAL (8)
  38. #define PARAMFLAG_FOPT (16)
  39. #define PARAMFLAG_FHASDEFAULT (32)
  40. #define IDLFLAG_NONE PARAMFLAG_NONE
  41. #define IDLFLAG_FIN PARAMFLAG_FIN
  42. #define IDLFLAG_FOUT PARAMFLAG_FOUT
  43. #define IDLFLAG_FLCID PARAMFLAG_FLCID
  44. #define IDLFLAG_FRETVAL PARAMFLAG_FRETVAL
  45. #define IMPLTYPEFLAG_FDEFAULT 1
  46. #define IMPLTYPEFLAG_FSOURCE 2
  47. #define IMPLTYPEFLAG_FRESTRICTED 4
  48. #define IMPLTYPEFLAG_FDEFAULTVTABLE 8
  49.  
  50. typedef interface ITypeLib *LPTYPELIB;
  51. typedef interface ICreateTypeInfo *LPCREATETYPEINFO;
  52. typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2;
  53. typedef interface ICreateTypeLib *LPCREATETYPELIB;
  54. typedef interface ICreateTypeLib2 *LPCREATETYPELIB2;
  55. typedef interface ITypeInfo *LPTYPEINFO;
  56. typedef interface IErrorInfo *LPERRORINFO;
  57. typedef interface IDispatch *LPDISPATCH;
  58. typedef interface ICreateErrorInfo *LPCREATEERRORINFO;
  59.  
  60. extern const IID IID_ITypeLib;
  61. extern const IID IID_ICreateTypeInfo;
  62. extern const IID IID_ICreateTypeInfo2;
  63. extern const IID IID_ICreateTypeLib;
  64. extern const IID IID_ICreateTypeLib2;
  65. extern const IID IID_ITypeInfo;
  66. extern const IID IID_IErrorInfo;
  67. extern const IID IID_IDispatch;
  68. extern const IID IID_ICreateErrorInfo;
  69. extern const GUID IID_ISupportErrorInfo;
  70.  
  71. typedef enum tagSYSKIND {
  72.     SYS_WIN16,SYS_WIN32,SYS_MAC
  73. } SYSKIND;
  74. typedef enum tagLIBFLAGS {
  75.     LIBFLAG_FRESTRICTED=1,LIBFLAG_FCONTROL=2,LIBFLAG_FHIDDEN=4,
  76.     LIBFLAG_FHASDISKIMAGE=8
  77. } LIBFLAGS;
  78. typedef struct tagTLIBATTR {
  79.     GUID guid;
  80.     LCID lcid;
  81.     SYSKIND syskind;
  82.     WORD wMajorVerNum;
  83.     WORD wMinorVerNum;
  84.     WORD wLibFlags;
  85. } TLIBATTR,*LPTLIBATTR;
  86. typedef CY CURRENCY;
  87. typedef struct tagSAFEARRAYBOUND {
  88.     ULONG cElements;
  89.     LONG lLbound;
  90. }SAFEARRAYBOUND,*LPSAFEARRAYBOUND;
  91. typedef struct _wireSAFEARR_BSTR
  92. {
  93.     ULONG Size;
  94.     wireBSTR *aBstr;
  95. }SAFEARR_BSTR;
  96. typedef struct _wireSAFEARR_UNKNOWN {
  97.     ULONG Size;
  98.     IUnknown **apUnknown;
  99. }SAFEARR_UNKNOWN;
  100. typedef struct _wireSAFEARR_DISPATCH {
  101.     ULONG Size;
  102.     LPDISPATCH *apDispatch;
  103. }SAFEARR_DISPATCH;
  104. typedef struct _wireSAFEARR_VARIANT {
  105.     ULONG Size;
  106.     struct _wireVARIANT *aVariant;
  107. }SAFEARR_VARIANT;
  108. typedef enum tagSF_TYPE {
  109.     SF_ERROR=VT_ERROR,
  110.     SF_I1=VT_I1,
  111.     SF_I2=VT_I2,
  112.     SF_I4=VT_I4,
  113.     SF_I8=VT_I8,
  114.     SF_BSTR=VT_BSTR,
  115.     SF_UNKNOWN=VT_UNKNOWN,
  116.     SF_DISPATCH=VT_DISPATCH,
  117.     SF_VARIANT=VT_VARIANT
  118. }SF_TYPE;
  119. typedef struct _wireSAFEARRAY_UNION {
  120.     ULONG sfType;
  121.     union {
  122.         SAFEARR_BSTR BstrStr;
  123.         SAFEARR_UNKNOWN UnknownStr;
  124.         SAFEARR_DISPATCH DispatchStr;
  125.         SAFEARR_VARIANT VariantStr;
  126.         BYTE_SIZEDARR ByteStr;
  127.         WORD_SIZEDARR WordStr;
  128.         DWORD_SIZEDARR LongStr;
  129.         HYPER_SIZEDARR HyperStr;
  130.     }u;
  131. }SAFEARRAYUNION;
  132. typedef struct _wireSAFEARRAY {
  133.     USHORT cDims;
  134.     USHORT fFeatures;
  135.     ULONG cbElements;
  136.     ULONG cLocks;
  137.     SAFEARRAYUNION uArrayStructs;
  138.     SAFEARRAYBOUND rgsabound[1];
  139. }*wireSAFEARRAY;
  140. typedef wireSAFEARRAY *wirePSAFEARRAY;
  141. typedef struct tagSAFEARRAY {
  142.     USHORT cDims;
  143.     USHORT fFeatures;
  144.     ULONG cbElements;
  145.     ULONG cLocks;
  146.     PVOID pvData;
  147.     SAFEARRAYBOUND rgsabound[1];
  148. }SAFEARRAY,*LPSAFEARRAY;
  149. typedef struct tagVARIANT {
  150.     VARTYPE vt;
  151.     WORD wReserved1;
  152.     WORD wReserved2;
  153.     WORD wReserved3;
  154.     union {
  155.         long lVal;
  156.         unsigned char bVal;
  157.         short iVal;
  158.         float fltVal;
  159.         double dblVal;
  160.         VARIANT_BOOL  boolVal;
  161.         SCODE scode;
  162.         CY cyVal;
  163.         DATE date;
  164.         BSTR bstrVal;
  165.         IUnknown *punkVal;
  166.         LPDISPATCH pdispVal;
  167.         SAFEARRAY *parray;
  168.         unsigned char *pbVal;
  169.         short *piVal;
  170.         long *plVal;
  171.         float *pfltVal;
  172.         double *pdblVal;
  173.         VARIANT_BOOL *pbool;
  174.         SCODE *pscode;
  175.         CY *pcyVal;
  176.         DATE *pdate;
  177.         BSTR *pbstrVal;
  178.         IUnknown **ppunkVal;
  179.         LPDISPATCH *ppdispVal;
  180.         SAFEARRAY **pparray;
  181.         struct tagVARIANT *pvarVal;
  182.         void *byref;
  183.     } DUMMYUNIONNAME;
  184. } VARIANT,*LPVARIANT;
  185. typedef VARIANT VARIANTARG;
  186. typedef VARIANT *LPVARIANTARG;
  187. typedef struct _wireVARIANT {
  188.     DWORD clSize;
  189.     DWORD rpcReserved;
  190.     USHORT vt;
  191.     USHORT wReserved1;
  192.     USHORT wReserved2;
  193.     USHORT wReserved3;
  194.     union {
  195.         LONG lVal;
  196.         BYTE bVal;
  197.         SHORT iVal;
  198.         FLOAT fltVal;
  199.         DOUBLE dblVal;
  200.         VARIANT_BOOL boolVal;
  201.         SCODE scode;
  202.         CY cyVal;
  203.         DATE date;
  204.         wireBSTR bstrVal;
  205.         IUnknown *punkVal;
  206.         LPDISPATCH pdispVal;
  207.         wireSAFEARRAY parray;
  208.         BYTE *pbVal;
  209.         SHORT *piVal;
  210.         LONG *plVal;
  211.         FLOAT *pfltVal;
  212.         DOUBLE *pdblVal;
  213.         VARIANT_BOOL *pboolVal;
  214.         SCODE *pscode;
  215.         CY *pcyVal;
  216.         DATE *pdate;
  217.         wireBSTR *pbstrVal;
  218.         IUnknown **ppunkVal;
  219.         LPDISPATCH *ppdispVal;
  220.         wireSAFEARRAY *pparray;
  221.         struct _wireVARIANT *pvarVal;
  222.         CHAR cVal;
  223.         USHORT uiVal;
  224.         ULONG ulVal;
  225.         INT intVal;
  226.         UINT uintVal;
  227.         DECIMAL decVal;
  228.         DECIMAL *pdecVal;
  229.         CHAR *pcVal;
  230.         USHORT *puiVal;
  231.         ULONG *pulVal;
  232.         INT *pintVal;
  233.         UINT *puintVal;
  234.     } DUMMYUNIONNAME;
  235. } wireVARIANT;
  236. typedef LONG DISPID;
  237. typedef DISPID MEMBERID;
  238. typedef DWORD HREFTYPE;
  239. typedef enum tagTYPEKIND {
  240.     TKIND_ENUM,TKIND_RECORD,TKIND_MODULE,TKIND_INTERFACE,TKIND_DISPATCH,
  241.     TKIND_COCLASS,TKIND_ALIAS,TKIND_UNION,TKIND_MAX
  242. }TYPEKIND;
  243. typedef struct tagTYPEDESC {
  244.     union {
  245.         struct tagTYPEDESC *lptdesc;
  246.         struct tagARRAYDESC *lpadesc;
  247.         HREFTYPE hreftype;
  248.     } DUMMYUNIONNAME;
  249.     VARTYPE vt;
  250. }TYPEDESC;
  251. typedef struct tagARRAYDESC {
  252.     TYPEDESC tdescElem;
  253.     USHORT cDims;
  254.     SAFEARRAYBOUND rgbounds[1];
  255. }ARRAYDESC;
  256. typedef struct tagPARAMDESCEX {
  257.     ULONG cBytes;
  258.     VARIANTARG varDefaultValue;
  259. }PARAMDESCEX,*LPPARAMDESCEX;
  260. typedef struct tagPARAMDESC {
  261.     LPPARAMDESCEX pparamdescex;
  262.     USHORT wParamFlags;
  263. }PARAMDESC,*LPPARAMDESC;
  264. typedef struct tagIDLDESC {
  265.     ULONG dwReserved;
  266.     USHORT wIDLFlags;
  267. }IDLDESC,*LPIDLDESC;
  268. typedef struct tagELEMDESC {
  269.     TYPEDESC tdesc;
  270.     union {
  271.         IDLDESC idldesc;
  272.         PARAMDESC paramdesc;
  273.     } DUMMYUNIONNAME;
  274. } ELEMDESC,*LPELEMDESC;
  275. typedef struct tagTYPEATTR {
  276.     GUID guid;
  277.     LCID lcid;
  278.     DWORD dwReserved;
  279.     MEMBERID memidConstructor;
  280.     MEMBERID memidDestructor;
  281.     LPOLESTR lpstrSchema;
  282.     ULONG cbSizeInstance;
  283.     TYPEKIND typekind;
  284.     WORD cFuncs;
  285.     WORD cVars;
  286.     WORD cImplTypes;
  287.     WORD cbSizeVft;
  288.     WORD cbAlignment;
  289.     WORD wTypeFlags;
  290.     WORD wMajorVerNum;
  291.     WORD wMinorVerNum;
  292.     TYPEDESC tdescAlias;
  293.     IDLDESC idldescType;
  294. }TYPEATTR,*LPTYPEATTR;
  295. typedef struct tagDISPPARAMS {
  296.     VARIANTARG *rgvarg;
  297.     DISPID *rgdispidNamedArgs;
  298.     UINT cArgs;
  299.     UINT cNamedArgs;
  300. }DISPPARAMS;
  301. typedef struct tagEXCEPINFO {
  302.     WORD wCode;
  303.     WORD wReserved;
  304.     BSTR bstrSource;
  305.     BSTR bstrDescription;
  306.     BSTR bstrHelpFile;
  307.     DWORD dwHelpContext;
  308.     PVOID pvReserved;
  309.     HRESULT(__stdcall * pfnDeferredFillIn)(struct tagEXCEPINFO*);
  310.     SCODE scode;
  311. } EXCEPINFO,*LPEXCEPINFO;
  312. typedef enum tagCALLCONV {
  313.     CC_FASTCALL,CC_CDECL,CC_MSCPASCAL,CC_PASCAL=CC_MSCPASCAL,
  314.     CC_MACPASCAL,CC_STDCALL,CC_FPFASTCALL,CC_SYSCALL,CC_MPWCDECL,
  315.     CC_MPWPASCAL,CC_MAX=CC_MPWPASCAL
  316. }CALLCONV;
  317. typedef enum tagFUNCKIND {
  318.     FUNC_VIRTUAL,FUNC_PUREVIRTUAL,FUNC_NONVIRTUAL,
  319.     FUNC_STATIC= FUNC_NONVIRTUAL,FUNC_DISPATCH
  320. }FUNCKIND;
  321. typedef enum tagINVOKEKIND {
  322.     INVOKE_FUNC=1,INVOKE_PROPERTYGET,INVOKE_PROPERTYPUT=4,
  323.     INVOKE_PROPERTYPUTREF=8
  324. }INVOKEKIND;
  325. typedef struct tagFUNCDESC {
  326.     MEMBERID memid;
  327.     SCODE *lprgscode;
  328.     ELEMDESC *lprgelemdescParam;
  329.     FUNCKIND funckind;
  330.     INVOKEKIND invkind;
  331.     CALLCONV callconv;
  332.     SHORT cParams;
  333.     SHORT cParamsOpt;
  334.     SHORT oVft;
  335.     SHORT cScodes;
  336.     ELEMDESC elemdescFunc;
  337.     WORD wFuncFlags;
  338. }FUNCDESC,*LPFUNCDESC;
  339. typedef enum tagVARKIND {
  340.     VAR_PERINSTANCE,VAR_STATIC,VAR_CONST,VAR_DISPATCH
  341. } VARKIND;
  342. typedef struct tagVARDESC {
  343.     MEMBERID memid;
  344.     LPOLESTR lpstrSchema;
  345.     union {
  346.         ULONG oInst;
  347.         VARIANT *lpvarValue;
  348.     } DUMMYUNIONNAME;
  349.     ELEMDESC elemdescVar;
  350.     WORD wVarFlags;
  351.     VARKIND varkind;
  352. } VARDESC,*LPVARDESC;
  353. typedef enum tagTYPEFLAGS {
  354.     TYPEFLAG_FAPPOBJECT=1,TYPEFLAG_FCANCREATE=2,TYPEFLAG_FLICENSED=4,
  355.     TYPEFLAG_FPREDECLID=8,TYPEFLAG_FHIDDEN=16,TYPEFLAG_FCONTROL=32,
  356.     TYPEFLAG_FDUAL=64,TYPEFLAG_FNONEXTENSIBLE=128,
  357.     TYPEFLAG_FOLEAUTOMATION=256,TYPEFLAG_FRESTRICTED=512,
  358.     TYPEFLAG_FAGGREGATABLE=1024,TYPEFLAG_FREPLACEABLE=2048,
  359.     TYPEFLAG_FDISPATCHABLE=4096,TYPEFLAG_FREVERSEBIND=8192
  360. } TYPEFLAGS;
  361. typedef enum tagFUNCFLAGS {
  362.     FUNCFLAG_FRESTRICTED=1,FUNCFLAG_FSOURCE=2,FUNCFLAG_FBINDABLE=4,
  363.     FUNCFLAG_FREQUESTEDIT=8,FUNCFLAG_FDISPLAYBIND=16,FUNCFLAG_FDEFAULTBIND=32,
  364.     FUNCFLAG_FHIDDEN=64,FUNCFLAG_FUSESGETLASTERROR=128,FUNCFLAG_FDEFAULTCOLLELEM=256,
  365.     FUNCFLAG_FUIDEFAULT=512,FUNCFLAG_FNONBROWSABLE=1024,FUNCFLAG_FREPLACEABLE=2048,
  366.     FUNCFLAG_FIMMEDIATEBIND=4096
  367. } FUNCFLAGS;
  368. typedef enum tagVARFLAGS {
  369.     VARFLAG_FREADONLY=1,VARFLAG_FSOURCE=2,VARFLAG_FBINDABLE=4,VARFLAG_FREQUESTEDIT=8,
  370.     VARFLAG_FDISPLAYBIND=16,VARFLAG_FDEFAULTBIND=32,VARFLAG_FHIDDEN=64,VARFLAG_FRESTRICTED=128,
  371.     VARFLAG_FDEFAULTCOLLELEM=256,VARFLAG_FUIDEFAULT=512,VARFLAG_FNONBROWSABLE=1024,
  372.     VARFLAG_FREPLACEABLE=2048,VARFLAG_FIMMEDIATEBIND=4096
  373. } VARFLAGS;
  374. typedef struct tagCLEANLOCALSTORAGE {
  375.     IUnknown *pInterface;
  376.     PVOID pStorage;
  377.     DWORD flags;
  378. } CLEANLOCALSTORAGE;
  379. typedef struct tagCUSTDATAITEM {
  380.     GUID guid;
  381.     VARIANTARG varValue;
  382. } CUSTDATAITEM,*LPCUSTDATAITEM;
  383. typedef struct tagCUSTDATA {
  384.     DWORD cCustData;
  385.     LPCUSTDATAITEM prgCustData;
  386. } CUSTDATA,*LPCUSTDATA;
  387.  
  388. #undef INTERFACE
  389. #define INTERFACE IDispatch
  390. DECLARE_INTERFACE_(IDispatch,IUnknown)
  391. {
  392.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  393.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  394.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  395.     STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
  396.     STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
  397.     STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
  398.     STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
  399. };
  400.  
  401. #ifdef __cplusplus
  402. }
  403. #endif
  404. #endif
  405.