在VC中Client端需要定义一个接收器Sink类,在该类中实现回调事件处理;
但是在C#客户端中如何完成同样的功能呢?
谢谢。
//////////////
gisnewcomer() ( ) 信誉:100 Blog 加为好友 2007-2-8 15:07:49 得分: 20
可以直接设置事件处理Handler:
事件处理函数:
public static void MyClickEventHandler()
{
MessageBox.Show ("接受到事件click");
}
在创建连接COM对象后设置就可以了:
MyCom app=(MyCom)Marshal.GetActiveObject("MyCOM.Application");
_IMyComEvents_ClickEventHandler clickHandler =
new _IMyComEvents_ClickEventHandler(MyClickEventHandler);
app.Click +=clickHandler;
/////////////
下面关于多个连接点仍然有疑问:
如果只有一个连接点,它为default的:
[default, source] interface IStateEvent;
则Click回调可以那样直接用,但是如果定义多个连接点,在C#端如何添加支持呢?
例如,如果在另外一个连接点接口:[source] interface ICmdResultEvent;中定义了一个函数:
interface ICmdResultEvent : IUnknown
{
[helpstring("method NotifyCmdResult")] HRESULT NotifyCmdResult(CmdResultStruct cmdResult);
};
在C#中对这种非default属性的连接点函数怎样实现呢?
app.NotifyCmdResult +=clickHandler;//报错了!!!!!
谢谢。
2 个解决方案
#1
好像 VS2005 是自动生成 SINK 框架,只要绑定事件就行了
#2
UP
#1
好像 VS2005 是自动生成 SINK 框架,只要绑定事件就行了
#2
UP