查看文章
 
VC制作ActiveX控件流程以及用到的函数
2007-08-23 17:58

刚做完一个用VC做ActiveX控件的练习,现总结一下:

一。稍作界面(当然如果是以界面为主要元素的话,就不是稍作了)。主要是在Ctrl

类的OnDraw函数中。

二。添加属性。可以通过ClassWizard里的Automation建立。

     1。属性分为stock,Member Variable,Get/Set methods三类。stock表示是系统

自带的包括BackColor,Text等,Member Variable表示创建一个成员变量作为存储该

属性并由一个change函数标示其变化。而Get/Set模式则创建两个变化函数,将赋值和

读取分开来。

     2。建立属性之后,要保存属性的状态(用PX_Short函数,其中short是类型如果

是Long型就用PX_Long)(将此函数置于Ctrl类的DoPropExchange响应中)。

     3。然后通知容器属性已发生改变,使其更新(使用BoundPropertyChanged函数)

     4。如果想将此属性加入到属性页。可在BEGIN_PROPPAGEIDS和END_PROPPAGEIDS之

间设置(位于Ctrl.cpp中)。

三。添加方法。和添加属性一样,也可通过ClassWizard里的Automation建立。

     1。方法和属性类似。也分为stock和custom类型,前者是系统自带,后者为自定

义。

     2。方法的内部函数名和外部接口名不一定完全一样。

四。添加事件。可以通过ClassWizard里的ActiveX Events建立。

     1。同理也分为stock和custom两类。

     2。内部函数名称和对外接口一般是不一样的对外接口为XXX的话一般内部函数为

fireXXX。

     3。事件的特征注定了其没有函数主体。只有一个声明。因为其主体响应部分是在

容器中。在这里可以把它当作一个纯虚函数来对待。

四。其他:

     1。标示控件是在设计状态还是运行状态的函数:AmbientUserMode()设计状态返

回FALSE,运行状态返回TRUE。

     2。设置BackColor和ForeColor等属性时,只会设置其变量存储值,不会立即表现

在界面上,还需要手工调用GetBackColor取得该存储值,然后用CDC的FillRect修改背

景色。ForeColor同理。

     3。注意GetBackColor和GetBkColor的区别,前者取得属性的设置值(不是当前背

景色),后者返回文本区域的背景色(只是文本的底色,不是整个区域的颜色)。

     4。GetBackColor的返回值为OLE_COLOR类型,而CBrush类要求COLORREF类型,可

用TranslateColor函数进行转换。


类别:工作日志||添加到搜藏 |分享到i贴吧|浏览(4938)|评论 (0)
 
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu