连接点,connection point,在COM里面也是挺重要的。简单讲,COM里面的连接点就好像是C语言的回调函数,只不过它是基于面向对象实现的。连接点的作用也就是COM对象将一些事件通知客户(调用者)。
先来做一个简单的连接点例子吧,之后再慢慢探讨。
用ATL创建一个工程(DLL COM),取名MyCom,
然后创建一个COM接口,IMyCar. 在options那里选上connection points。
然后在class view那里找到_IMyCarEvents(在MyComLib下面),右键点击Add Method.如图,增加一个方法OnStop。
增加完之后,可以看到IDL文件里面多了个方法,如下图:
library MyComLib
{
importlib("stdole2.tlb");
[
uuid(2CF347A8-63ED-4CE0-8A6D-F98D60C98B8C)
]
dispinterface _IMyCarEvents
{
properties:
methods:
[id(1)] HRESULT OnStop([in] FLOAT Distance);
};
[
uuid(DA6770F3-CBB6-4F34-A137-2B02A27AB219)
]
coclass MyCar
{
[default] interface IMyCar;
[default, source] dispinterface _IMyCarEvents;
};
};
之后在CMyCar上点击右键,选择Add Connection Point。
选择_IMyCarEvents,点击>按钮。然后Finish.