我要用一个WebLink控件来通过Http与其它远程进程通信,这个WebLink控件与本地IP绑定,并监听一个自己设置的端口,只要有http请求从这个端口发过来就会触发WebLink的Request事件,事件处理函数的参数实际是两个——一个是arguments,就是http字符串中的键名的集合;另一个是values,是与前面arguments中的键名对应的键值的集合,但这个事件处理函数的签名在各种语言环境下都不是很一样,在vb.net和vb中我还能认识,可是到了vc里面我就晕了,不知道怎么使用这个LPDISPATCH类型的参数了。vb.net中:
Private Sub WebLink_Request(ByVal sender As Object, ByVal e As AxMoIMS._DWebLinkEvents_RequestEvent) Handles WebLink.Requestvb中:
Private Sub WebLink_Request(ByVal arguments As Object, ByVal values As Object)vc中:
void CDemoDlg::OnRequestWeblink(LPDISPATCH arguments, LPDISPATCH values)arguments和values实际上都是字符串数组,通过在arguments中查询键名来取values中对应的键值,在vb和vb.net中都很容易实现,但在vc中我搞不定,主要就是那个LPDISPATCH不知道怎么用,还请大家帮忙!

解决方案 »

  1.   

    去看MSDN吧……最好把LPDISPATCH指向的类型的定义拿出来看看……
      

  2.   

    多谢楼上二位to newbiestar:
    “LPDISPATCH指向的类型”是指什么意思?我没怎么研究过com,还请指点一下,或者告诉我到msdn里面去看哪块也行,时间紧迫,多谢!to krh2001:
    WebLink是ESRI公司的MOIMS软件提供的一个控件,是用来开发WebGIS的服务器端程序的,这个控件的功能就是侦听http请求,如果发现有请求过来,就会触发上面提到的request事件。但vb、vb.net下面的参数我还认识,而到了vc下面我就不认得了,其实WebLink控件是干什么用得也没什么关系,那两个参数实际的含义我也知道,就是不会在vc下面怎么用,还请指点一下,万分感谢!
      

  3.   

    似乎LPDISPATCH还和COM扯不上什么关系,不过根据匈牙利命名法,LP开头的是指针,指向的肯定是DISPATCH这个东西……
      

  4.   

    哎, 很明显 LPDISPATCH 是一个 dual 接口指针, 可是 光看这个类型根本不知道它是什么对象. 知道类型就好办了, 调用 arguments->QueryInterface(...)  来取得可以操作的 接口指针就很好操作了, 关键是 不知道具体接口类型, 楼主提供详细一点的资料
      

  5.   

    好,多谢高手指点!我自己已经搞定了,arguments和values都是MapObjects控件(一个用于GIS二次开发的地图控件)Strings类型,是一个String的集合,里面有Count属性,还有Find方法,我通过GetIDsofNames得到了Count的ID,又通过Invoke得到了Count的值,谢谢啦!马上结帖