




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言工程一、课程目的1. 了解与掌握创建MFC项目的方法。2. 了解并掌握创建菜单并绑定点击事件。3. 了解与掌握创建对话框、创建通用对话框。4. 了解与掌握弹出消息框,并建立消息映射。5. 了解与掌握读取二进制文件。6. 了解与掌握在程序里绘制直线、折线、弧线、饼图、矩形和椭圆、以及如何清屏和发出声音。二、 课程内容创建一个MFC项目、在此基础上创建菜单并绑定点击事件、创建对话框、创建通用对话框、弹出消息框、消息映射、读取二进制文件、在程序里绘制直线、折现、弧线、饼图、矩形和椭圆,以及如何清屏和发出声音等内容。三、 实验仪、设备:计算机、VC 6.0四、 实验步骤(1) 创建一个MFC项目1、建立基本的MFC文本菜单 首先创建MFC 应用框架,如下图建立 MFC AppWisardexe文件2、创建单文本文件3、然后一路next 就可以产生一个标准的MFC文本文件框了。(2) 创建菜单并绑定点击事件Resourceview中主要是生成的MFC文本文件所用到的控件,点击其中Menu前面的加号双击箭头所指处进入框架编辑页面。如下右图就是要显示显示页面的结构。在页面编辑区双击小红椭圆圈起的控件就会弹出对属性对话框,在caption处添加主菜单名称。双击下图的小蓝圈处添加子菜单,弹出属性对话框在ID处添加ID变量,方便以后编程中调用。当子菜单名称(caption)添加完成以后,右击子菜单出现浮动菜单选择classWizard,如图1所示箭头指向处,出现图2,然后再message选项栏中选择COMMAND,定义它的(COMMAND)控制函数,这样我们在点击子菜单的时候,就能触发控制函数。点击Add function添加控制函数,然后编辑代码 edit code。 COMMAND 对应的是当操作者点击下拉菜单时(例丰璐一号),它所对应触发的事件。点击 edit code以后就会出现源码编辑区(在fileview中source file中的mainfram.cpp中)。在箭头所指区域中进行代码的编辑。每次添加新的函数即:add function时,VC会自动在CMainFrame.h。这个头文件中加入一个函数声明。而且会在 CMainFrame.cpp消息映射区域中自动生成ON_COMMAND(),或者是 ON_UPDATE_COMMAND_UI(),来出动控制函数,举个例子ON_COMMAND(ID_MOVE1,ONMove1),就是表示当出动ID_MOVE1所对应的框架按钮时,就会触动ONMove1这个函数,ONMove1就是MainFrame这个类的一个函数。编辑相应的控制动作,只需要在ONMove1函数中编写即可。(3) 弹出对话框MessageBox(NULL,TEXT(HELLO!),NULL,MB_OK);(4) 消息映射可以接收消息和命令的所有框架类都有自已的消息映射。框架利用消息映射把消息、命令与它们的处理函数链接起来。从CCmdTarget类派生的任何类都可以有消息映射。虽然叫作“消息映射”,但消息映射既可以处理消息,也可以处理命令。消息主要有三种类型,即windows消息,命令消息和控件通知。实现方法:MFC消息映射机制的具体实现方法是:在每个能接收和处理消息的类中,定义一个消息和消息函数对照表,即消息映射表。在消息映射表中,消息与对应的消息处理函数指针是成对出现的。某个类能处理的所有消息及其对应的消息处理函数的地址都列在这个类对应的静态表中。当有消息需要处理时,程序只要搜索该消息静态表,查看表中是否含有该消息,就可知道该类能否处理此消息。如果能处理该消息,则同样依照静态表很容易找到并调用对应的消息处理函数。(5) 读取二进制文件CFilef;CFileExceptione;char*pFileName=test.dat;if(!f.Open(pFileName,CFile:modeCreate|CFile:modeWrite,&e)#ifdef_DEBUGafxDumpFilecouldnotbeopenede.m_causen;#endif(6) 在程序里绘制直线、折线、弧线、饼图、矩形和椭圆,以及如何清屏和发出声音。1.调用颜色对话框:void CTestView:OnColor() CColorDialog dlg;if(dlg.DoModal()=IDOK)cor=dlg.GetColor();2.声明画笔的语句是:CPen pen;pen.CreatePen(PS_SOLID,1,m_CurrentPenColor);dc.SelectObject(&pen);3.声明画刷的语句是:CBrush brush(m_CurrentBrushColor);dc.SelectObject(&brush);4.画直线的语句:dc.MoveTo(sx,sy); dc.LineTo(ex,ey);具体实现方法:void CTestView:OnZhixian() CClientDC dc(this);CPen pen1;pen1.CreatePen(PS_SOLID,1,cor);zhixian dlg; dlg.m_sx=150;dlg.m_sy=100; dlg.m_ex=320;dlg.m_ey=300;if(dlg.DoModal()=IDOK) s_point=dlg.m_sx;s_time=dlg.m_sy;e_point=dlg.m_ex;e_time=dlg.m_ey; dc.SelectObject(&pen1);dc.MoveTo(s_point,s_time);dc.LineTo(e_point,e_time);5.画折线的语句:POINT pts=n1,n2,n3,n4,n5,n6,n7,n8;dc.Polyline(pts,4);void CTestView:OnPolyline() CClientDC dc(this);CBrush brush(RGB(255,255,0); CPen pen1;pen1.CreatePen(PS_SOLID,1,cor);POINT pts = 500,193,400,107,323,160;dc.SelectObject(&pen1);dc.Polyline(pts,3);6.画弧线的语句:dc.Arc(m_sx,m_sy,m_ex,m_ey,m_hsx,m_hsy,m_hex,m_hey);具体实现方法:void CTestView:OnHuxian() CClientDC dc(this);CPen pen1;pen1.CreatePen(PS_SOLID,1,cor);dialogArc dlg;dlg.m_sx=250;dlg.m_sy=250;dlg.m_ex=350;dlg.m_ey=350;dlg.m_hsx=270;dlg.m_hsy=270;dlg.m_hex=310;dlg.m_hey=310;if(dlg.DoModal()=IDOK) m_sx=dlg.m_sx;m_sy=dlg.m_sy;m_ex=dlg.m_ex;m_ey=dlg.m_ey;m_hsx=dlg.m_hsx;m_hsy=dlg.m_hsy;m_hex=dlg.m_hex;m_hey=dlg.m_hey;dc.SelectObject(&pen1);dc.Arc(m_sx,m_sy,m_ex,m_ey,m_hsx,m_hsy,m_hex,m_hey);7.画饼图的语句:dc.Pie(sx3,sy3,ex4,ey4,lox1,loy1,rdx2,rdy2);void CTestView:OnPie() / TODO: Add your command handler code hereCClientDC dc(this);CPen pen1;pen1.CreatePen(PS_SOLID,1,cor);dialogArc dlg; dlg.m_sx=250;dlg.m_sy=250; dlg.m_ex=350;dlg.m_ey=350; dlg.m_hsx=270;dlg.m_hsy=270; dlg.m_hex=310;dlg.m_hey=310;if(dlg.DoModal()=IDOK) m_sx=dlg.m_sx; m_sy=dlg.m_sy;m_ex=dlg.m_ex; m_ey=dlg.m_ey;m_hsx=dlg.m_hsx; m_hsy=dlg.m_hsy;m_hex=dlg.m_hex; m_hey=dlg.m_hey;dc.SelectObject(&pen1);dc.Pie(m_sx,m_sy,m_ex,m_ey,m_hsx,m_hsy,m_hex,m_hey);8.画矩形的语句:dc.Rectangle(sx,sy,ex,ey);具体实现方法:void CTestView:OnJuxing() CClientDC dc(this); CBrush b1; b1.CreateSolidBrush(cor); zhixian dlg; dlg.m_sx=150; dlg.m_sy=100; dlg.m_ex=320; dlg.m_ey=300;if(dlg.DoModal()=IDOK) s_point=dlg.m_sx; s_time=dlg.m_sy;e_point=dlg.m_ex; e_time=dlg.m_ey; CBrush *brush1=dc.SelectObject(&b1);dc.Rectangle(s_point,s_time,e_point,e_time);实验结果:9.画椭圆的语句:dc.Ellipse(sx,sy,ex,ey);具体实现方法:void CTestView:OnTuoyuan() CClientDC dc(this);CBrush b1; b1.CreateSolidBrush(cor); dialogArc dlg; dlg.m_sx=250;dlg.m_sy=250; dlg.m_ex=350;dlg.m_ey=350; dlg.m_hsx=270;dlg.m_hsy=270; dlg.m_hex=310;dlg.m_hey=310;if(dlg.DoModal()=IDOK) m_sx=dlg.m_sx; m_sy=dlg.m_sy;m_ex=dlg.m_ex; m_ey=dlg.m_ey;m_hsx=dlg.m_hsx; m_hsy=dlg.m_hsy;m_hex=dlg.m_hex; m_hey=dlg.m_hey;CBrush *brush1=dc.SelectObject(&b1);dc.Pie(m_sx,m_sy,m_ex,m_ey,m_hsx,m_hsy,m_hex,m_hey);实验效果:10.画二维剖面的语句void CTestView:draw1()CClientDC dc(this); CBrush brush(RGB(255,255,0); int i,j,a; int x0,x1,y0,y1; char aa,re10; FILE *fp; if(fp=fopen(or.dat,rb)=NULL) printf(cannot open filen); for(j=0;j=(2200-1500)/4;j=j+25) itoa(j*4+1500,re,10); dc.TextOut(1,98+j,re); dc.MoveTo(35,100+j); dc.LineTo(500,100+j); dc.MoveTo(40,100); dc.LineTo(500,100); for(i=0;i320-250+1;i=i+10) itoa(i+250,re,10); dc.TextOut(40+i*4,80,re); dc.MoveTo(50+i*4,95); dc.LineTo(50+i*4,100); dc.MoveTo(70+i*4,95); dc.LineTo(70+i*4,100); dc.TextOut(450,75,CDP); CBrush brush2(RGB(0,0,0); CBrush* pOldBrush = dc.SelectObject(&brush2); POINT pts = 500,93,500,107,523,100; dc.Polygon(pts,3); dc.SelectObject(pOldBrush); fseek(fp,(s_point-250)*176,0); for(i=0;ie_point-s_point+1;i+) fseek(fp,(s_time-1500)/4,1); x0=(i+s_point-250)*4+50; for(j=0;j=65&j0) dc.MoveTo(i+s_point-250)*4+50,y0);dc.LineTo(x1,y0); x0=x1; fseek(fp,(2200-e_time)/4,1); fclose(fp);实验效果:10.清屏的语句:system(cls);需要调用头文件#include stdlib.h#include 具体实现方法:void CTestView:Onqingping() system(cls);五、 心得体会通过这门课程的学习,使我对C语言有了进一步的直观认识,但是对于项目的制作(如在程序里绘制直线、折线、弧线、饼图、矩形和椭圆、以及如何清屏和发出声音。)感觉到有些吃力,在老师与同学的帮助下,比较满意的完成此门课程的学习,如果想进一步的深入学习,就需要我们自己在课余时间对算法的流程进行更加深入的学习,才能更加明了的认识和熟悉MFC。在科技高度发展的今天,计算机在人们之中的作用越来越突出。而c语言作为一种计算机的语言,我们学习它,有助于我们更好的了解计算机,与计算机进行交流,因此,c语言的学习对我们尤其重要。C语言工程是一门理论性和实践性都很强的专业选修课,也是一门综合性的技术基础学科,它是要掌握C语言方面所涉及的基础理论。许多测试理论和方法只有通过实际验证才能加深理解并真正掌握。实验就是使学生加深理解所学基础知识,掌握C语言的基本原理和适用范围;具有创建MFC,在其内编写各种的对象及应用能力;具有实验处理能力;得到基本实验技能的训练与分析能力的训练,使我初步掌握MFC技术的基本方法,具有初步独立进行编写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 岗位定置化管理制度
- 综合超市卫生管理制度
- 社区耗材采购管理制度
- 工地材料库管理制度
- 药品保证安全管理制度
- 网络平台审批管理制度
- 维修检查设备管理制度
- 药品库房安全管理制度
- 局严格经费管理制度
- 舞蹈老师课堂管理制度
- 安全生产管理台账(合集)
- 福建省厦门市第一中学2025届七下英语期末质量跟踪监视试题含答案
- 2024年吉林省国资委监管企业招聘真题
- 2025年霍州煤电招聘笔试冲刺题(带答案解析)
- 大学语文试题及答案 二
- 2025年 汾西矿业井下岗位高校毕业生招聘考试笔试试题(山西省)含答案
- 结构动力学完整版本
- 2025年八年级数学下学期期末总复习八年级数学下学期期末测试卷(2)(学生版+解析)
- 农村供水水质管理制度
- 五年级(下)语文选择题专项165道
- 石油化工工程防渗技术规范
评论
0/150
提交评论