免费预览已结束,剩余5页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows程序设计课程设计报告 Windows程序设计课程设计报告课题名称:画图小程序班 级:计本08-1班姓 名:X X学 号:XXXXXXXXX指导老师: 2010-11-29目录1 引 言31.1 课题背景31.2 课程设计目的32 功能说明33 系统的实现43.1 视图设计43.2 编辑资源43.3 编程思路及各个函数的实现54 程序功能的测试74.1测试的研究与选择74.2 测试环境75.3 实例测试结果75学习的总结96参考文献10摘 要 : 本课程设计实现的是画椭圆、矩形、直线和随手画功能等。这个画图小程序实现了简单的画图功能,具有简洁大方的图文外观。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息和简易的菜单进行操作。即时准确地获得需要的画图的工具,适合休闲娱乐和简单的画画,对人们的生活有一定的帮助。在课程设计中,系统开发平台为WindowsXP,程序设计设计语言采用Visual C+,在程序设计中,采用了结构化与面向对象两种解决问题的方法。关键词 : 程序设计;画图;MFC;画图函数Ellipse()Restangle()1 引 言1.1 课题背景本课程设计主要在生活中的娱乐,可以在本程序上进行简单的绘图娱乐。 画图是日常生活中有效的工具,能实现简单的画图。本程序是在VC6.0中使用AppWizard创建基于对话框的应用程序。1.2 课程设计目的画图的实现,通过C+语句实现。在视图中实现画线功能,更好的了解MFC、C+等面向对象语言的设计和实现,运用自己所学的一些知识来实现其运用到现实的实践中,从而做到学而有用。2 功能说明本程序可以实现的功能如下:1.运行程序后单击“编辑”菜单,选择“画矩形”后,用鼠标就可以在视图中画出一个矩形。2.选择“画椭圆”,用鼠标就可以在视图中画出一个椭圆。3.选择“画直线”,用鼠标就可以在视图中画出一条直线。4.选择“随手画”,用鼠标就可以在试图中随手画画。5.选择“TOP”就可以让画图窗口一直保持在其他窗口前面。6.窗口右下角显示系统的当前时间。7.将项目的默认图标换成自己设计的图标。3 系统的实现3.1 视图设计利用MFC AppWinzard生成画图应用程序框架具体步骤如下:(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name文本框中输入Draw文本框是指项目的本地路径。(2)由于本程序是实现画线,要在视图中完成,所以首先创建一个基于单文档的应用程序。3.2 编辑资源(1)编辑对话框及控件资源 图3.1编辑对话框利用Visual C+提供的资源编辑器对窗口进行编辑。添加若干菜单。该画图小程序的流程图如下3.2:程序窗口选择你需要的画笔在窗口里用鼠标左键画图形画椭圆画直线画矩形随手画得到图形3.3 编程思路及各个函数的实现实现画矩形、画椭圆和直线,是通过绘图命令的简单的平面几何体,而实现随手画则是画直线集成的结果,所以画矩形调用CDC对象Rectangle()函数,画椭圆调用CDC对象Ellipse()函数等。处理随手画功能,主要在OnMouseMove()函数中进行,用小段直线来记录鼠标的移动过程,时刻以鼠标的新位置作为画线的其实位置进行实现。1.在视图类CdrawView中添加成员变量及函数声明,添加的代码如下: public:CDrawDoc* GetDocument();void ResetAllFlags(); /重新设置所有的标志bool m_bSketch; /是否随手画bool m_bEllipse; /是否画椭圆bool m_bRectangle; /是否画矩形bool m_bLine; /是否画直线CPoint m_startPoint; /起始点坐标CPoint m_LastEndPoint; /结束点坐标2.实现构造函数和各菜单的响应函数,其代码如下:void CDrawView:OnDrawRectangle() ResetAllFlags(); m_bRectangle=true;/设置画矩形 void CDrawView:OnDrawSketch() ResetAllFlags();m_bSketch=true; /设置随手画void CDrawView:OnDrawEllipse() ResetAllFlags(); m_bEllipse=true; /设置画椭圆void CDrawView:OnDrawLine() ResetAllFlags(); m_bLine=true; /设置画直线 下面是为各菜单添加核对标记: void CDrawView:OnUpdateDrawEllipse(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_bEllipse);/椭圆void CDrawView:OnUpdateDrawRectangle(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_bRectangle);/矩形void CDrawView:OnUpdateDrawSketch(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_bSketch);/随手画设置默认标志变量:void CDrawView:ResetAllFlags()m_bRectangle=false;/矩形m_bSketch=false;/随手画m_bEllipse=false;/椭圆m_bLine=false;/直线在状态栏里添加显示系统时间的问题,由于是在状态栏里显示,所以要通过构建一个CstatusBar对象,调用CstatusBar:Create创建状态栏窗口,然后用系统调用函数GetCurrentTime()获得当前时间,再调用格式化字符串的函数Format(“%H:%M:%S”),返回一个按时:分:秒格式的字符串。最后,通过状态栏的文本函数在状态栏中显示当前的时间并更新。还有就是窗口的前置的设置。就是调用如下代码从而实现的:SetWindowPos(AfxGetMainWnd()-m_hWnd,HWND_TOPMOST,-1,-1,-1,-1,SWP_NOMOVE|SWP_NOSIZE);本程序还有很多不完善的地方,由于是调用的是CDC函数,画出来的图形质量还不是很高级,其中我们还可以添加上Color换色函数,达到多种颜色之间的转换。4 程序功能的测试4.1测试的研究与选择测试过程中要判断测试是否成功,要分析程序界面的变化和画图的结果是否正确以及各功能能否正常使用。4.2 测试环境测试环境如下: 测试系统: Windows XP测试工具: Visual Studio C+ 6.0 4.3 实例测试结果1画椭圆的实现:在编辑菜单里选择画椭圆操作结果如下所示: 2画矩形的实现:在编辑栏菜单里选择画矩形 操作结果如下图: 3画直线的实现:在编辑栏菜单里选择画直线 操作结果如下图所示: 4状态栏里时间的实现:运行程序后查看右下角 操作结果如下图所示: 5窗口前置的实现:选择TOP后窗口就可以一直保持在其他窗口的前面。6项目的默认图标换成自己设计的图标。 5学习的总结 在课程设计的实践中,学到很多的知识,积累了不少的经验。课程设计主要是为了实现一个画图程序里的一些功能。其中为了实现画图程序的各个功能,我首先考虑的是这个程序的外观,在编辑选项里把初始化的菜单选项给删除添加上我们画图需要用的几个选项,后又考虑到时间的显示,就在状态栏里加入了系统时间的显示。和窗口的前置问题等。其中画笔的实现和一些细节方面的就在程序里,下面列出一点基本的知识点:1) Windows程序设计中窗口过程的作用是什么?是由谁调用的?答:Windows系统中的每个窗口都有一个相应的窗口过程,用于处理发送或投递到该窗口的所有消息的函数,窗口外观和特性的所有方面取决于窗口过程对这些消息的响应。每个窗口都是某个窗口类的成员,窗口类决定了窗口用来处理它的消息窗口过程。窗口过程函数DefWindowProc。2) 什么是MFC,用MFC编程有什么体验?答:MFC微软基础类(Microsoft Foundation Classes),是一种Application Framework,随微软Visual C+ 开发工具发布。该类库提供一组通用的可重用的类库供开发人员使用。MFC是面向对象程序设计与Application framework的完美结合,他将传统的API进行了分类封装,并且为你创建了程序的一般框架。MFC是对WindowsAPI的封装,大大简化了我们的工作。3) MFC中模态对话框和非模态对话框分别从用户角度和编程角度讲,有什么区别?答:从用户角度模式对话框:在关闭模式对话框之前,程序不能进行其他工作。非模式对话框:模式对话框打开后,程序仍然能够进行其他工作。从编程角度非模态通过调用CDialog:Create函数来启动对话框,在对话框关闭后,用delete操作符删除对话框对象。而模态是调用CDialog:DoModal函数。4) 如何判断MFC中的窗框类对象是否和一个具体窗口相关联?答:Dlg.m_hWnd = 想测试的窗口句柄。5) 在SDI应用程序中,怎样在视图类中获取应用程序的主框架窗框类?答:用函数GetActiveView()在本程序中还有待扩展的地方,由于基本的函数的实现都是自己在看书和总结的情况
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论