近日 我在OCX 中接口方法参数中带一个任意类型的数据的实现,即参数可以由用户指定为任意类型的数据,我定义为const VARIANT* 类型的 !问题为:  我本想定义为VARIANT 不使用指针,因为COM中使用本地指针是很危险的事情! 但是在DISP_FUNCTION()宏的接口定义中,VARIANT类型定义为VTS_VARIANT ,但只能用 const VARIANT*的类型在接口的实现中!(即 VTS_VARIANT  = const VARIANT*  或 VARIANT&)
我想问问大家 有没有什么办法解决我的问题!   小弟先 谢谢大家了!

解决方案 »

  1.   

    我以前碰到过, 用 Variant 的指针类型, 不过要是VC调用这个VC编写的ocx还可以,但是用Delphi调用总是有问题;改用一个DWORD传出 一个 far 的地址, 这个方法很好,不过要稍微小心一点!!
      

  2.   

    是这样的! 我是从外部接收一个任意类型数据, 我只是想获取数据,不想采用指针类型!不知你的用DWORD传出 一个 far 的地址是指客户端(调用OCX的组件) 还是我OCX接口这样接收?如果为后者,那我在DISP_FUNCTION()宏的接口定义中 怎么定义他的类型呢?  
    非常感谢!
      

  3.   

    我想一个笨办法,参数只需要一种,字符串即可,我们规定一种格式,在这个字符串中包含所有实际需要的参数,其类型由在字符串中指定。示例如下:
    CString strParam;
    strParam.Format("(0:%d)(2:%f)(5:%d)",nCount,dPrice,dwPointer);
    这里每个括号里面,分号前的数字表示数据类型,比如0代表整型,2代表浮点5代表指针等等,然后将实际的参数值用格式控制符转换到CString中来。在ocx的内部在进行解析。方法很笨,也不知道有没有效?
      

  4.   

    其实我也这样考虑过,只是作为OCX的COM的部件特点就不存在了,会因为数据协议的hard code 而影响其适用范围,我现在的项目是要我提供一个通用的接口出来, 哎   苦哦!我的项目是这样的: 作一个MSMQ 的OCX控件 封装后提供各种接口操作,消息体就要求用不定数据类型, 不知那位老大 可以提供好的建议?  源码最好!小弟 再次感谢大家的关注!! Thanks
      

  5.   

    看来没什么人响应哦! 还是要感谢各位的支持!尤其是 GoldenSword(金错刀)  awingleaf(lxd)  二位的言论 谢谢!!结贴了!