oleauto.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 657 行 · 第 1/2 页

H
657
字号
#ifndef _OLEAUTO_H
#define _OLEAUTO_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif

#pragma pack(push,8)
#define WINOLEAUTAPI STDAPI
#define WINOLEAUTAPI_(type) STDAPI_(type)
#define STDOLE_MAJORVERNUM 1
#define STDOLE_MINORVERNUM 0
#define STDOLE_LCID 0

#define VARIANT_NOVALUEPROP 0x01
#define VARIANT_ALPHABOOL 0x02
#define VARIANT_NOUSEOVERRIDE 0x04
#define VARIANT_LOCALBOOL 0x08

#define VAR_TIMEVALUEONLY 0x0001
#define VAR_DATEVALUEONLY 0x0002
#define VAR_VALIDDATE 0x0004
#define VAR_CALENDAR_HIJRI 0x0008
#define VAR_LOCALBOOL 0x0010
#define VAR_FORMAT_NOSUBSTITUTE 0x0020
#define VAR_FOURDIGITYEARS 0x0040
#define VAR_CALENDAR_THAI 0x0080
#define VAR_CALENDAR_GREGORIAN 0x0100

#define MEMBERID_NIL DISPID_UNKNOWN
#define ID_DEFAULTINST (-2)
#define DISPATCH_METHOD 1
#define DISPATCH_PROPERTYGET 2
#define DISPATCH_PROPERTYPUT 4
#define DISPATCH_PROPERTYPUTREF 8
#define LHashValOfName(l,n) LHashValOfNameSys(SYS_WIN32,l,n)
#define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h)))
#define IsHashValCompatible(h1,h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2))))
#define ACTIVEOBJECT_STRONG 0
#define ACTIVEOBJECT_WEAK 1
#ifdef NONAMELESSUNION
#define V_UNION(X,Y) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.Y)
#define V_VT(X) ((X)->__VARIANT_NAME_1.__VARIANT_NAME_2.vt)
#else
#define V_UNION(X,Y) ((X)->Y)
#define V_VT(X) ((X)->vt)
#endif
#define V_BOOL(X) V_UNION(X,boolVal)
#define V_ISBYREF(X) (V_VT(X)&VT_BYREF)
#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY)
#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR)
#define V_NONE(X) V_I2(X)
#define V_UI1(X) V_UNION(X,bVal)
#define V_UI1REF(X) V_UNION(X,pbVal)
#define V_I2(X) V_UNION(X,iVal)
#define V_UI2(X) V_UNION(X,uiVal)
#define V_I2REF(X) V_UNION(X,piVal)
#define V_I4(X) V_UNION(X,lVal)
#define V_UI4(X) V_UNION(X,ulVal)
#define V_I4REF(X) V_UNION(X,plVal)
#define V_UI4REF(X) V_UNION(X,pulVal)
#define V_I8(X) V_UNION(X,llVal)
#define V_UI8(X) V_UNION(X,ullVal)
#define V_I8REF(X) V_UNION(X,pllVal)
#define V_UI8REF(X) V_UNION(X,pullVal)
#define V_R4(X) V_UNION(X,fltVal)
#define V_R4REF(X) V_UNION(X,pfltVal)
#define V_R8(X) V_UNION(X,dblVal)
#define V_R8REF(X) V_UNION(X,pdblVal)
#define V_CY(X) V_UNION(X,cyVal)
#define V_CYREF(X) V_UNION(X,pcyVal)
#define V_DATE(X) V_UNION(X,date)
#define V_DATEREF(X) V_UNION(X,pdate)
#define V_BSTR(X) V_UNION(X,bstrVal)
#define V_BSTRREF(X) V_UNION(X,pbstrVal)
#define V_DISPATCH(X) V_UNION(X,pdispVal)
#define V_DISPATCHREF(X) V_UNION(X,ppdispVal)
#define V_ERROR(X) V_UNION(X,scode)
#define V_ERRORREF(X) V_UNION(X,pscode)
#define V_BOOLREF(X) V_UNION(X,pboolVal)
#define V_UNKNOWN(X) V_UNION(X,punkVal)
#define V_UNKNOWNREF(X) V_UNION(X,ppunkVal)
#define V_VARIANTREF(X) V_UNION(X,pvarVal)
#define V_LPSTR(X) V_UNION(X,pszVal)
#define V_LPSTRREF(X) V_UNION(X,ppszVal)
#define V_LPWSTR(X) V_UNION(X,pwszVal)
#define V_LPWSTRREF(X) V_UNION(X,ppwszVal)
#define V_FILETIME(X) V_UNION(X,filetime)
#define V_FILETIMEREF(X) V_UNION(X,pfiletime)
#define V_BLOB(X) V_UNION(X,blob)
#define V_UUID(X) V_UNION(X,puuid)
#define V_CLSID(X) V_UNION(X,puuid)
#define V_ARRAY(X) V_UNION(X,parray)
#define V_ARRAYREF(X) V_UNION(X,pparray)
#define V_BYREF(X) V_UNION(X,byref)
#if defined(NONAMELESSUNION)
#define V_DECIMAL(X) ((X)->__VARIANT_NAME_1.decVal)
#else
#define V_DECIMAL(X) ((X)->decVal)
#endif
#define V_DECIMALREF(X) V_UNION(X,pdecVal)
#define V_I1(X) V_UNION(X,cVal)

