- 1、本文档共84页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章-文档与视图
* * * 1.为线段定义新类CLine。选择“Insert|New Class”菜单命令,弹出New Class对话框中,在Class type栏选择Generic Class,在类名Name栏输入CLine,在类名Base class[es]栏输入CObject,单击OK按钮,自动生成了类CLine的头文件Line.h和实现文件Line.cpp的框架。 例 完善绘图程序MyDraw,在重绘窗口时能够显示已绘制的线段。 2.为类CLine定义成员变量和成员函数。 class Cline : CObject { private: // 定义成员变量,表示一条直线起点和终点的坐标 CPoint m_pt1; CPoint m_pt2; public: CLine(); virtual ~CLine(); CLine(CPoint pt1, CPoint pt2); // 构造函数 void DrawLine(CDC *pDC); // 绘制线段 }; CLine::CLine(CPoint pt1, CPoint pt2) { m_pt1=pt1; m_pt2=pt2; } void CLine::DrawLine(CDC* pDC) { pDC-MoveTo(m_pt1); pDC-LineTo(m_pt2); } 在Line.cpp中编写成员函数的实现代码: 3.一般都使用数组来保存多条线段的数据,而且MFC提供了实现动态数组的类模板。类CObArray支持CObject指针数组,用它定义的对象可以动态生成。这样,可将存放每条线段数据的变量的指针存到CObArray类的对象中。为此在文档类CMyDrawDoc中定义有关的成员变量和成员函数,需要包含CLine类定义的头文件。 存储线段采用什么数据结构? #include Line.h #include afxtempl.h // 使用MFC类模板 class CMyDrawDoc : public CDocument { . . . . . . protected: CTypedPtrArrayCObArray,CLine* m_LineArray; // 存放线段对象指针的动态数组 public: CLine* GetLine(int nIndex); // 获取指定序号线段对象的指针 void AddLine(CPoint pt1, CPoint pt2); // 向动态数组中添加新的线段对象的指针 int GetNumLines(); // 获取线段的数量 . . . . . . }; 成员变量m_LineArray是类模板CTypedPtrArray的对象。使用数组类模板CTypedPtrArray需要指定两个模板参数: CTypedPtrArray BASE_CLASS, TYPE 参数BASE_CLASS指定基类,可以是CObArray或CPtrArray;参数TYPE指定存储在基类数组中元素的类型。本例中,这两个参数分别为CObArray和CLine*,表示m_LineArray是CObArray的派生类对象,用来存放CLine对象的指针。 为了使用MFC类模板,须包含头文件afxtempl.h。 使用MFC数组类模板CTypedPtrArray 其他主要成员函数: void CMyDrawDoc::AddLine(CPoint pt1, CPoint pt2) { CLine* pLine=new CLine(pt1, pt2); // 新建一条线段对象 m_LineArray.Add(pLine); // 将该线段加到动态数组 } CLine* CMyDrawDoc::GetLine(int nIndex) { if(nIndex0||nIndexm_LineArray.GetUpperBound()) // 判断是否越界 return NULL; return m_LineArray.GetAt(nIndex); // 返回给定序号线段对象的指针 } int CMyDrawDoc::GetNumLines() { return m_LineArray.GetSize(); // 返回线段的数量 } 4.鼠标移动时,除了绘制线段,还要保存当前线段的起点和终点坐标。需要在视图类CMyDrawView的鼠标移动消
您可能关注的文档
- 第5章-发展经济学剩余劳动力和二元经济结构.ppt
- 第5章-图形的特殊效果.ppt
- 第5章-嵌入式文件IO编程.ppt
- 第5章-投资管理.ppt
- 第5章-数码管显示制.ppt
- 第5章-文件型病毒.pptx
- 第5章-文档与视图结构.ppt
- 第5章-施工控制网的建立.ppt
- 第5章-景区营销管理.ppt
- 第5章-期货交易流程.ppt
- 博物院建设项目风险管理方案(范文模板).docx
- 2025至2030全球及中国汽车水阀行业市场深度研究及发展前景投资可行性分析报告.docx
- 2025年人教版新八年级数学暑假预习-第03讲 三角形的中线、角平分线、高(教师版).pdf
- 2025至2030全球及中国汽车氙气大灯行业市场深度研究及发展前景投资可行性分析报告.docx
- 固体废物资源综合利用项目风险管理方案(范文).docx
- 1 智能温室病虫害预警系统中的传感器网络优化配置研究教学研究课题报告.docx
- 固体废物资源综合利用项目质量管理方案(参考模板).docx
- 固体废物资源综合利用项目建设管理方案(模板).docx
- 关于人教版五年级语文上学期易错题母题集(附答案解析).docx
- 2025至2030全球及中国汽车油漆和涂料行业市场深度研究及发展前景投资可行性分析报告.docx
文档评论(0)