C++博客 :: 首页 :: 联系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用链接

留言簿(48)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 383549
  • 排名 - 55

最新评论

阅读排行榜

评论排行榜

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中部添加上面那行,只有默认的属性表。

 

以上是我在学习过程中的一点总结,本人有相应的全部代码,如有需要者请留下联系方式,我会发给你们的。
  

posted on 2006-06-11 15:48 sdfasdf 阅读(2393) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理