- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第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的鼠标移动消
您可能关注的文档
最近下载
- 沉井及顶管专项施工方案.docx VIP
- 预算管理一体化系统操作手册-预算执行.pdf VIP
- 某医院检验科程序文件.pdf VIP
- 1~6的表内乘法整理和复习 课件 2025秋数学人教版二年级上册.ppt
- Samsung三星品式多门冰箱RF66M9092S8使用说明书.pdf VIP
- Haier海尔413升风冷变频多门冰箱 BCD-413WGHFD1BSJU1(白)说明书用户手册.pdf
- 北师大版八年级数学上册《第二章实数》单元检测卷带答案.docx VIP
- 1捡石头 (课件) 2025苏教版科学一年级下册.ppt
- 2025年青岛版(2024)小学科学三年级上册(全册)教学设计(附目录P150).docx
- 人工智能生成内容(AIGC)研究综述:国际进展与热点议题.pdf VIP
文档评论(0)