#ifdef _WIN64
#define V_INT_PTR(X) V_I8(X)
#define V_UINT_PTR(X) V_UI8(X)
#define V_INT_PTRREF(X) V_I8REF(X)
#define V_UINT_PTRREF(X) V_UI8REF(X)
#else
#define V_INT_PTR(X) V_I4(X)
#define V_UINT_PTR(X) V_UI4(X)
#define V_INT_PTRREF(X) V_I4REF(X)
#define V_UINT_PTRREF(X) V_UI4REF(X)
#endif

#define VARCMP_LT 0
#define VARCMP_EQ 1
#define VARCMP_GT 2
#define VARCMP_NULL 3

#define LOCALE_USE_NLS 0x10000000

#define VARIANT_NOUSEROVERRIDE 0x04
#define VARIANT_CALENDAR_HIJRI 0x08
#define VARIANT_CALENDAR_THAI 0x20
#define VARIANT_CALENDAR_GREGORIAN 0x40
#define VARIANT_USE_NLS 0x80

#define NUMPRS_LEADING_WHITE 0x00001
#define NUMPRS_TRAILING_WHITE 0x00002
#define NUMPRS_LEADING_PLUS 0x00004
#define NUMPRS_TRAILING_PLUS 0x00008
#define NUMPRS_LEADING_MINUS 0x00010
#define NUMPRS_TRAILING_MINUS 0x00020
#define NUMPRS_HEX_OCT 0x00040
#define NUMPRS_PARENS 0x00080
#define NUMPRS_DECIMAL 0x00100
#define NUMPRS_THOUSANDS 0x00200
#define NUMPRS_CURRENCY 0x00400
#define NUMPRS_EXPONENT 0x00800
#define NUMPRS_USE_ALL 0x01000
#define NUMPRS_STD 0x01FFF
#define NUMPRS_NEG 0x10000
#define NUMPRS_INEXACT 0x20000

#define VTBIT_I1 (1<<VT_I1)
#define VTBIT_UI1 (1<<VT_UI1)
#define VTBIT_I2 (1<<VT_I2)
#define VTBIT_UI2 (1<<VT_UI2)
#define VTBIT_I4 (1<<VT_I4)
#define VTBIT_UI4 (1<<VT_UI4)
#define VTBIT_I8 (1<<VT_I8)
#define VTBIT_UI8 (1<<VT_UI8)
#define VTBIT_R4 (1<<VT_R4)
#define VTBIT_R8 (1<<VT_R8)
#define VTBIT_CY (1<<VT_CY)
#define VTBIT_DECIMAL (1<<VT_DECIMAL)

#include <oaidl.h>

