用MapX写程序时,有些方法的输入参数和返回值都是VARIANT类型,在VB中用dim pv as variant就可以了,而在Vc中稍微麻烦一点,不过稍微尝试一二,就会发现不过如此了。在vc中主要用COleVariant对象定义variant变量,以下面的例子为说明:
例如:要取得pdataset中某一行某一列的属性值,pfeature,pfield分别表示行和列,要读取某一个值,该值为String类型变量。
COleVariant vRow;
COleVariant vCol;
COleVariant vVal;
vRow.vt = VT_DISPATCH;
vRow.pdispVal = pfeature.m_lpDispatch;
vRow.pdispVal->AddRef();
vCol.vt = VT_DISPATCH;
vCol.pdispVal = pfield.m_lpDispatch;
vCol.pdispVal->AddRef();
vVal = pdataset.GetValue(vRow, vCol);//COleVariant(7L));
vVal.ChangeType(VT_BSTR);
m_strfeaturevalue = vVal.bstrVal;
m_edtfeaturevalue.SetWindowText(m_strfeaturevalue);