日期:2014-05-18  浏览次数:21117 次

OCX组件的事件怎么获取值
我从厂家获得一个OCX组件,其中有个函数A,调用它是会触发事件OnA(long s, short* v, long length)。
我在.net中调用此组件,名字为wap
这个OnA事件在.net中被包装成,wap_OnA(object sender, AxWPALMLib._DWPalmEvents_OnCaptureEvent e),
其中e内包含属性int型s,short型v,int型length
问题:
1、属性 v 在ocx组件是数据的指针,在.net中却变成了short型的。
2、函数A调用后会多次触发OnA事件并返回 s 的值,请问事件OnA怎么能获取连续的 s 值。

在C++bulider中能执行通过,但是在.net中却不能获取值。

------解决方案--------------------
使用out关键字,然后传递e的值,然后再通过其他全局变量获取e.s的值。
代码如下:
//定义变量
private AxWPALMLib._DWPalmEvents_OnCaptureEvent ev = new AxWPALMLib._DWPalmEvents_OnCaptureEvent();
object a = new object();

声明事件处理函数的时候这样:
wap_OnA(object sender, out AxWPALMLib._DWPalmEvents_OnCaptureEvent e)
调用时这样:
wap_OnA(a, out ev)

执行完后用ev.s获取s的值。

这样就可以了。
希望能帮到你。
------解决方案--------------------
探讨

使用out关键字,然后传递e的值,然后再通过其他全局变量获取e.s的值。
代码如下:
//定义变量
private AxWPALMLib._DWPalmEvents_OnCaptureEvent ev = new AxWPALMLib._DWPalmEvents_OnCaptureEvent();
object a = new object();

声明事件处理函数的时候这样:
w……