欢迎来到天天文库
浏览记录
ID:27792070
大小:427.89 KB
页数:19页
时间:2018-12-06
《初稿面向对象程序设计(vc++)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、绘图报告0具体要求利用MFC实现在窗口中画图,画图的方式是以鼠标做为画笔,按下左键拖曳拉出线条。每次按下鼠标左键后一直到放开为止的连续坐标点构成线条(stroke)。整张图(整份文件)由线条构成,线条可由点、笔宽等等资料构成。1ZSDraw的Document-数据结构设计MFCCollectionClasses的选用MFCCollectionClasses。它们分为三种类型,用来管理一大群对象:Array:数组,有次序性(需依序处理),可动态增减大小,索引值为整数。List:双向串行,有次序性(需依序处理),无索引。串行有头
2、尾,可从头尾或从串行的任何位置安插元素,速度极快。Map:又称为Dictionary,其内对象成对存在,一为键值对象(keyobject),一为实值对象(valueobject)。1.1.1Template-BasedClassesMFC的collectionclasses里头有一些是template-based,这些类別区分力:简单型CArray、CList、CMapo它们都衍生自CObject,所以它们都具备了文件读写、执行时期型别鉴识、动态生成等性质;类型指针型CTypedPtrArray、CTypedPtrList、
3、CTypedPtrMap。这些类别要求在参数中指定基础类别,而基础类别必须是MFC之中的non-templatepointercollections,例如CObList或CPtrArrayo1.1.2Template-BasedClasses的使川?7法简单型template-basedclasses使用吋要指定参数:CArray4、++基础型别,如int、char、long、float等等;C++结构或类別。ARG_TYPE则W来指定函数的参数类型。“类型指针”型的template-basedclasses使川时亦需指定参数:CTypedPtrArray5、BASE_CLASS则川来指定基础类别,它可以是任何用來收集指针的non-templatecollectionclasses,例如CObList或CObArray或CPtrList或CPtrArray等等。1.1CZSDrawDoc的修改CollectionClasses屮各类別的特性以及template/nontemplate之后,很显然:不定量的线条数可以川串行(linkedlist)来表示,那么MFC的CObList恰可川来表现这样的串行。CObList规定其每个元素必须是一个“CObject衍生类别”的对象实体,可以6、设计一个名为CStroke的类別,衍生自CObject,代表一条线条。力丫type-safe,选择template版本,所以这以这样设计出Document:classCZSDrawDoc:publicCDocumentpublic:CTypedPtrList7、所说的数组元素类型条件,所以CStmke的成员变量可以这么设计:classCStroke:publicCObjectprotected:UINTm_nPenWidth;//笔宽public:CAiTaym_pointArray;//记录CPoint对象♦••»參•)CZSDrawDoc内嵌一个CObList对象,CObList串行中的每个元素都是一个CStroke对象指针,而CStroke之中内嵌一个CArray对象。下面是具体程序的Document设汁。ZSDRAWDOC.HclassCStr8、oke:publicCObject{public:CStroke(UINTnPenWidth);protected:CStroke();DECLARE_SERIAL(CStroke)//Attributesprotected:UINTm_nPenWidth;//笔宽public:CArra
4、++基础型别,如int、char、long、float等等;C++结构或类別。ARG_TYPE则W来指定函数的参数类型。“类型指针”型的template-basedclasses使川时亦需指定参数:CTypedPtrArray5、BASE_CLASS则川来指定基础类别,它可以是任何用來收集指针的non-templatecollectionclasses,例如CObList或CObArray或CPtrList或CPtrArray等等。1.1CZSDrawDoc的修改CollectionClasses屮各类別的特性以及template/nontemplate之后,很显然:不定量的线条数可以川串行(linkedlist)来表示,那么MFC的CObList恰可川来表现这样的串行。CObList规定其每个元素必须是一个“CObject衍生类别”的对象实体,可以6、设计一个名为CStroke的类別,衍生自CObject,代表一条线条。力丫type-safe,选择template版本,所以这以这样设计出Document:classCZSDrawDoc:publicCDocumentpublic:CTypedPtrList7、所说的数组元素类型条件,所以CStmke的成员变量可以这么设计:classCStroke:publicCObjectprotected:UINTm_nPenWidth;//笔宽public:CAiTaym_pointArray;//记录CPoint对象♦••»參•)CZSDrawDoc内嵌一个CObList对象,CObList串行中的每个元素都是一个CStroke对象指针,而CStroke之中内嵌一个CArray对象。下面是具体程序的Document设汁。ZSDRAWDOC.HclassCStr8、oke:publicCObject{public:CStroke(UINTnPenWidth);protected:CStroke();DECLARE_SERIAL(CStroke)//Attributesprotected:UINTm_nPenWidth;//笔宽public:CArra
5、BASE_CLASS则川来指定基础类别,它可以是任何用來收集指针的non-templatecollectionclasses,例如CObList或CObArray或CPtrList或CPtrArray等等。1.1CZSDrawDoc的修改CollectionClasses屮各类別的特性以及template/nontemplate之后,很显然:不定量的线条数可以川串行(linkedlist)来表示,那么MFC的CObList恰可川来表现这样的串行。CObList规定其每个元素必须是一个“CObject衍生类别”的对象实体,可以
6、设计一个名为CStroke的类別,衍生自CObject,代表一条线条。力丫type-safe,选择template版本,所以这以这样设计出Document:classCZSDrawDoc:publicCDocumentpublic:CTypedPtrList7、所说的数组元素类型条件,所以CStmke的成员变量可以这么设计:classCStroke:publicCObjectprotected:UINTm_nPenWidth;//笔宽public:CAiTaym_pointArray;//记录CPoint对象♦••»參•)CZSDrawDoc内嵌一个CObList对象,CObList串行中的每个元素都是一个CStroke对象指针,而CStroke之中内嵌一个CArray对象。下面是具体程序的Document设汁。ZSDRAWDOC.HclassCStr8、oke:publicCObject{public:CStroke(UINTnPenWidth);protected:CStroke();DECLARE_SERIAL(CStroke)//Attributesprotected:UINTm_nPenWidth;//笔宽public:CArra
7、所说的数组元素类型条件,所以CStmke的成员变量可以这么设计:classCStroke:publicCObjectprotected:UINTm_nPenWidth;//笔宽public:CAiTaym_pointArray;//记录CPoint对象♦••»參•)CZSDrawDoc内嵌一个CObList对象,CObList串行中的每个元素都是一个CStroke对象指针,而CStroke之中内嵌一个CArray对象。下面是具体程序的Document设汁。ZSDRAWDOC.HclassCStr
8、oke:publicCObject{public:CStroke(UINTnPenWidth);protected:CStroke();DECLARE_SERIAL(CStroke)//Attributesprotected:UINTm_nPenWidth;//笔宽public:CArra
此文档下载收益归作者所有