- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计报告
关于Drawcli的程序分析 一、 程序分析
程序简介
Drawcli是一个微软MSDN屮附带的一个示例程序,能够进行简单的绘图操 作,主要包括16个?cpp文件,而每个.卬p文件都对应了一个?h文件。
界面分析
在drawcli文件夹中有drawcli.exe可执行程序,点击后进入主程序界面,它 包含了一般Windows程序通有的一些结构。最上方是标题栏,再往下是菜单栏, 翻译成屮文,有文件、编辑、查看、绘画、对象、窗口、帮助七个下拉菜单,往 下便是工具栏,包括新建、打开、保存、剪切、复制、粘贴、箭头、画图工具、 打印、关于、帮助按钮,然后便是图形编辑界面,它是一个独立的窗口,已经给 出了等间距的虚线,可以新建、打开、关闭等,以上就是打开drawcli.exe程序后 大概的界而。
功能分析
该程序是一个简易的绘图程序,新建绘图页面后,可以在菜单栏中Draw 的下拉菜单或者工具栏中的绘图工具按钮中选择需要的图形,分别有直线、矩形、 圆角矩形、椭圆、点画多边形等画图模式,在编辑区通过鼠标的点击可以画出相 应图形,并且可以实现拖动功能。在菜单栏中“Object”下拉菜单中选择对应功 能,可以实现自定义线宽、填充颜色、图层移动等功能。同时,在绘图的同时, 也可以通过右键点击、工具栏按钮或者快捷键对图形进行复制、剪切、粘贴的操 作。在绘图完成之后,用Save按钮或者“File”下拉菜单中的Save进行 用户自定义路径的保存,保存默认格式为.drwo程序中的“About”和“Help” 提供了程序的一些版本信息。
源代码分析
源代码分析
常量
在整个程序中,在很多地方定义了常量,例如形如const CRect rect的常量 引用的定义,形如void AssertValid() const的常量函数的定义,其中引用变量的使 用,主要出现在函数白检传值时,形参的定义,帮助实现了函数白检的地址传输, 有利于数据在函数与函数之间的传递。程序中同样存在new运算符,即动态分 配存储空间的使用,如CDrawObj* pCIone = new CDrawObj(m_position)语句中即通 过new申请了一块CDrawObj类大小的内存空间给与CDrawObj指针,与此相对 的,运用了 delete运算符将所申请的内存空间释放掉。对于作用域运算符::的使 用,主要是在对类屮已经申明的函数在类外进行定义时用到,如CDrawDoc类屮 声明的构造函数CDrawDoc()在另一个头文件中进行定义,其定义形式为 CDrawDoc::CDrawDoc(),用以指明CDrawDoc()函数的存在区域。
类
作为而向对象程序,其中含有大量的class类的定义,主要有四个绘图对象 类,其屮各类的主要说明如下:
class CDrawObj
其中CdrawObj是父类,不作为具体的绘图类对象存在。
class CDrawObj: public CObject
{
protected:
DECLARE_SERIAL(CDrawObj);
CDrawObj();
// Con structors
public:
CDrawObj(const CRect position);
// Attributes
CRect m_position;//对象显示的位置
CDrawDoc* m_pDocument;//对象存储对应的文档对象指针
virtual int GetHandleCount();〃获得对彖特征点数量 virtual CPoint GetHandle(int nHandle);//获得对象特针点的位置
CRect GetHandleRect(int nHandlelD, CDrawView* pView);//获得特征点的小矩 形
virtual HCURSOR GetHandleCursor(int nHandle);//获得特征点的鼠标形状 virtual void SetLineColor(COLORREF color);//设置线条颜色 virtual void SetFillColor(COLORREF color);//设置填充颜色
// Operations
virtual void Draw(CDC* pDC);//纯虚函数,由子对象自己实现
enum TrackerState { normal, selected, active };//对象的状态(一般、被选、活 动)
virtual void DrawTracker(CDC* pDC, TrackerState state);//绘岀特征点
virtual void MoveTo(const CRect positon, CDrawView* pView = N
您可能关注的文档
最近下载
- 2020版煤矿安全生产标准化.docx VIP
- T_CWAN 0095-2023 单层金刚石工具钎焊技术要求及应用推荐规范.pdf
- 2022北京首都师大附中高二(上)期末物理(含答案).pdf VIP
- 实用血液学图谱.pdf
- 沸石催化剂上苯与乙烯液相烷基化反应的研究.pdf VIP
- 轴心AXXON IS-300.IS-500型点胶设备用户手册.pdf
- OHSP-350F-BF-SF-M蓝光闪烁照度计使用手册1.70.2.pdf VIP
- 中国连锁经营协会 即时零售开放平台模式系列白皮书打造可持续发展的即时零售商业模式.pdf VIP
- 城市更新行动2026年实施要点.pptx VIP
- 2024年江苏高中学业水平合格性考试语文试卷真题(含答案详解).pdf VIP
原创力文档


文档评论(0)