ActiveX控件是微软进军internet的有利武器,市场上形形色色的ActiveX控件也真正地带给了人们便利,下面我简单总结一下MFC开发ActiveX控件的方法。如需要代码者请留下联系方式。
一、在MFC项利用程序向导生成基本的程序框架。
二、修改一下资源试图里的位图,那就是你发布后的控件图标,一定要整的漂亮点。
三、在控件接口下面加入库存属性,就是颜色,标题,字体一类的属性,向导自动添加如下属性入口
BEGIN_DISPATCH_MAP,
DISP_STOCKPROP_CAPTION()
DISP_STOCKPROP_FONT()
DISP_STOCKPROP_FORECOLOR()
END_DISPATCH_MAP()
这些属性只能通过PUT_属性名()和GET_属性名()进行修改。库存属性的值由COloControl来维护,例如设置背景颜色之后,COloControl调用SetBackColor()自动调用OnBackColorChanged()函数是控件无效从而导致重绘
四、添加你的功能函数。
五、添加你得自定义属性。ActiveX控件支持四种自定义属性
DISP_PROPERTY. DISP_PPOPERTY_NOTIFY DISP_PROPERTY_EX DISP_[ROPERTY_PARAM
注意:添加自定义属性要在控件的实现类下,而不是在控件的接口下面。如果你的自定义属性是一个BOOL 型的应和DISP_PPOPERTY_NOTIFY 对应 。
以下是我的自定义属性举例
DISP_PROPERTY_NOTIFY_ID (CMfcCirCtrlCtrl,"CircleShape",dispidCircleShape, m_CircleShape, OnCircleShapeChanged, VT_BOOL)
DISP_PROPERTY_EX_ID(CMfcCirCtrlCtrl, "CircleOffset", dispidCircleOffset, GetCircleOffset, SetCircleOffset, VT_I2)
六、添加事件,这一步也是在控件的实现类下面完成,记住VC.NET中的内部名称不同于VC6中的,.NET中的内部名称和事件名相同,例如你添加一个ClickIn的事件,VC.NET中的内部事件也是ClickIn,而在 VC6中会是Fire_CickIn.
向导作如下添加:
BEGIN_EVENT_MAP(CMfcCirCtrlCtrl, COleControl)
EVENT_CUSTOM_ID("ClickIn", eventidClickIn, ClickIn, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
END_EVENT_MAP()
并在头文件中添加如下代码
void ClickIn(OLE_XPOS_PIXELS x, OLE_YPOS_PIXELS y)
{
FireEvent(eventidClickIn, EVENT_PARAM(VTS_XPOS_PIXELS VTS_YPOS_PIXELS), x, y);
}
七、实现属性表。库存属性在VC6会自动做添加下面一行:
PROPPAGEID(CLSID_CColorPropPage)
而在VC.NET中部添加上面那行,只有默认的属性表。
以上是我在学习过程中的一点总结,本人有相应的全部代码,如有需要者请留下联系方式,我会发给你们的。