这样也不行,它报错
D:\zjprojects\MapC1\Main.cpp(86) : error C2664: 'ParsePath' : cannot convert parameter 1 from 'const struct tagVARIANT' to 'class CString'

解决方案 »

  1.   

    VC的COM开发与VB的大不相同。
    对于在VB利用References引用的在VC里需要用 #import 引用。然后会导入一些声明。比如IEllipticArc,IEllipticArcPtr...一般使用 IxxxPtr,你可以认为IxxxPtr pAbc;相当于 Dim pAbc as new xxx
    这称为“智能指针”但看来你是要处理事件的,在VC里处理事件比较麻烦,一般你需要写个Sink,也就是接收器,本身就是一个实现IDispatch接口的组件,然后用ConnectionPoint的接口连接上去才能接收事件。VARIANT是一个大的结构体,包括所有的数据类型。可以用一个类_variant_t来操作,字符串是_bstr_t,也可以直接用“=”,但实际上它封装了一些操作。快速学习COM,建议读MSDN中ADO的VC的帮助,因为想必你对ADO应该很熟悉,在ADO帮助里是VBVC对照的。
      

  2.   

    非常感谢!!!!!
    可是我在VC里用&fileNames[i]不是相当于VB例程里的fileNames(i)吗,为什么不对呢
      

  3.   

    我没仔细看你的程序,但我知道,如果fileNames是个 String()的话,没有那么简单。VB的string相当于VC的BSTR而不是CString! 差别很大,内码都不同。
    而VB的数组在内存里根本不是数组,是 SafeArray,操作起来专门有一套SafeArray函数。
    就是说,你要先取出safearray的element,然后再进行BSTR的转换。COM可是很复杂的