使用ATL创建简单ActiveX控件(三) —— 添加连接点

3 篇文章 0 订阅
3 篇文章 0 订阅

创建过程以VS2010为例,分三篇(创建ATL项目、添加方法/属性和枚举、添加连接点)演示。本篇演示添加连接点。

传送门:
使用ATL创建简单ActiveX控件(一) —— 创建ATL项目
使用ATL创建简单ActiveX控件(二) —— 添加方法/属性和枚举

一、添加连接点描述信息
切换到类视图窗口,找到“ATLActiveXDemoLib”并展开,可以看到“IATLAXDemoEvents”源,在其上点击鼠标右键,选择“添加”,再选择“添加方法”,如下图所示:
这里写图片描述
图例的类视图所显示的接口列表中,下方还有一个“IATLAXDemoEvents”源,该“IATLAXDemoEvents”源不是我们要添加接口的目标,最简单的区分方法是双击“IATLAXDemoEvents”源定位“IATLAXDemoEvents”源位置,如果其是被定义在IDL文件中,则是正确的“IATLAXDemoEvents”源。
点击了“添加方法”后,IDE会弹出“添加方法向导”,如下图所示:
这里写图片描述
填写相关信息后点击“完成”,IDE会自动根据填写内容在IDL文件中添加连接点描述信息,如下图所示:
这里写图片描述
二、生成连接点代码
连接点描述信息添加完成后,就可以通过连接点代理生成连接点代码了,在类视图窗口中右键点击类“CATLAXDemo”(也就是第一篇中添加的ATL控件类),在弹出的菜单中选择“添加”->“添加连接点”,如下图所示:
这里写图片描述
图例中还有一个相似的菜单项“实现接口”,该菜单项用于在连接点添加完成后,通过它来完成接口。被完成的接口,VS IDE将不再支持其添加连接点的操作,所以如果将来有可能还会添加连接点,就不要“实现接口”。
添加连接点后,VS IDE会自动根据IDL文件中连接点的描述信息在控件项目中添加连接点代码,如下图所示:
这里写图片描述
该函数所需的功能都已经实现,只需要在需要触发连接点的地方调用连接点函数即可。
三、在容器中使用连接点
1、注册控件
以管理员身份打开命令行,使用”regsvr32”命令注册控件,如下图所示:
这里写图片描述
2、使用IDE在控件容器中加载控件
创建控件容器(比如MFC Dialog项目)后,打开工具箱项,选择刚才编写的“ATLAXDemo”控件再点击“添加”将控件添加到项目工具箱中,如下图所示:
这里写图片描述
此时,打开项目工具箱可以看到“ATLAXDemo class”已经添加为工具箱的最后一项,如下图所示:
这里写图片描述
在容器中加载控件(比如在MFC Dialog项目中,在资源界面打开主Dialog,从工具箱中将“ATLAXDemo class”控件拖到主Dialog中,假定控件ID为“IDC_ACTIVEXCONTROL1”),再打开控件对象的属性窗口,切换到事件界面,可以在事件列表中看到前面定义的“TestConnectPoint”连接点,编辑添加事件响应函数“ActiveXCtrlEventSink”,如下图所示:
这里写图片描述
添加事件响应函数并回车确认后,IDE将后自动在项目添加事件响应函数的实现代码,H文件中的声明内容如下图所示:
这里写图片描述
其中,宏DECLARE_EVENTSINK_MAP()用于定义事件响应映射,类似于MFC中的DECLARE_MASSAGE_MAP()和ATL中的DECLARE_MSG_MAP()。
CPP文件中的实现内容如下图所示:
这里写图片描述
注意上图的事件映射中被红色标记出来的数字”1“,它代表了该事件映射所绑定的AxtiveXCtrlEventSink()函数所映射的连接点在IDL文件中的编号。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值