孙鑫 第十八课ActiveX控件

说明

ActiveX控件有三个要素:属性, 方法, 事件

 

 

①属性

比如Button控件的显示文字,名字等。

属性值包括Stock属性和Custom属性,其中Stock属性为控件固有属性,即MFC封装的属性,例如前景色 / 背景色等。

而Custom属性则为用户自己定制的属性,在添加Custom属性时要指定外部名字,即使用者看到的该控件的属性名字;

还要指定内部名字,即控件开发人员在开发控件时使用的名字,通常为一个成员变量(及其类型),用来记录属性值。


需要注意的一点:当用户使用控件时,设定了某个属性的值,关闭下次打开时,在使用者的环境里,Stock属性自动保持上次打开的值,

而Custom属性就要设定其持久性,在MFC中,通过COleControl类的以PX_开头的成员函数设定其持久性,具体选择哪个根据该属性

的类型来定。



②方法

方法也分为Stock方法和Custom方法。

Stock方法不可编辑,添加完以后不能再编写。

Custom方法要指定外部名字,即给使用人员看的名字;内部名字,即控件开发人员看的名字,添加完后即可开始编写该函数的代码。

添加Custom方法可以指定该函数的返回值,参数s。



③事件

事件和方法的不同之处在于:事件是控件开发人员仅仅声明该事件,而事件(Custom)的具体实现代码要由控件使用者完成。


同样,事件也分为Stock事件和Custom事件。

Stock事件仅可以添加,不可以指定内部名字 / 外部名字 / 参数s。

Custom事件添加时还可以指定外部名字,内部名字以及参数s。

Stock事件由于是MFC封装的事件,因此在使用人员只管调用该事件即可,该事件的代码已经由MFC完成。

Custom事件则不光要由使用人员完成事件代码,而且控件开发人员还要在开发时指定该事件的调用时机,即显示地调用该事件。



使用控件

在VC6中使用该控件为例,新建一个基于对话框的MFC应用程序,在对话框上右键->插入控件,选择该控件即可插入。

如果是用菜单  “工程->增加到工程->组件和控件  ” 添加控件,在添加了该控件的同时,还会自动添加一个控件类,用此控件类使用人员便可以像动态创建按钮那样动态创建控件。




几个函数

①TranslateColor

COLORREF   COleControl::TranslateColor(OLE_COLOR  clrColor,  HPALETTE  hpal = NULL);

功能:把一个OLE_COLOR类型转换为COLORREF类型


②PX_开头的函数

eg.

BOOL  PX_Short(CPorpExchange*  pPX, LPCTSTR pszPropName, short& sValue);

函数功能:用来保持Short类型的属性值的持久性。



③InvalidateControl

void  COleControl::InvalidateControl(LPCRECT lpRect = NULL);

函数功能:使控件无效重绘,此时会调用控件类的OnDraw()函数。



④AmbientUserMode

BOOL  COleControl::AmbientUserMode();

函数功能:获得当前控件的容器是在设计模式还是在运行模式,设计模式返回0,运行模式返回非0。



⑤BoundPropertyChanged

void  COleControl::BoundPropertyChanged(DISPID dispid);

函数功能:对于Custom属性,通知容器某该类型属性的值发生变化了,要让容器中该属性值也随之变化,每次改变都要通知。



补充

关于如何用VC6创建ActiveX控件,可见此篇文章http://apps.hi.baidu.com/share/detail/35749885



孙鑫 第十八课ActiveX控件 - 大灰狼 - 大灰狼 的博客




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值