- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ActiveX时钟控制
ActiveX时钟控制 1、案例分析 2、对象分析 3、可行性研究 4、代码编程及 实现过程 第一步 案例分析 时钟控制共涉及三个部分:客户、包容器、控件,三者关系如图 ActiveX控制的包容器程序通常是一个表单或对话框,也可以是复合文档的视窗口或文档对象。 ActiveX控制通过控制站点对象与包容器进行交互。控制站点把包容器的环境属性暴露给ActiveX控制,环境属性定义了缺省颜色、字体、对齐方式等,ActiveX控制在运行时刻获取包容器的环境属性。 第二步 对象分析 1、获取当前时间 CTime time = CTime::GetCurrentTime(); CString str = time.Format(%H:%M:%S); pDC-SetTextColor(RGB(255,0,0)); pDC-TextOut( 60,60,str); 2、钟表样式 CSize size; //创建一支黄色的笔,用来画椭圆 CPen Pen(PS_SOLID,3,RGB(0,0,0)); //设置当前画笔,并记下以前的画笔 CPen *OldPen=pDC-SelectObject(Pen); //绘制钟面椭圆 pDC-Ellipse(3,3,Rect.right-3,Rect.bottom+3); 3、属性和方法 BackColor 标准属性,设置控件背景颜色 ForeColor 标准属性,设置控件前景颜色 DrawClick(CDC *pDC, const CRect rcBounds, const CRect rcInvalid) 该方法为自定义方法,表盘放在该方法中 CurrenTime(CDC *pDC, const CRect rcBounds, const CRect rcInvalid) 该方法也为自定义方法,用来得到系统时间 4、响应鼠标的事件 在_DClockEvents里添加了Click事件,该事件为鼠标单击事件。 再添加一个消息响应OnLButtonDown,当按下鼠标左键时,该消息响应。 再此定义了一个自定义属性m_clickflag为bool类型. 第三步 可行性分析 1、用 MFC AppWizard[exe]新建一个对话框,作为包容器。 2、用 MFC ActiveXControlWizard新建一个工程,来得到控件。 第四步 代码编程及实现过程 1、自定义两个方法DrawClick()和CurrenTime() 得到表盘和当前时间,自定义一个属性m_clickflag初始化为true,当击鼠标左键时,OnLButtonDown消息响应,对m_clickflag取反,即m_clickflag=!m_clickflag,在onDraw()函数中调用这两个函数,对m_clickflag做判断为true,调用DrawClick(),否则调用CurrenTime() 对于切换界面,是在两个函数前加如下代码: CRect rect; GetClientRect(rect); CBrush brush(RGB(255,255,255)); pDC-FillRect(rect,brush); 该代码是显示一个控件时,将另一个控件用白色画刷将其刷掉 遇到的问题 当在Dialog中插入控件时,出现下图 在Win7系统中出现了该问题,但在XP系统中可以正常运行,其中的Common/MSDev98/Bin/msdev.exe报错,一直没有解决该问题,只是在XP系统中得到正确运行过程。 void CClockCtrl::DrawClick(CDC *pDC, const CRect rcBounds, const CRect rcInvalid) { CRect rect; GetClientRect(rect); CBrush brush(RGB(255,255,255)); pDC-FillRect(rect,brush); CRect Rect(100,100,150,150); //计算椭圆中心位置 int CenterX=Rect.right/2; int CenterY=Rect.bottom/2; //取当前时间 CTime Time=CTime::GetCurrentTime(); CString str;
您可能关注的文档
最近下载
- 牛奶过敏的诊断、管理和预防意见书(2024).pdf VIP
- 西安2初一新生分班(摸底)数学模拟考试(含答案).doc VIP
- 2025年新版人教版四年级上册英语 四上Unit 4 Helping in the community单元整体教学设计.pdf VIP
- 中国碳化钨项目创业投资方案.docx VIP
- 内能的利用的学案.doc VIP
- 建筑与市政工程防水通用规范试题(含答案).doc
- 《中国儿童生长激素使用情况研究》.pdf VIP
- 万华化学经营分析报告.docx VIP
- 2025年中国PVB中间膜项目商业计划书.docx VIP
- 政府间国际科技创新合作重点专项2017年第二批项目.doc VIP
文档评论(0)