📄 oleauto.h
字号:
/* API to retrieve the secondary(altername) month names
Useful for Hijri, Polish and Russian alternate month names
*/
WINOLEAUTAPI GetAltMonthNames(LCID lcid, LPOLESTR * * prgp);
/*---------------------------------------------------------------------*/
/* Format */
/*---------------------------------------------------------------------*/
WINOLEAUTAPI VarFormat(LPVARIANT pvarIn, LPOLESTR pstrFormat, int iFirstDay, int iFirstWeek, ULONG dwFlags, BSTR *pbstrOut);
WINOLEAUTAPI VarFormatDateTime(LPVARIANT pvarIn, int iNamedFormat, ULONG dwFlags, BSTR *pbstrOut);
WINOLEAUTAPI VarFormatNumber(LPVARIANT pvarIn, int iNumDig, int iIncLead, int iUseParens, int iGroup, ULONG dwFlags, BSTR *pbstrOut);
WINOLEAUTAPI VarFormatPercent(LPVARIANT pvarIn, int iNumDig, int iIncLead, int iUseParens, int iGroup, ULONG dwFlags, BSTR *pbstrOut);
WINOLEAUTAPI VarFormatCurrency(LPVARIANT pvarIn, int iNumDig, int iIncLead, int iUseParens, int iGroup, ULONG dwFlags, BSTR *pbstrOut);
WINOLEAUTAPI VarWeekdayName(int iWeekday, int fAbbrev, int iFirstDay, ULONG dwFlags, BSTR *pbstrOut);
WINOLEAUTAPI VarMonthName(int iMonth, int fAbbrev, ULONG dwFlags, BSTR *pbstrOut);
WINOLEAUTAPI VarFormatFromTokens(LPVARIANT pvarIn, LPOLESTR pstrFormat, LPBYTE pbTokCur, ULONG dwFlags, BSTR *pbstrOut, LCID lcid);
WINOLEAUTAPI VarTokenizeFormatString(LPOLESTR pstrFormat, LPBYTE rgbTok, int cbTok, int iFirstDay, int iFirstWeek, LCID lcid, int *pcbActual);
/*---------------------------------------------------------------------*/
/* ITypeLib */
/*---------------------------------------------------------------------*/
typedef ITypeLib * LPTYPELIB;
/*---------------------------------------------------------------------*/
/* ITypeInfo */
/*---------------------------------------------------------------------*/
typedef LONG DISPID;
typedef DISPID MEMBERID;
#define MEMBERID_NIL DISPID_UNKNOWN
#define ID_DEFAULTINST -2
/* Flags for IDispatch::Invoke */
#define DISPATCH_METHOD 0x1
#define DISPATCH_PROPERTYGET 0x2
#define DISPATCH_PROPERTYPUT 0x4
#define DISPATCH_PROPERTYPUTREF 0x8
typedef ITypeInfo * LPTYPEINFO;
/*---------------------------------------------------------------------*/
/* ITypeComp */
/*---------------------------------------------------------------------*/
typedef ITypeComp * LPTYPECOMP;
/*---------------------------------------------------------------------*/
/* ICreateTypeLib */
/*---------------------------------------------------------------------*/
typedef ICreateTypeLib * LPCREATETYPELIB;
typedef ICreateTypeInfo * LPCREATETYPEINFO;
/*---------------------------------------------------------------------*/
/* TypeInfo API */
/*---------------------------------------------------------------------*/
/* compute a 16bit hash value for the given name
*/
#ifdef _WIN32
WINOLEAUTAPI_(ULONG) LHashValOfNameSysA(SYSKIND syskind, LCID lcid,
LPCSTR szName);
#endif
WINOLEAUTAPI_(ULONG)
LHashValOfNameSys(SYSKIND syskind, LCID lcid, const OLECHAR * szName);
#define LHashValOfName(lcid, szName) \
LHashValOfNameSys(SYS_WIN32, lcid, szName)
#define WHashValOfLHashVal(lhashval) \
((USHORT) (0x0000ffff & (lhashval)))
#define IsHashValCompatible(lhashval1, lhashval2) \
((BOOL) ((0x00ff0000 & (lhashval1)) == (0x00ff0000 & (lhashval2))))
/* load the typelib from the file with the given filename
*/
WINOLEAUTAPI LoadTypeLib(const OLECHAR *szFile, ITypeLib ** pptlib);
/* Control how a type library is registered
*/
typedef enum tagREGKIND
{
REGKIND_DEFAULT,
REGKIND_REGISTER,
REGKIND_NONE
} REGKIND;
WINOLEAUTAPI LoadTypeLibEx(LPCOLESTR szFile, REGKIND regkind,
ITypeLib ** pptlib);
/* load registered typelib
*/
WINOLEAUTAPI LoadRegTypeLib(REFGUID rguid, WORD wVerMajor, WORD wVerMinor,
LCID lcid, ITypeLib ** pptlib);
/* get path to registered typelib
*/
WINOLEAUTAPI QueryPathOfRegTypeLib(REFGUID guid, USHORT wMaj, USHORT wMin,
LCID lcid, LPBSTR lpbstrPathName);
/* add typelib to registry
*/
WINOLEAUTAPI RegisterTypeLib(ITypeLib * ptlib, OLECHAR *szFullPath,
OLECHAR *szHelpDir);
/* remove typelib from registry
*/
WINOLEAUTAPI UnRegisterTypeLib(REFGUID libID, WORD wVerMajor,
WORD wVerMinor, LCID lcid, SYSKIND syskind);
WINOLEAUTAPI CreateTypeLib(SYSKIND syskind, const OLECHAR *szFile,
ICreateTypeLib ** ppctlib);
WINOLEAUTAPI CreateTypeLib2(SYSKIND syskind, LPCOLESTR szFile,
ICreateTypeLib2 **ppctlib);
/*---------------------------------------------------------------------*/
/* IDispatch implementation support */
/*---------------------------------------------------------------------*/
typedef IDispatch * LPDISPATCH;
typedef struct tagPARAMDATA {
OLECHAR * szName; /* parameter name */
VARTYPE vt; /* parameter type */
} PARAMDATA, * LPPARAMDATA;
typedef struct tagMETHODDATA {
OLECHAR * szName; /* method name */
PARAMDATA * ppdata; /* pointer to an array of PARAMDATAs */
DISPID dispid; /* method ID */
UINT iMeth; /* method index */
CALLCONV cc; /* calling convention */
UINT cArgs; /* count of arguments */
WORD wFlags; /* same wFlags as on IDispatch::Invoke() */
VARTYPE vtReturn;
} METHODDATA, * LPMETHODDATA;
typedef struct tagINTERFACEDATA {
METHODDATA * pmethdata; /* pointer to an array of METHODDATAs */
UINT cMembers; /* count of members */
} INTERFACEDATA, * LPINTERFACEDATA;
/* Locate the parameter indicated by the given position, and
* return it coerced to the given target VARTYPE (vtTarg).
*/
WINOLEAUTAPI DispGetParam(DISPPARAMS * pdispparams, UINT position,
VARTYPE vtTarg, VARIANT * pvarResult, UINT * puArgErr);
/* Automatic TypeInfo driven implementation of IDispatch::GetIDsOfNames()
*/
WINOLEAUTAPI DispGetIDsOfNames(ITypeInfo * ptinfo, OLECHAR ** rgszNames,
UINT cNames, DISPID * rgdispid);
/* Automatic TypeInfo driven implementation of IDispatch::Invoke()
*/
WINOLEAUTAPI DispInvoke(void * _this, ITypeInfo * ptinfo, DISPID dispidMember,
WORD wFlags, DISPPARAMS * pparams, VARIANT * pvarResult,
EXCEPINFO * pexcepinfo, UINT * puArgErr);
/* Construct a TypeInfo from an interface data description
*/
WINOLEAUTAPI CreateDispTypeInfo(INTERFACEDATA * pidata, LCID lcid,
ITypeInfo ** pptinfo);
/* Create an instance of the standard TypeInfo driven IDispatch
* implementation.
*/
WINOLEAUTAPI CreateStdDispatch(IUnknown * punkOuter, void * pvThis,
ITypeInfo * ptinfo, IUnknown ** ppunkStdDisp);
/* Low-level helper for IDispatch::Invoke() provides machine independence
* for customized Invoke().
*/
WINOLEAUTAPI DispCallFunc(void * pvInstance, ULONG oVft, CALLCONV cc,
VARTYPE vtReturn, UINT cActuals, VARTYPE * prgvt,
VARIANTARG ** prgpvarg, VARIANT * pvargResult);
/*---------------------------------------------------------------------*/
/* Active Object Registration API */
/*---------------------------------------------------------------------*/
/* flags for RegisterActiveObject */
#define ACTIVEOBJECT_STRONG 0x0
#define ACTIVEOBJECT_WEAK 0x1
WINOLEAUTAPI RegisterActiveObject(IUnknown * punk, REFCLSID rclsid,
DWORD dwFlags, DWORD * pdwRegister);
WINOLEAUTAPI RevokeActiveObject(DWORD dwRegister, void * pvReserved);
WINOLEAUTAPI GetActiveObject(REFCLSID rclsid, void * pvReserved,
IUnknown ** ppunk);
/*---------------------------------------------------------------------*/
/* ErrorInfo API */
/*---------------------------------------------------------------------*/
WINOLEAUTAPI SetErrorInfo(ULONG dwReserved, IErrorInfo * perrinfo);
WINOLEAUTAPI GetErrorInfo(ULONG dwReserved, IErrorInfo ** pperrinfo);
WINOLEAUTAPI CreateErrorInfo(ICreateErrorInfo ** pperrinfo);
/*---------------------------------------------------------------------*/
/* User Defined Data types support */
/*---------------------------------------------------------------------*/
WINOLEAUTAPI GetRecordInfoFromTypeInfo(ITypeInfo * pTypeInfo,
IRecordInfo ** ppRecInfo);
WINOLEAUTAPI GetRecordInfoFromGuids(REFGUID rGuidTypeLib,
ULONG uVerMajor, ULONG uVerMinor, LCID lcid,
REFGUID rGuidTypeInfo, IRecordInfo ** ppRecInfo);
/*---------------------------------------------------------------------*/
/* MISC API */
/*---------------------------------------------------------------------*/
WINOLEAUTAPI_(ULONG) OaBuildVersion(void);
WINOLEAUTAPI_(void) ClearCustData(LPCUSTDATA pCustData);
// Declare variant access functions.
#if __STDC__ || defined(NONAMELESSUNION)
#define V_UNION(X, Y) ((X)->n1.n2.n3.Y)
#define V_VT(X) ((X)->n1.n2.vt)
#define V_RECORDINFO(X) ((X)->n1.n2.n3.brecVal.pRecInfo)
#define V_RECORD(X) ((X)->n1.n2.n3.brecVal.pvRecord)
#else
#define V_UNION(X, Y) ((X)->Y)
#define V_VT(X) ((X)->vt)
#define V_RECORDINFO(X) ((X)->pRecInfo)
#define V_RECORD(X) ((X)->pvRecord)
#endif
/* Variant access macros
*/
#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_I2REF(X) V_UNION(X, piVal)
#define V_I4(X) V_UNION(X, lVal)
#define V_I4REF(X) V_UNION(X, plVal)
#define V_I8(X) V_UNION(X, llVal)
#define V_I8REF(X) V_UNION(X, pllVal)
#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_I1(X) V_UNION(X, cVal)
#define V_I1REF(X) V_UNION(X, pcVal)
#define V_UI2(X) V_UNION(X, uiVal)
#define V_UI2REF(X) V_UNION(X, puiVal)
#define V_UI4(X) V_UNION(X, ulVal)
#define V_UI4REF(X) V_UNION(X, pulVal)
#define V_UI8(X) V_UNION(X, ullVal)
#define V_UI8REF(X) V_UNION(X, pullVal)
#define V_INT(X) V_UNION(X, intVal)
#define V_INTREF(X) V_UNION(X, pintVal)
#define V_UINT(X) V_UNION(X, uintVal)
#define V_UINTREF(X) V_UNION(X, puintVal)
#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_BOOL(X) V_UNION(X, boolVal)
#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_ARRAY(X) V_UNION(X, parray)
#define V_ARRAYREF(X) V_UNION(X, pparray)
#define V_BYREF(X) V_UNION(X, byref)
#define V_DECIMAL(X) V_UNION(X, decVal)
#define V_DECIMALREF(X) V_UNION(X, pdecVal)
#ifndef RC_INVOKED
#include <poppack.h>
#endif // RC_INVOKED
#pragma option pop /*P_O_Pop*/
#endif // __OLEAUTO_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -