自动化(Automation)基础概念:变体(Variant)与Dispatch调用(IDispatch)

本文介绍了COM技术中的变体(Variant)和IDispatch接口。Variant是一种能存放多种类型数据的结构,常用于解释型和脚本语言。IDispatch主要用于晚绑定,允许在未知类接口的情况下调用方法,适用于脚本语言的需求。文中还讨论了双接口的概念,它是同时实现IDispatch和虚表调用接口的特殊接口。
摘要由CSDN通过智能技术生成

变体(Variant)与Dispatch调用(IDispatch) 

许式伟 (版权声明)
2007-3-14

在上一篇,我们解释了COM技术基础:COM组件(Component)与接口(Interface)。这里我们聊聊COM技术中的经常会遇到的两个概念:变体(Variant)和IDispatch接口。

变体(Variant)

Variant类型理论上可以存放任何类型的数据,这也是中文很多人称之为“变体”的原因。对于C++这种强类型语言的程序员来说,存在变体(Variant)这样的类型是奇怪的。但是对于哪些淡化类型概念的语言(如Visual Basic等)来说,Variant是它们默认的类型。在VB中,如果没有用As语句声明变量,那么这个变量就是Variant类型的。对于C++程序员来说,Variant不过是一个超复杂的结构体:

typedef /* [wire_marshal] */ struct tagVARIANT VARIANT;

struct tagVARIANT
    {
    union 
        {
        
struct __tagVARIANT
            {
            VARTYPE vt;
            WORD wReserved1;
            WORD wReserved2;
            WORD wReserved3;
            union 
                {
                LONGLONG llVal;
                LONG lVal;
                BYTE bVal;
                SHORT iVal;
                FLOAT fltVal;
                DOUBLE dblVal;
                VARIANT_BOOL boolVal;
                _VARIANT_BOOL 
bool;
                SCODE scode;
       

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值