Visual C++编程欣赏.doc_第1页
Visual C++编程欣赏.doc_第2页
Visual C++编程欣赏.doc_第3页
Visual C++编程欣赏.doc_第4页
Visual C++编程欣赏.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Visual C+编程欣赏一、Visual C+的特点二、基于Visual C+的软件项目设计 2.1 软件开发过程2.1.1 项目计划阶段2.1.2 需求分析阶段2.1.3 软件开发阶段2.1.4 测试阶段2.2 系统设计的步骤2.3 软件开发工具的选择2.4 测试与改错2.4.1 对测试的理解2.4.2 测试方式2.4.3 测试的主要内容与常用方法2.4.4 改错2.5 Visual C+编程规范的制定2.5.1 基本要求 2.5.2 可读性要求2.5.3 结构化要求2.5.4 正确性与容错性要求2.5.5 编程规范示例2.6 软件文档三、MyDraw绘图软件3.1 MyDraw绘图软件的介绍3.1.1 MyDraw绘图软件的特色 1绘图元素对象化 2图形对象的动态修改 3存取操作3.1.2 MyDraw绘图软件的功能功能1:绘图功能功能2:选择功能功能3:修改对象属性功能4:文件存取功能3.1.3 MyDraw软件的客户定位1需要绘制工程现场图的单位2图形程序编程爱好者 3.2 系统设计与选型3.2.1 软件工具的选型3.2.2 MyDraw绘图软件1.0版模块分工设计项目名称:MyDraw文件名:MyDraw.dsw绘图元素类弧线类:CArc椭圆类:CEllipse矩形类:CRectangle文本类:CText直线类:CLine绘图元素属性对话框类椭圆、矩形属性对话框类名称:CEllipseProperties文本属性对话框类名称:CTextProperties直线、弧线属性对话框类名称:CLineProperties自动生成的类文档类名称:CMyDrawDocAbout对话框类名称:CAboutDlg主框架类名称:CMyFrame应用程序类名称:CMyDrawApp视图类名称:CMyDrawView3.3 MyDraw绘图软件1.0版功能模块的创建3.3.1 CLine类记录直线信息Cline类主要有两大功能:定义直线对象的属性和实现直线对象的序列化(完成直线对象与文件之间的存取操作)。Cline类的头文件Line.h的内容如下:/ Line.h: interface for the CLine class./#if _MSC_VER 1000#pragma once#endif / _MSC_VER 1000class CLine:public CObject / DECLARE_DYNAMIC(CLine) DECLARE_SERIAL(CLine)public:bool bIsSelected; /指示直线是否处于选中状态int startX;int startY;int endX;int endY;LOGPEN LinePen; /绘制直线采用的画笔CLine();virtual CLine();void Serialize(CArchive & ar); / Serialize函数用于完成具体的序列化操作。;在Cline类的实现文件Line.cpp中包含Cline类的构造函数以及序列化的代码,内容如下:/ Line.cpp: implementation of the CLine class./#include stdafx.h#include MyDraw.h#include Line.h#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/IMPLEMENT_DYNAMIC(CLine,CObject)IMPLEMENT_SERIAL(CLine,CObject,1)CLine:CLine()/设置各属性默认值bIsSelected=false;startX=0;startY=0;endX=100;endY=100;LinePen.lopnWidth.x=3;LinePen.lopnColor=RGB(0,0,0);LinePen.lopnStyle=PS_SOLID;CLine:CLine()/Serialize函数用于完成具体的序列化操作void CLine:Serialize(CArchive & ar)CObject:Serialize(ar); if(ar.IsLoading() arstartXstartYendXendYLinePen.lopnWidth.xLinePen.lopnColorLinePen.lopnStyle; else arstartXstartYendXendYLinePen.lopnWidth.xLinePen.lopnColor 1000#pragma once#endif / _MSC_VER 1000class CArc :public CObject DECLARE_SERIAL(CArc)public:bool bIsSelected;/指示弧线是否处于选中状态int startX;int startY;int endX;int endY;int Direction;/弧线的方向,逆时针或顺时针,取值为0或1LOGPEN LinePen;CArc();virtual CArc();void Serialize(CArchive & ar);在CArc类的实现文件Arc.cpp中包含CArc类的构造函数以及序列化的代码,内容如下:/ Arc.cpp: implementation of the CArc class./#include stdafx.h#include MyDraw.h#include Arc.h#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/IMPLEMENT_SERIAL(CArc,CObject,1)CArc:CArc()bIsSelected=false;startX=0;startY=0;endX=80;endY=80;Direction=0;LinePen.lopnWidth.x=3;LinePen.lopnColor=RGB(0,0,0);LinePen.lopnStyle=PS_SOLID;CArc:CArc()void CArc:Serialize(CArchive & ar)CObject:Serialize(ar); if(ar.IsLoading() arstartXstartYendXendYDirectionLinePen.lopnWidth.xLinePen.lopnColorLinePen.lopnStyle; else arstartXstartYendXendYDirectionLinePen.lopnWidth.xLinePen.lopnColor 1000#pragma once#endif / _MSC_VER 1000class CEllipse:public CObject / DECLARE_DYNAMIC(CEllipse) DECLARE_SERIAL(CEllipse)public:bool bIsSelected;int startX;int startY;int endX;int endY;LOGPEN LinePen;LOGBRUSH MyBrush;/绘制椭圆采用的画刷CEllipse();virtual CEllipse();void Serialize(CArchive & ar);在CEllipse类的实现文件Ellipse.cpp中包含CEllipse类的构造函数以及序列化的代码,内容如下:/ Ellipse.cpp: implementation of the CEllipse class./#include stdafx.h#include MyDraw.h#include Ellipse.h#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/IMPLEMENT_DYNAMIC(CEllipse,CObject)IMPLEMENT_SERIAL(CEllipse,CObject,1)CEllipse:CEllipse()bIsSelected=0;startX=0;startY=0;endX=100;endY=100;LinePen.lopnWidth.x=3;LinePen.lopnColor=RGB(0,0,0);LinePen.lopnStyle=PS_SOLID;MyBrush.lbColor=RGB(255,255,255);MyBrush.lbHatch=HS_CROSS;MyBrush.lbStyle=BS_NULL;CEllipse:CEllipse()void CEllipse:Serialize(CArchive & ar)CObject:Serialize(ar); if(ar.IsLoading() arstartXstartYendXendYLinePen.lopnWidth.xLinePen.lopnColorLinePen.lopnStyleMyBrush.lbColorMyBrush.lbHatchMyBrush.lbStyle; else arstartXstartYendXendYLinePen.lopnWidth.xLinePen.lopnColorLinePen.lopnStyleMyBrush.lbColorMyBrush.lbHatch 1000#pragma once#endif / _MSC_VER 1000class CRectangle:public CObject DECLARE_SERIAL(CRectangle)public:bool bIsSelected;int startX;int startY;int endX;int endY;LOGPEN LinePen;LOGBRUSH MyBrush;void Serialize(CArchive & ar);CRectangle();virtual CRectangle();在CRectangle类的实现文件Rectangle.cpp中包含CRectangle类的构造函数以及序列化的代码,内容如下:/ Rectangle.cpp: implementation of the CRectangle class./#include stdafx.h#include MyDraw.h#include Rectangle.h#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/IMPLEMENT_SERIAL(CRectangle,CObject,1)CRectangle:CRectangle()bIsSelected=0;startX=0;startY=0;endX=100;endY=100;LinePen.lopnWidth.x=3;LinePen.lopnColor=RGB(0,0,0);LinePen.lopnStyle=PS_SOLID;MyBrush.lbColor=RGB(255,255,255);MyBrush.lbHatch=HS_CROSS;MyBrush.lbStyle=BS_NULL;CRectangle:CRectangle()void CRectangle:Serialize(CArchive & ar)CObject:Serialize(ar); if(ar.IsLoading() arstartXstartYendXendYLinePen.lopnWidth.xLinePen.lopnColorLinePen.lopnStyleMyBrush.lbColorMyBrush.lbHatchMyBrush.lbStyle; else arstartXstartYendXendYLinePen.lopnWidth.xLinePen.lopnColorLinePen.lopnStyleMyBrush.lbColorMyBrush.lbHatch 1000#pragma once#endif / _MSC_VER 1000class CText :public CObject DECLARE_SERIAL(CText)public:bool bIsSelected;int startX;int startY;int endX;int endY;int BkMode;/文本背景是否透明,取值为0或1CString MyText;/文本对象显示的文本LOGFONT MyFont;/文本的字体COLORREF MyColor;/文本的颜色CText();virtual CText();void Serialize(CArchive & ar);在CText类的实现文件Text.cpp中包含CText类的构造函数以及序列化的代码,内容如下:/ Text.cpp: implementation of the CText class./#include stdafx.h#include MyDraw.h#include Text.h#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE=_FILE_;#define new DEBUG_NEW#endif/ Construction/Destruction/IMPLEMENT_SERIAL(CText,CObject,1)CText:CText()bIsSelected=false;startX=0;startY=0;endX=100;endY=100;BkMode=TRANSPARENT;MyText=MyDraw;MyColor=RGB(0,0,0);MyFont.lfCharSet=DEFAULT_CHARSET;MyFont.lfClipPrecision=CLIP_DEFAULT_PRECIS;MyFont.lfEscapement=0;strcpy(MyFont.lfFaceName,Times New Roman);MyFont.lfHeight=80;MyFont.lfItalic=false;MyFont.lfOrientation=0;MyFont.lfOutPrecision=OUT_DEFAULT_PRECIS;MyFont.lfPitchAndFamily=FF_SWISS;MyFont.lfQuality=DEFAULT_QUALITY;MyFont.lfStrikeOut=false;MyFont.lfUnderline=false;MyFont.lfWeight=800;MyFont.lfWidth=20; CText:CText()void CText:Serialize(CArchive & ar)CObject:Serialize(ar); if(ar.IsLoading() arstartXstartYendXendYMyTextBkModeMyColorMyFont.lfCharSetMyFont.lfClipPrecisionMyFont.lfEscapement(CString)MyFont.lfFaceNameMyFont.lfHeightMyFont.lfItalicMyFont.lfOrientationMyFont.lfOutPrecisionMyFont.lfPitchAndFamilyMyFont.lfQualityMyFont.lfStrikeOutMyFont.lfUnderlineMyFont.lfWeightMyFont.lfWidth; elsearstartXstartYendXendYMyTextBkModeMyColorMyFont.lfCharSetMyFont.lfClipPrecisionMyFont.lfEscapement(CString)MyFont.lfFaceNameMyFont.lfHeightMyFont.lfItalicMyFont.lfOrientationMyFont.lfOutPrecisionMyFont.lfPitchAndFamilyMyFont.lfQualityMyFont.lfStrikeOutMyFont.lfUnderlineMyFont.lfWeightMyFont.lfWidth; 3.3.6 CLineProperties类显示和修改CLine和CArc类信息3.3.7 CEllipseProperties类显示和修改Cellipse和CRectangle类信息3.3.8 CTextProperties类显示和修改CText类信息3.3.9 CMyDrawView类实现绘图操作3.3.10 CMyDrawDoc类实现文档存取操作3.4 测试MyDraw绘图软件1.0版3.5 对MyDraw绘图软件1.0版的修改设计3.6 MyDraw绘图软件2.0版功能模块的创建3.6.1 CDrawElement类记录绘图元素

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论