typedef enum tagREGKIND {
	REGKIND_DEFAULT,
	REGKIND_REGISTER,
	REGKIND_NONE
} REGKIND;
typedef struct tagPARAMDATA {
	OLECHAR *szName;
	VARTYPE vt;
} PARAMDATA,*LPPARAMDATA;
typedef struct tagMETHODDATA {
	OLECHAR *szName;
	PARAMDATA *ppdata;
	DISPID dispid;
	UINT iMeth;
	CALLCONV cc;
	UINT cArgs;
	WORD wFlags;
	VARTYPE vtReturn;
} METHODDATA,*LPMETHODDATA;
typedef struct tagINTERFACEDATA {
	METHODDATA *pmethdata;
	UINT cMembers;
} INTERFACEDATA,*LPINTERFACEDATA;

typedef struct {
	SYSTEMTIME st;
	USHORT wDayOfYear;
} UDATE;

typedef struct {
	int cDig;
	unsigned long dwInFlags;
	unsigned long dwOutFlags;
	int cchUsed;
	int nBaseShift;
	int nPwr10;
} NUMPARSE;

WINOLEAUTAPI_(BSTR) SysAllocString(const OLECHAR*);
WINOLEAUTAPI_(int) SysReAllocString(BSTR*,const OLECHAR*);
WINOLEAUTAPI_(BSTR) SysAllocStringLen(const OLECHAR*,unsigned int);
WINOLEAUTAPI_(int) SysReAllocStringLen(BSTR*,const OLECHAR*,unsigned int);
WINOLEAUTAPI_(void) SysFreeString(BSTR);
WINOLEAUTAPI_(unsigned int) SysStringLen(BSTR);
WINOLEAUTAPI_(unsigned int) SysStringByteLen(BSTR);
WINOLEAUTAPI_(BSTR) SysAllocStringByteLen(const char*,unsigned int);
WINOLEAUTAPI_(int) DosDateTimeToVariantTime(unsigned short,unsigned short,double*);
WINOLEAUTAPI_(int) VariantTimeToDosDateTime(double,unsigned short*,unsigned short*);
WINOLEAUTAPI_(int) VariantTimeToSystemTime(double,LPSYSTEMTIME);
WINOLEAUTAPI_(int) SystemTimeToVariantTime(LPSYSTEMTIME, double*);
WINOLEAUTAPI VarDateFromUdate(UDATE*,ULONG,DATE*);
WINOLEAUTAPI VarDateFromUdateEx(UDATE*,LCID,ULONG,DATE*);
WINOLEAUTAPI VarUdateFromDate(DATE,ULONG,UDATE*);
WINOLEAUTAPI SafeArrayAllocDescriptor(unsigned int,SAFEARRAY**);
WINOLEAUTAPI SafeArrayAllocData(SAFEARRAY*);
WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreate(VARTYPE,unsigned int,SAFEARRAYBOUND*);
WINOLEAUTAPI SafeArrayDestroyDescriptor(SAFEARRAY*);
WINOLEAUTAPI SafeArrayDestroyData(SAFEARRAY*);
WINOLEAUTAPI SafeArrayDestroy(SAFEARRAY*);
WINOLEAUTAPI SafeArrayRedim(SAFEARRAY*,SAFEARRAYBOUND*);
WINOLEAUTAPI_(unsigned int) SafeArrayGetDim(SAFEARRAY*);
WINOLEAUTAPI_(unsigned int) SafeArrayGetElemsize(SAFEARRAY*);
WINOLEAUTAPI SafeArrayGetUBound(SAFEARRAY*,unsigned int,long*);
WINOLEAUTAPI SafeArrayGetLBound(SAFEARRAY*,unsigned int,long*);
WINOLEAUTAPI SafeArrayLock(SAFEARRAY*);
WINOLEAUTAPI SafeArrayUnlock(SAFEARRAY*);
WINOLEAUTAPI SafeArrayAccessData(SAFEARRAY*,void**);
WINOLEAUTAPI SafeArrayUnaccessData(SAFEARRAY*);
WINOLEAUTAPI SafeArrayGetElement(SAFEARRAY*,long*,void*);
WINOLEAUTAPI SafeArrayPutElement(SAFEARRAY*,long*,void*);
WINOLEAUTAPI SafeArrayCopy(SAFEARRAY*,SAFEARRAY**);
WINOLEAUTAPI SafeArrayPtrOfIndex(SAFEARRAY*,long*,void**);
WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVector(VARTYPE,LONG,ULONG);
WINOLEAUTAPI_(SAFEARRAY*) SafeArrayCreateVectorEx(VARTYPE,LONG,ULONG,LPVOID);
WINOLEAUTAPI SafeArrayAllocDescriptorEx(VARTYPE,UINT,SAFEARRAY**);
WINOLEAUTAPI SafeArrayGetVartype(SAFEARRAY*,VARTYPE*);
WINOLEAUTAPI SafeArraySetRecordInfo(SAFEARRAY*,IRecordInfo*);
WINOLEAUTAPI SafeArrayGetRecordInfo(SAFEARRAY*,IRecordInfo**);
WINOLEAUTAPI SafeArraySetIID(SAFEARRAY*,REFGUID);
WINOLEAUTAPI SafeArrayGetIID(SAFEARRAY*,GUID*);
WINOLEAUTAPI_(void) VariantInit(VARIANTARG*);
WINOLEAUTAPI VariantClear(VARIANTARG*);
WINOLEAUTAPI VariantCopy(VARIANTARG*,VARIANTARG*);
WINOLEAUTAPI VariantCopyInd(VARIANT*,VARIANTARG*);
WINOLEAUTAPI VariantChangeType(VARIANTARG*,VARIANTARG*,unsigned short,VARTYPE);
WINOLEAUTAPI VariantChangeTypeEx(VARIANTARG*,VARIANTARG*,LCID,unsigned short,VARTYPE);
WINOLEAUTAPI VarUI1FromI2(short,unsigned char*);
WINOLEAUTAPI VarUI1FromI4(long,unsigned char*);
WINOLEAUTAPI VarUI1FromR4(float,unsigned char*);
WINOLEAUTAPI VarUI1FromR8(double,unsigned char*);
WINOLEAUTAPI VarUI1FromCy(CY,unsigned char*);
WINOLEAUTAPI VarUI1FromDate(DATE,unsigned char*);
WINOLEAUTAPI VarUI1FromStr(OLECHAR*,LCID,unsigned long,unsigned char*);
WINOLEAUTAPI VarUI1FromDisp(LPDISPATCH,LCID,unsigned char*);
WINOLEAUTAPI VarUI1FromBool(VARIANT_BOOL,unsigned char*);
WINOLEAUTAPI VarI2FromUI1(unsigned char,short*);
WINOLEAUTAPI VarI2FromI4(long,short*);
WINOLEAUTAPI VarI2FromR4(float,short*);
WINOLEAUTAPI VarI2FromR8(double,short*);
WINOLEAUTAPI VarI2FromCy(CY cyIn,short*);
WINOLEAUTAPI VarI2FromDate(DATE,short*);
WINOLEAUTAPI VarI2FromStr(OLECHAR*,LCID,unsigned long,short*);
WINOLEAUTAPI VarI2FromDisp(LPDISPATCH,LCID,short*);
WINOLEAUTAPI VarI2FromBool(VARIANT_BOOL,short*);
WINOLEAUTAPI VarI4FromUI1(unsigned char,long*);
WINOLEAUTAPI VarI4FromI2(short,long*);
WINOLEAUTAPI VarI4FromR4(float,long*);
WINOLEAUTAPI VarI4FromR8(double,long*);
WINOLEAUTAPI VarI4FromCy(CY,long*);
WINOLEAUTAPI VarI4FromDate(DATE,long*);
WINOLEAUTAPI VarI4FromStr(OLECHAR*,LCID,unsigned long,long*);
WINOLEAUTAPI VarI4FromDisp(LPDISPATCH,LCID,long*);
WINOLEAUTAPI VarI4FromBool(VARIANT_BOOL,long*);
WINOLEAUTAPI VarR4FromUI1(unsigned char,float*);
WINOLEAUTAPI VarR4FromI2(short,float*);
WINOLEAUTAPI VarR4FromI4(long,float*);
WINOLEAUTAPI VarR4FromR8(double,float*);
WINOLEAUTAPI VarR4FromCy(CY,float*);
WINOLEAUTAPI VarR4FromDate(DATE,float*);
WINOLEAUTAPI VarR4FromStr(OLECHAR*,LCID,unsigned long,float*);
WINOLEAUTAPI VarR4FromDisp(LPDISPATCH,LCID,float*);
WINOLEAUTAPI VarR4FromBool(VARIANT_BOOL,float*);
WINOLEAUTAPI VarR8FromUI1(unsigned char,double*);
WINOLEAUTAPI VarR8FromI2(short,double*);
WINOLEAUTAPI VarR8FromI4(long,double*);
WINOLEAUTAPI VarR8FromR4(float,double*);
WINOLEAUTAPI VarR8FromCy(CY,double*);
WINOLEAUTAPI VarR8FromDate(DATE,double*);
WINOLEAUTAPI VarR8FromStr(OLECHAR*,LCID,unsigned long,double*);
WINOLEAUTAPI VarR8FromDisp(LPDISPATCH,LCID,double*);
WINOLEAUTAPI VarR8FromBool(VARIANT_BOOL,double*);
WINOLEAUTAPI VarR8FromDec(DECIMAL*,double*);
WINOLEAUTAPI VarDateFromUI1(unsigned char,DATE*);
WINOLEAUTAPI VarDateFromI2(short,DATE*);
WINOLEAUTAPI VarDateFromI4(long,DATE*);
WINOLEAUTAPI VarDateFromR4(float,DATE*);
WINOLEAUTAPI VarDateFromR8(double,DATE*);
WINOLEAUTAPI VarDateFromCy(CY,DATE*);
WINOLEAUTAPI VarDateFromStr(OLECHAR*,LCID,unsigned long,DATE*);
WINOLEAUTAPI VarDateFromDisp(LPDISPATCH,LCID,DATE*);
WINOLEAUTAPI VarDateFromBool(VARIANT_BOOL,DATE*);
WINOLEAUTAPI VarCyFromUI1(unsigned char,CY*);
WINOLEAUTAPI VarCyFromI2(short,CY*);
WINOLEAUTAPI VarCyFromI4(long,CY*);
WINOLEAUTAPI VarCyFromR4(float,CY*);
WINOLEAUTAPI VarCyFromR8(double,CY*);
WINOLEAUTAPI VarCyFromDate(DATE,CY*);
WINOLEAUTAPI VarCyFromStr(OLECHAR*,LCID,unsigned long,CY*);
WINOLEAUTAPI VarCyFromDisp(LPDISPATCH,LCID,CY*);
WINOLEAUTAPI VarCyFromBool(VARIANT_BOOL,CY*);
WINOLEAUTAPI VarBstrFromUI1(unsigned char,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromI2(short,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromI4(long,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromR4(float,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromR8(double,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromCy(CY,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromDate(DATE,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromDisp(LPDISPATCH,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBstrFromBool(VARIANT_BOOL,LCID,unsigned long,BSTR*);
WINOLEAUTAPI VarBoolFromUI1(unsigned char,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromI2(short,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromI4(long,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromR4(float,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromR8(double,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromDate(DATE,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromCy(CY,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromStr(OLECHAR*,LCID,unsigned long,VARIANT_BOOL*);
WINOLEAUTAPI VarBoolFromDisp(LPDISPATCH,LCID,VARIANT_BOOL*);
WINOLEAUTAPI VarDecFromR8(double,DECIMAL*);
WINOLEAUTAPI_(ULONG) LHashValOfNameSysA(SYSKIND,LCID,const char*);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?