📄 oaidl.idl
字号:
WORD cbAlignment; /* specifies the alignment requirements for
an instance of this type,
0 = align on 64k boundary
1 = byte align
2 = word align
4 = dword align... */
WORD wTypeFlags;
WORD wMajorVerNum; /* major version number */
WORD wMinorVerNum; /* minor version number */
TYPEDESC tdescAlias; /* if typekind == TKIND_ALIAS this field
specifies the type for which this type
is an alias */
IDLDESC idldescType; /* IDL attributes of the described type */
} TYPEATTR, * LPTYPEATTR;
typedef struct tagDISPPARAMS {
[size_is(cArgs)] VARIANTARG * rgvarg;
[size_is(cNamedArgs)] DISPID * rgdispidNamedArgs;
UINT cArgs;
UINT cNamedArgs;
} DISPPARAMS;
cpp_quote("#if 0")
cpp_quote("/* the following is what MIDL knows how to remote */")
typedef struct tagEXCEPINFO {
WORD wCode; /* An error code describing the error. */
WORD wReserved;
BSTR bstrSource; /* A source of the exception */
BSTR bstrDescription; /* A description of the error */
BSTR bstrHelpFile; /* Fully qualified drive, path, and file name */
DWORD dwHelpContext; /* help context of topic within the help file */
ULONG pvReserved;
ULONG pfnDeferredFillIn;
SCODE scode;
} EXCEPINFO;
cpp_quote("#else /* 0 */")
cpp_quote("typedef struct tagEXCEPINFO {")
cpp_quote(" WORD wCode;")
cpp_quote(" WORD wReserved;")
cpp_quote(" BSTR bstrSource;")
cpp_quote(" BSTR bstrDescription;")
cpp_quote(" BSTR bstrHelpFile;")
cpp_quote(" DWORD dwHelpContext;")
cpp_quote(" PVOID pvReserved;")
cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
cpp_quote(" SCODE scode;")
cpp_quote("} EXCEPINFO, * LPEXCEPINFO;")
cpp_quote("#endif /* 0 */")
typedef [v1_enum] enum tagCALLCONV {
CC_FASTCALL = 0,
CC_CDECL = 1,
CC_MSCPASCAL,
CC_PASCAL = CC_MSCPASCAL,
CC_MACPASCAL,
CC_STDCALL,
CC_FPFASTCALL,
CC_SYSCALL,
CC_MPWCDECL,
CC_MPWPASCAL,
CC_MAX /* end of enum marker */
} CALLCONV;
typedef [v1_enum] enum tagFUNCKIND {
FUNC_VIRTUAL,
FUNC_PUREVIRTUAL,
FUNC_NONVIRTUAL,
FUNC_STATIC,
FUNC_DISPATCH
} FUNCKIND;
typedef [v1_enum] enum tagINVOKEKIND {
INVOKE_FUNC = 1,
INVOKE_PROPERTYGET = 2,
INVOKE_PROPERTYPUT = 4,
INVOKE_PROPERTYPUTREF = 8
} INVOKEKIND;
typedef struct tagFUNCDESC {
MEMBERID memid;
[size_is(cScodes)] SCODE * lprgscode;
[size_is(cParams)] ELEMDESC * lprgelemdescParam; /* array of param types */
FUNCKIND funckind;
INVOKEKIND invkind;
CALLCONV callconv;
SHORT cParams;
SHORT cParamsOpt;
SHORT oVft;
SHORT cScodes;
ELEMDESC elemdescFunc;
WORD wFuncFlags;
} FUNCDESC, * LPFUNCDESC;
typedef [v1_enum] enum tagVARKIND {
VAR_PERINSTANCE,
VAR_STATIC,
VAR_CONST,
VAR_DISPATCH
} VARKIND;
/* IMPLTYPE Flags */
const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
typedef struct tagVARDESC {
MEMBERID memid;
LPOLESTR lpstrSchema;
[switch_type(VARKIND), switch_is(varkind)] union {
/* offset of variable within the instance */
[case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
[case(VAR_CONST)] VARIANT * lpvarValue; /* the value of the constant */
};
ELEMDESC elemdescVar;
WORD wVarFlags;
VARKIND varkind;
} VARDESC, * LPVARDESC;
typedef enum tagTYPEFLAGS {
TYPEFLAG_FAPPOBJECT = 0x01,
TYPEFLAG_FCANCREATE = 0x02,
TYPEFLAG_FLICENSED = 0x04,
TYPEFLAG_FPREDECLID = 0x08,
TYPEFLAG_FHIDDEN = 0x10,
TYPEFLAG_FCONTROL = 0x20,
TYPEFLAG_FDUAL = 0x40,
TYPEFLAG_FNONEXTENSIBLE = 0x80,
TYPEFLAG_FOLEAUTOMATION = 0x100,
TYPEFLAG_FRESTRICTED = 0x200,
TYPEFLAG_FAGGREGATABLE = 0x400,
TYPEFLAG_FREPLACEABLE = 0x800,
TYPEFLAG_FDISPATCHABLE = 0x1000,
TYPEFLAG_FREVERSEBIND = 0x2000
} TYPEFLAGS;
typedef enum tagFUNCFLAGS {
FUNCFLAG_FRESTRICTED = 0x1,
FUNCFLAG_FSOURCE = 0x2,
FUNCFLAG_FBINDABLE = 0x4,
FUNCFLAG_FREQUESTEDIT = 0x8,
FUNCFLAG_FDISPLAYBIND = 0x10,
FUNCFLAG_FDEFAULTBIND = 0x20,
FUNCFLAG_FHIDDEN = 0x40,
FUNCFLAG_FUSESGETLASTERROR = 0x80,
FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
FUNCFLAG_FUIDEFAULT = 0x200,
FUNCFLAG_FNONBROWSABLE = 0x400,
FUNCFLAG_FREPLACEABLE = 0x800,
FUNCFLAG_FIMMEDIATEBIND = 0x1000
} FUNCFLAGS;
typedef enum tagVARFLAGS {
VARFLAG_FREADONLY = 0x1,
VARFLAG_FSOURCE = 0x2,
VARFLAG_FBINDABLE = 0x4,
VARFLAG_FREQUESTEDIT = 0x8,
VARFLAG_FDISPLAYBIND = 0x10,
VARFLAG_FDEFAULTBIND = 0x20,
VARFLAG_FHIDDEN = 0x40,
VARFLAG_FRESTRICTED = 0x80,
VARFLAG_FDEFAULTCOLLELEM = 0x100,
VARFLAG_FUIDEFAULT = 0x200,
VARFLAG_FNONBROWSABLE = 0x400,
VARFLAG_FREPLACEABLE = 0x800,
VARFLAG_FIMMEDIATEBIND = 0x1000
} VARFLAGS;
typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
IUnknown * pInterface; /* interface that is responsible for storage */
PVOID pStorage; /* the storage being managed by interface */
DWORD flags; /* which interface, what storage */
} CLEANLOCALSTORAGE;
typedef struct tagCUSTDATAITEM {
GUID guid; /* guid identifying this custom data item */
VARIANTARG varValue; /* value of this custom data item */
} CUSTDATAITEM, * LPCUSTDATAITEM;
typedef struct tagCUSTDATA {
DWORD cCustData; /* number of custom data items in rgCustData */
[size_is(cCustData)] LPCUSTDATAITEM prgCustData;
/* array of custom data items */
} CUSTDATA, * LPCUSTDATA;
}
[
object,
uuid(00020405-0000-0000-C000-000000000046),
pointer_default(unique),
local
]
interface ICreateTypeInfo: IUnknown
{
typedef [unique] ICreateTypeInfo * LPCREATETYPEINFO;
HRESULT SetGuid(
[in] REFGUID guid
);
HRESULT SetTypeFlags(
[in] UINT uTypeFlags
);
HRESULT SetDocString(
[in] LPOLESTR pStrDoc
);
HRESULT SetHelpContext(
[in] DWORD dwHelpContext
);
HRESULT SetVersion(
[in] WORD wMajorVerNum,
[in] WORD wMinorVerNum
);
HRESULT AddRefTypeInfo(
[in] ITypeInfo * pTInfo,
[in] HREFTYPE * phRefType
);
HRESULT AddFuncDesc(
[in] UINT index,
[in] FUNCDESC * pFuncDesc
);
HRESULT AddImplType(
[in] UINT index,
[in] HREFTYPE hRefType
);
HRESULT SetImplTypeFlags(
[in] UINT index,
[in] INT implTypeFlags
);
HRESULT SetAlignment(
[in] WORD cbAlignment
);
HRESULT SetSchema(
[in] LPOLESTR pStrSchema
);
HRESULT AddVarDesc(
[in] UINT index,
[in] VARDESC * pVarDesc
);
HRESULT SetFuncAndParamNames(
[in] UINT index,
[in, size_is((UINT) cNames)]
[in] LPOLESTR * rgszNames,
[in] UINT cNames
);
HRESULT SetVarName(
[in] UINT index,
[in] LPOLESTR szName
);
HRESULT SetTypeDescAlias(
[in] TYPEDESC * pTDescAlias
);
HRESULT DefineFuncAsDllEntry(
[in] UINT index,
[in] LPOLESTR szDllName,
[in] LPOLESTR szProcName
);
HRESULT SetFuncDocString(
[in] UINT index,
[in] LPOLESTR szDocString
);
HRESULT SetVarDocString(
[in] UINT index,
[in] LPOLESTR szDocString
);
HRESULT SetFuncHelpContext(
[in] UINT index,
[in] DWORD dwHelpContext
);
HRESULT SetVarHelpContext(
[in] UINT index,
[in] DWORD dwHelpContext
);
HRESULT SetMops(
[in] UINT index,
[in] BSTR bstrMops
);
HRESULT SetTypeIdldesc(
[in] IDLDESC * pIdlDesc
);
HRESULT LayOut(
void
);
}
[
object,
uuid(0002040E-0000-0000-C000-000000000046),
pointer_default(unique),
local
]
interface ICreateTypeInfo2: ICreateTypeInfo
{
typedef [unique] ICreateTypeInfo2 * LPCREATETYPEINFO2;
HRESULT DeleteFuncDesc(
[in] UINT index
);
HRESULT DeleteFuncDescByMemId(
[in] MEMBERID memid,
[in] INVOKEKIND invKind
);
HRESULT DeleteVarDesc(
[in] UINT index
);
HRESULT DeleteVarDescByMemId(
[in] MEMBERID memid
);
HRESULT DeleteImplType(
[in] UINT index
);
HRESULT SetCustData(
[in] REFGUID guid,
[in] VARIANT * pVarVal
);
HRESULT SetFuncCustData(
[in] UINT index,
[in] REFGUID guid,
[in] VARIANT * pVarVal
);
HRESULT SetParamCustData(
[in] UINT indexFunc,
[in] UINT indexParam,
[in] REFGUID guid,
[in] VARIANT * pVarVal
);
HRESULT SetVarCustData(
[in] UINT index,
[in] REFGUID guid,
[in] VARIANT * pVarVal
);
HRESULT SetImplTypeCustData(
[in] UINT index,
[in] REFGUID guid,
[in] VARIANT * pVarVal
);
HRESULT SetHelpStringContext(
[in] ULONG dwHelpStringContext
);
HRESULT SetFuncHelpStringContext(
[in] UINT index,
[in] ULONG dwHelpStringContext
);
HRESULT SetVarHelpStringContext(
[in] UINT index,
[in] ULONG dwHelpStringContext
);
HRESULT Invalidate(
void
);
HRESULT SetName(
[in] LPOLESTR szName
);
}
[
object,
uuid(00020406-0000-0000-C000-000000000046),
pointer_default(unique),
local
]
interface ICreateTypeLib : IUnknown
{
typedef [unique] ICreateTypeLib * LPCREATETYPELIB;
HRESULT CreateTypeInfo(
[in] LPOLESTR szName,
[in] TYPEKIND tkind,
[out] ICreateTypeInfo ** ppCTInfo
);
HRESULT SetName(
[in] LPOLESTR szName
);
HRESULT SetVersion(
[in] WORD wMajorVerNum,
[in] WORD wMinorVerNum
);
HRESULT SetGuid(
[in] REFGUID guid
);
HRESULT SetDocString(
[in] LPOLESTR szDoc
);
HRESULT SetHelpFileName(
[in] LPOLESTR szHelpFileName
);
HRESULT SetHelpContext(
[in] DWORD dwHelpContext
);
HRESULT SetLcid(
[in] LCID lcid
);
HRESULT SetLibFlags(
[in] UINT uLibFlags
);
HRESULT SaveAllChanges(
void
);
}
[
object,
uuid(0002040F-0000-0000-C000-000000000046),
pointer_default(unique),
local
]
interface ICreateTypeLib2 : ICreateTypeLib
{
typedef [unique] ICreateTypeLib2 * LPCREATETYPELIB2;
HRESULT DeleteTypeInfo(
[in] LPOLESTR szName
);
HRESULT SetCustData(
[in] REFGUID guid,
[in] VARIANT * pVarVal
);
HRESULT SetHelpStringContext(
[in] ULONG dwHelpStringContext
);
HRESULT SetHelpStringDll(
[in] LPOLESTR szFileName
);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -