您的位置:首页 > 其它

VC 2005 VC2008 VC 2010 ACTIVEX 事件 EVENT

2010-11-25 18:12 337 查看
http://www.51zxw.net/study.asp?vip=1368926
由于vc2005在开发activex中有bug,(向导不能生成event),在使用时不能自己封装activex控件类,下面把开发过程
总结如下:
生成event:
1、 在*.idl文件的dispinterface _DXXEvents 的methods: 下添加 //XX:activex控件名
[id(intValue)] void EventName(); //intValue整数值,此event的ID
2、在XXCtrl.h文件的enum下 添加 eventidEventName = intValue
3、在XXCtrl.h文件控件类下添加函数
void EventName()
{
FireEvent(eventidEventName, EVENT_PARAM(VTS_NONE));
}
4、在XXCtrl.cpp文件的BEGIN_EVENT_MAP和END_EVENT_MAP间添加:
EVENT_CUSTOM_ID("EventName", eventidEventName, EventName, VTS_NONE)
经过以上步骤就添加了一个没有参数的Event
如果有参数比如两个参数 BSTR strvalue, LONG lValue
那么相应的添加如下:
1、 [id(intValue)] void EventNam(BSTR strvalue, LONG lValue);
3、不能在线程中调用,POSTMESSAGE到主线程调用
void EventName(LPCTSTR strvalue, LONG lValue)
{
FireEvent(eventidEventName, EVENT_PARAM(VTS_BSTR VTS_I4), strvalue, lValue);
}
4、EVENT_CUSTOM_ID("EventName", eventidEventName, EventName, VTS_BSTR VTS_I4)

方法就采用向导自己生成,包括返回值给JS都可以采用向导生成的函数。

activexID.attachEvent("onXXXevent", onXXXevent);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: