ImageVerifierCode 换一换
格式:DOC , 页数:18 ,大小:326.54KB ,
资源ID:2731032      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2731032.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(东南大学MFC实践设计优质报告一.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

东南大学MFC实践设计优质报告一.doc

1、MFC课程设计 ——绘制电路图 姓名: 学号: 指导老师:窦建平 院系:东南大学机械工程学院 日期:.10.10 绘制电路图 摘要内容:本程序可用来绘制简单电路图,程序中有灯泡、电阻、电源、开关、导线、电压表、电流表等常见电路元件。程序可将完成电路图保留,方便下次使用。 关键词:绘制、电路图、保留 Draw The Circuit Diagram  Abstract: This procedure can be used to draw a simple circuit diagram, the light bulb, resist

2、ance, power supply, switch, wire, voltmeter, ammeter and other commonly used circuit element program. The program can be completed save circuit diagram, so that next time you can use. Keywords:Drawing, circuit diagram, preservation. 目 录 第一章 绪论 4 1.1 引言 4 1.2 编程思绪 4 第二章 程序使用 5 2.1 程序界面 5 2

3、2 菜单栏和工具栏 6 2.3 保留和打开 6 第三章 程序代码解析 7 3.1 关键函数及说明 7 3.1.1 View类中关键函数及变量 7 3.1.2 Doc类中关键函数及变量 8 3.1.3 元件类关键函数及变量 9 3.2 编程中碰到问题及处理措施 9 3.2.1 选择按钮后怎样实现元件跟随鼠标移动 9 3.2.2 拖动和删除元件 11 第四章 程序运行测试 14 第五章 总结 17 第六章 附录——未完成电路简化函数 18 第一章 绪论 1.1 引言 从中课时代到大学,电路图一直伴随我们走过了近十年学习生活。而电路图繁琐绘制也为我们学习

4、增添了不少麻烦。我们常常遇见这么情况,在绘制电路时,常常出现一处绘制错误而重新画整幅图情况。而现在有了电路图绘图软件,我们能够轻松增加、拖动、删除错误元件,为电路图绘制提供了效率。大大降低了无须要工作量,让我们愈加轻松学习、绘制电路图。另外,程序设计原本计划加入电路识别,使电路能够自行判定状态并实现对应功效。但电路识别模块所需函数逻辑问题较为复杂,且包含短路、断路、并联、串联等多个模块简化和判定,因为时间原因未能全部完成,本汇报中仅将短路简化和判定函数附在最终,以供参考。 1.2 编程思绪 在本程序编写过程中,采取将各个元件作为一个类方法来实现。将每一个元件经过本身类来完成定义,然后经过程

5、序View类创建类对象并完成Doc中数据存放。每个元件元素均采取中心点方法确定,使程序数据存放愈加简化,节省了存放空间。而在删除某一个元件时,也无需改动元件类函数,只需经过更改Doc类中存放元件中心点坐标,从而使View类在创建函数时所传参数不一样即可实现。 元件绘制也采取较为简单简化画法,即用简单线条替换繁琐元件结构,以元件中心点为基准点,在元件类中调用OnDraw函数,经过Ellipse、Rectangle、Lineto等函数进行圆、矩形、直线简单绘制,使电脑绘制和手绘电路图基础一致,方便打印保留。 第二章 程序使用 状态栏 工具栏 标题栏 绘图区 2.1 程序界面

6、 2.2 菜单栏和工具栏 单击工具栏按钮,如电压表,移动鼠标至绘图区,在所要绘制地方点击鼠标左键,即可绘制出想要图形。若想移除元件,先点击工具栏图标为D按钮,再点击所要删除元件,即可删除。图形拖动时,鼠标左键按住要拖动元件,拖动至所需位置放开鼠标左键,即可完成拖动。绘制导线时,点击导线按钮,在导线起点单击,然后移动鼠标便可绘制出导线轨迹,在导线终点单击鼠标以完成导线绘制。(注:导线暂不支持删除和拖动,菜单栏和工具栏操作相同,不再赘述) 2.3 保留和打开 单击工具栏保留按钮,在弹出以下窗口中输入文件名并保留。打开文件和此相同。 第三章 程序代码解析 3.1 关键函数及说明

7、 3.1.1 View类中关键函数及变量 CEXView::CEXView() // 初始化函数 void CEXView::OnDraw(CDC* pDC) // 创建元件对象并完成视图显示及窗口重绘 void CEXView::OnMouseMove(UINT nFlags, CPoint point) //完成鼠标移动时元件跟随鼠标显示 void CEXView::OnLButtonDown(UINT nFlags, CPoint point) //在鼠标拖动某一元件时对其进行标识 void CEXView::OnLButtonUp(UINT nFlags, CPoin

8、t point) //在鼠标左键抬起时将所绘制图形Doc类对应元件中心统计为鼠标所在位置,并使Doc中统计元件个数变量增加对应数量 void CEXView::OnRes() void CEXView::OnKey() void CEXView::OnLine() void CEXView::OnVol() void CEXView::OnAmm () void CEXView::OnLamp () void CEXView::OnPower() void CEXView::OnDelete() //以上函数均为在点击对应工具栏按钮时,将标识其功效变量置为True,并将其它按

9、钮置为False bool m_lamp,m_line,m_linec,m_power,m_key,m_res,m_amm,m_vol,m_delete;//统计各按钮是否被激活 3.1.2 Doc类中关键函数及变量 CEXDoc::CEXDoc()// 初始化函数 void CEXDoc::Serialize(CArchive& ar) // 数据保留和打开 CPoint lampcenter[100]; CPoint powercenter[100]; CPoint keycenter[100]; CPoint rescenter[100]; CPoint volc

