正文

第十九课: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_CREATE和WM_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、    编写相应的客户端(VB与VC下) (本部分略)

阅读(9287) | 评论(1)


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

评论

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