正文

第十九课:ActiveX控件2007-09-26 19:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lym51/29686.html

分享到:

第十九课:ActiveX控件

本讲主要内容:

1、  首先认识什么叫ActiveX控件(VB演示MonthView控件与DatePicker控件)

演示一下在VB下的如何得到DTPicker下的日期内容及星期的内容,进而讲到属性,除了属性外还有方法和事件、属性页依次演示。

2、  VB中是很方便的,要是在VC中也能用就好了,开始在VC中演示如何使用ActiveX控件。同上一例子。(更进一步讲到属性、方法、事件的概念及容器与控件之间的关系等概念)演示如何得到日期的各个部分的内容。在此要讲到变体类型的变量(VARIANT结构及CComVariant类型及_variant_t类型的区别与联系)

3、  ActiveX控件中使用的技术分析,为了保证在各种开发工具上都能使用,对于在其内容实现时会有一些具体的要求。(字符串要使用(BSTR),颜色OLE_CORLOR,变体类型)

4、  注册与反注册(Regsvr32.exe工具的使用)

5、  创建一个ActiveX控件的方法,及常用工具的比较

6、  自动动手写一个时钟控件(工具介绍及常用选项说明及向导生成代码分析)

7、  修改图标

8、  OnDraw中增加控件外观代码如下:(注意颜色转换的问题)

CBrush br;

br.CreateSolidBrush(TranslateColor(GetBackColor()));

pdc->FillRect(rcBounds,&br);

CTime tm=CTime::GetCurrentTime();

CString str=tm.Format("%H:%M:%S");

pdc->SetBkMode(TRANSPARENT);

pdc->SetTextColor(TranslateColor(GetForeColor()));

pdc->TextOut(0,0,str);

9、  解决不能自动更新的问题

a)         为控件响应WM_CREATEWM_TIMER事件

b)        OnCreate()中增加

SetTimer(1,1000,NULL);

c)        在响应onTimer中增加

              InvalidateControl();

10、    增加一个新的属性,时间间隔(short  UpdateInterval

a)         OnUpdateIntervalChanged 函数中修改(注:此时应该修改定时器的时间间隔)

SetTimer(1,m_updateInterval,NULL);

b)        进一步分析问题,解决输入时间不正确时的对策,对OnUpdateIntervalChanged函数中的代码做如下修改

       if(m_updateInterval<1000||m_updateInterval>5000)//解决输入值不合要求的问题

              m_updateInterval=1000;

       m_updateInterval=m_updateInterval/1000*1000;//解决输入值不是整数的问题

       SetTimer(1,m_updateInterval,NULL);

       SetModifiedFlag();

11、    增加对字体的支持OnDraw()

       CFont* pOldFont=SelectStockFont(pdc);

       pdc->TextOut(0,0,tm.Format("%H:%M:%S"));

       pdc->SelectObject(pOldFont);

12、    增加一个方法Beep() 

MessageBox(“This is in Beep Method!”);

13、    增加自定义属性页

a)         修改属性页资源

b)        DoPropExchange函数中增加一个相应的属性子项

PX_Short(pPX,"UpdateInterval",m_updateInterval,1000);

c)        增加一个成员变量并将其与属性相关的部分补全

14、    增加系统属性页

修改属性页映射宏

BEGIN_PROPPAGEIDS(CMyActiveXCtrl, 3)

     PROPPAGEID(CMyActiveXPropPage::guid)

     PROPPAGEID(CLSID_CColorPropPage)

     PROPPAGEID(CLSID_CFontPropPage)

END_PROPPAGEIDS(CMyActiveXCtrl)

15、    增加控件事件

a)         系统内部事件OnClick

b)        自定义事件 NewMinute

OnDraw函数中触发,增加如下代码:

       if(tm.GetSecond()==0)

              FireNewMinute();

16、    编写相应的客户端(VBVC)

(本部分略)


阅读(4792) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册