10、enter[100]; CPoint ammcenter[100]; //统计各中心点坐标 CPoint line[100][1000];//统计导线中各点坐标 int m_lampindex, m_keyindex, m_powerindex, m_volindex, m_ammindex, m_resindex, m_lineindex,//统计各元件个数 m_lpindex[100];//统计每根导线中点个数 3.1.3 元件类关键函数及变量 这里仅选择灯泡类为例进行说明: void CLAMP::OnDraw(CDC* pDC)//绘制灯泡元件 CPoint

11、 center;//灯泡中心 3.2 编程中碰到问题及处理措施 3.2.1 选择按钮后怎样实现元件跟随鼠标移动 在网上查得资料得悉,在鼠标移动时,程序会调用OnMouseMove函数,于是在类向导中添加OnMouseMove函数以下: void CEXView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); CEXDoc* pDoc = GetDocument();

12、 lastpoint=point; ASSERT_VALID(pDoc); if(m_lamp==true) { CLAMP lamp; lamp.GetCenter(point); lamp.OnDraw(&dc); } …… CView::OnMouseMove(nFlags, point); } 得到以下结果,能够看出,在鼠标拖动过程中,窗口并没有刷新,加入刷新函数 Invalidate();后不能取得对应效果,从网上查到Invalidate() -- RedrawWindow() -- UpdateWindow()三个函数异同:

13、 Invalidate()是强制系统进行重画,不过不一定就立即进行重画。因为Invalidate()只是通知系统,此 时窗口已经变为无效。强制系统调用WM_PAINT,而这个消息只是Post就是将该消息放入消息队列。当实施到WM_PAINT消息时才会对敞口进行重绘。 UpdateWindow只向窗体发送WM_PAINT消息,在发送之前判定GetUpdateRect(hWnd,NULL,TRUE)看有没有可绘制用户区域,假如没有,则不发送WM_PAINT。 RedrawWindow()则是含有Invalidate()和UpdateWindow()双特征。申明窗口状态为无效,并立即

14、更新窗口,立即调用WM_PAINT消息处理。于是改善后函数变为: CClientDC dc(this); CEXDoc* pDoc = GetDocument(); CRect j(lastpoint.x-40,lastpoint.y+40,lastpoint.x+40,lastpoint.y-40); lastpoint=point; ASSERT_VALID(pDoc); if(m_lamp==true) { CLAMP lamp; lamp.GetCenter(point); RedrawWindow(&j); lamp.OnD

15、raw(&dc); } 加入CRect j;使刷新时不会出现全屏抖动现象。 3.2.2 拖动和删除元件 删除元件和拖动元件全部需要进行元件定位,在鼠标摁下时,要确保其它功效按钮没有被激活。所以在void CEXView::OnLButtonDown(UINT nFlags, CPoint point)中加入以下判定if(m_lamp==false&&m_power==false&&m_key==false&&m_vol==false&&m_amm==false&&m_line==false&&m_res==false&&m_delete==false)。 下面举例说明怎样进行元件拖

16、动: int i,j=0; if(!j) for(i=0;im_lampindex;i++) { if((point.x>pDoc->lampcenter[i].x-11)&&(point.xlampcenter[i].x+11)&&(point.y>pDoc->lampcenter[i].y-11)&&(point.ylampcenter[i].y+11))//鼠标位置在灯泡中心周围即判定为选定灯泡 { j=1; break; } }其中,j表示元件类型,如j=1表示灯泡型

17、 经过以上代码,我们找到了想要确定元件,下面要做就是拖动或删除工作。 if(j) { switch (j) { case 1: { for(;im_lampindex-1;i++) { pDoc->lampcenter[i]=pDoc->lampcenter[i+1];//将现有灯泡中心删除,经过后一位向前一位覆盖方法实现 pDoc->m_lampindex--;//灯泡数量减一 m_lamp=true;激活OnMouseMove函数中灯泡绘制功效 break; } }

18、 } 删除函数和这类似,只是将m_lamp=true换成刷新窗口函数即可 。 第四章 程序运行测试 测试拖动 绘制好电路图 测试保留 测试添加多个相同元件 测试删除 成功打开 测试打开 第五章 总结 在程序编写过程中,对MFC有了愈加清楚认识,愈加体会到C++类封装性。能够随心所欲在各个类之间完成对象定义。学会了从网上查找所需要对应函数,经过类向导增加想要函数,并依据函数功效增添代码。如在OnMouseMove函数中体会到了View函数在整个MFC结构中作用。经过每次刷新窗口,了解到用Doc类存放数据关键性。 MFC编程只是一个工具,而编

19、程关键还是代码实现。我们在使用MFC编程时要想学得愈加好就要不停练习,更具体了解其中多种类、函数,多种工具,MFC是一个巨大工具箱,不过假如不知道工具箱里面工具怎么用,那在好工具也无用武之地。所以,我认为此次编程小实习关键是让我初步接触了MFC怎样实现可视化编程。未来要想真正掌握MFC编程还要不停深入了解多种MFC工具,真正和代码结合起来实现高效实用编程效果。总而言之,MFC就是经过多种类和对象应用完成程序运行。 其次,我要说,在面对自己完全陌生领域,不要退缩,要发挥自己聪慧才智,攻克它。对于MFC,我在短学期开始之前,是完全陌生。于是在整个项目设计过程中,我在图书馆借了相关书籍,一开始,先照着上面例子,修修改改,编写一下,以后慢慢知道了其中原理,也就简单了。即使过程是艰苦,但结果是美妙,当看到它成功运行起来时候,那滋味,真是一个字:爽! 经过这次暑期编程试验,不仅充实了暑期生活,也让我学到了部分新知识,在以后学习生活要主动参与类似活动,加强知识学习,能力提升,为未来职业生涯逐步打下一个坚实基础

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服