关于ActiveX Control开发总结 MFC篇

本文总结了ActiveX控件的开发过程,包括如何封装控件、设置属性、提供接口函数、处理控件事件、响应用户操作、绘制控件以及异常处理。通过MFC库,详细介绍了添加属性、方法、事件通知的步骤,并提供了相关代码示例。

为了方便的移植及重用自己编写的控件,这时候我们就要用到ActiveX控件技术来封装自己的控件类。

封装一个ActiveX控件需要考虑:

1、提供用户设置的属性。

2、提供用户使用的接口函数。

3、控件事件的通知。

4、控件响应用户的操作。

5、控件的绘制。

6、异常处理。

 

 

添加用户设置属性方法:

 

打开类视图展开XXlib选择控件接口右键菜单添加-〉添加属性打开属性添加向导,设置属性后完成。

在idl文件自动生成代码:

 如果需要怎加自定义的枚举属性可以在之前定义

属性这样声明:

 

在控件头文件中生成代码

 

在控件cpp文件中生成代码

 

添加用户使用的接口函数:

 

与添加属性的方法一样,在添加菜单选择添加方法。

 

添加控件事件的通知

 

打开类视图展开XXlib选择控件事件接口(一般为_DXXXXEvents)右键菜单添加-〉添加方法打开方法添加向导,设置后完成。

COleControl 已经封装了一些内置的事件

事件映射宏如下:

 

函数原型

 

添加自定义的事件通知使用向导后需要编写一些代码,看代码段

 

 

控件响应用户的操作:

一般来说需要响应的是

WM_MOUSEMOVE;WM_LBUTTONDOWN;WM_LBUTTONUP;WM_MOUSELEAVE;WM_RBUTTONDOWN

这里只补充一下关于WM_MOUSELEAVE响应的方法;

首先在MOUSEMOVE函数中使用如下方法让系统通知WM_MOUSELEAVE

 

然后在响应WM_MOUSELEAVE消息后把m_bSetTrack变量重置一下即可

 

控件的绘制:

 

 

void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)

rcBounds为控件绘制大小其实就是控件客户区域,rcInvalid为更新绘制区域

 

 

一般可以使用包装的双缓冲类进行绘制

包装类如下

 

 

调用例子

 

 

 

异常处理:

 

控件异常处理一般来说我基本上没有考虑,但是这个肯定是需要的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值