我用VC编写一个ActiveX控件,虽然最终成功了,但历程两个月的时间,最后还是存在好多问题,特别是在指针作为参数、VARIANT参数等问题。
请大家谈谈有关编写ActiveX控件时的经验,以免大家在以后的开发工作中再处处面壁。谢谢!其中有一个致命的问题,至今我仍无法解决,就是用VARIANT传递SAFFARRAY时,在BCB里不能正常接收,而VC、VB、Delphi下又可以?唉,这个问题问了十几个论坛,近百个人,都无一能解决!

解决方案 »

  1.   

    对于不定个数参数,可使用SAFEARRAY,但使用方法较为复杂。可以在参数中输入如下的内
    容[in]SAFEARRAY array,并按Attribute…按钮,在Name中选择vararg。按确定后修改idl文
    件在把[in]SAFEARRAY array改为[in]SAFEARRAY(VARIANT) array。然后再打开**Component.
    h文件把该函数的参数SAFEARRAY array改为SAFEARRAY* array。再打开**Component.cpp文件
    修改参数,在函数体内
    使用COleSafeArray类实现该参数的控制,如“COleSafeArray SArray(array,VT_BSTR)”,
    具体操作可查阅MSDN中的该类的成员函数。
      

  2.   

    金刚,没那么复杂吧,用VC自带的SAFEARRAY肯定没错的,问题是BCB在调用上跟VC有啥不同?
    为何VC,VB,Delphi调用通过,就BCB不行呢,怎么说BCB也可是说是VC与Delphi的中介呀!
      

  3.   

    我的经验。c能不写活动x控件就不要写。毕竟ACTIVEX需要注册。比较麻烦。VC不是有个自定义控件吗??写个类。使用那个。VC和VB。delphi有不同的编程思路和思想。很多次锻炼之后我就不怎么用ACTIVEx控件了,当然了如果您已经写成了,那就慢慢改好了用吧。
    也能用得不错。当不是特长。