




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、设计要求(1)建立一个多文档的应用项目(项目名称为学生姓名拼音首字母缩写),并将视图类设置为表单类视图。 (2)在该表单中采用编辑框和旋转按钮输入点的横、纵坐标值。 (3)对框架窗口进行切分。 (4)使得左边窗格输入点的坐标值后,右边窗格将在该点处显示一个小方块。若在右边窗格中任意单击鼠标,则相应的小方块移动到当前鼠标位置处,同时左边编辑框的内容也会随之发生改变。2、设计步骤及部分代码2.1创建表单应用程序,设计表单(1)用MFC AppWizard创建一个多文档应用程序:Qwl,在向导的第六步中选择视图的基类为CformView。(2)打开表单模板资源,参看下表,调整表单模板大小,并依次
2、添加如下表所示的控件。表2.1控件ID号标题属性组框缺省坐标设置缺省静态文本缺省X=缺省Y=编辑框IDC_EDIT1缺省IDC_EDIT2旋转按钮IDC_SPIN1Auto buddy、Set buddy integer、 Aligement:RightIDC_SPIN2(3)打开MFC ClassWizard的Member Variables标签,在Class name中选择CQwlView,选中所需控件ID号,双击鼠标,依次为下列控件添加成员变量。表2.2控件ID号变量类型变量名变量类别IDC_EDIT1intm_CoorXValueIDC_EDIT2m_CoorYValueIDC_SPI
3、N1CSpinButtonCtrlm_SpinXControlIDC_SPIN2m_SpinYControl2.2添加CQwlDoc和CQwlView类代码 (1)在CQwlDoc类中添加public : CPoint m_ptRect;用来记录小方块的位置。 在CQwlDoc类的构造函数中设置初值:m CQwlDoc:CQwlDoc()m _ptRect.x= m_ptRect.y=0;(2)为CQwlView添加自定义数据成员: public : BOOL m_bEditOK; 在CQwlView构造函数中设置初值: m_bSpinOK=FALSE;(3) 打开MFC ClassWizar
4、d的Message Maps标签为IDC_EDIT1和IDC_Edit2添加EN_CHANGE的消息映射,使它们的映射函数名都设为OnChangeEdit,并添加下列代码:void CQwlView:OnChangeEdit() if (!m_bEditOK)return; /使CEx_RectView类视图初始显示时不执行该函数下面代码。UpdateData(TRUE);CQwlDoc*pDoc =(CQwlDoc*)GetDocument();pDoc->m_ptRect.x=m_CoorX; /将设定坐标值存入文档数据成员pDoc->m_ptRect.y=m_CoorY;CP
5、oint pt(m_CoorX,m_CoorY);pDoc->UpdateAllViews(NULL,2,(CObject *)&pt);/通知更新CDrawView视图,调用CDrawView:OnUpdate()函数并传递Hint参数(4)用MFC ClassWizard为CQwlView添加OnUpdate的消息函数,并添加下列代码:void CQwlView:OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) if (lHint=1) /接受CDrawView传递Hint参数CPoint*pPoint=(CPoin
6、t *)pHint;m_CoorX=pPoint->x;m_CoorY=pPoint->y;UpdateData(FALSE); /使编辑框控件显示鼠标坐标CQwlDoc*pDoc =(CQwlDoc*)GetDocument();pDoc->m_ptRect=*pPoint; /将鼠标坐标值存入文档数据成员(5)在CQwlView:OnInitialUpdate中添加初始化代码: void CQwlView:OnInitialUpdate()CFormView:OnInitialUpdate();ResizeParentToFit(); CQwlDoc*pDoc=(CQwl
7、Doc*)GetDocument();m_CoorX=pDoc->m_ptRect.x;m_CoorY=pDoc->m_ptRect.y;m_SpinX.SetRange(0,1024);m_SpinY.SetRange(0,768);UpdateData(FALSE); /编辑框显示坐标位置初值m_bEditOK=TRUE;2.3新增CDrawView类,添加框架窗口切分功能(1) 用MFC Class Wizard添加一个新的CView的派生类CDrawView。(2)用MFC Class Wizard为CChildFrame类添加OnCreateClient函数的重载,并添加
8、下列代码:BOOL CChildFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) CRect rect; GetClientRect(&rect); /获得视图窗口的尺寸存入rect对象中 CSize paneSize(rect.Width()/2-32,rect.Height(); /定义切分后的视图窗口的尺寸 BOOL bRes=m_wndSplitter.CreateStatic(this,1,2); /创建静态切分窗口 m_wndSplitter.CreateView(0,0,RUNTIME_
9、CLASS(CQwlView),paneSize,pContext); /为切分窗口指定视图和初始尺寸 m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CDrawView), paneSize, pContext); return bRes;(2) 在ChildFrm.cpp的前面添加下列语句:#include "ChildFrm.h"#include "QwlView.h"#include "DrawView.h"(3) 打开ChildFrm.h文件,为CChildFrame类添加下列成员变量:
10、public : CSplitterWnd m_wndSplitter;(4) 打开Ex_RectView.h文件,在class CEx_RectView:public CFormView语句前面添加下列代码:class CQwlDoc;class CqwlView:public CFornView;2.4添加CDrawView类代码(1)为CDrawView类添加一个公有型的CPoint数据成员m_ptDraw,用来记录绘制小方块的位置。(2)在CDrawView:OnDraw函数中添加下列代码:void CDrawView:OnDraw(CDC* pDC) /以小方块位置数据成员值为坐标,
11、绘制边长为10的红心小方块CDocument* pDoc = GetDocument(); CRect rc(m_ptDraw.x-5,m_ptDraw.y-5,m_ptDraw.x+5,m_ptDraw.y+5);pDC->Rectangle(rc);(3)用MFC ClassWizard为CDrawView类添加OnInitialUpdata的消息函数,并添加下列代码:void CDrawView:OnInitialUpdate() CView:OnInitialUpdate();CQwlDoc* pDoc =(CQwlDoc*)m_pDocument;m_ptDraw = pDoc
12、->m_ptRect;(5) 在DrawView.cpp文件的前面添加CQwlDoc类的包含语句:#include "Qwl.h"#include "DrawView.h"#include "QwlDoc.h"(5)用MFC ClassWizard为CDrawView类添加OnUpdata的消息函数,并添加下列代码:void CDrawView:OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) / TODO: Add your specialized code here and/or call the base class if (lHint=2) /接受CEx_RectView传递Hint参数 CPoint* pPoint=(CPoint*)pHint; m_ptDraw=*pPoint; Invalidate(); ClassWizard为CDrawView类添加WM_LBUTTONDOWN的消息映射,并添加下列代码:void CDrawView:OnLButtonDown(UINT nFlags, CPoint point) m_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市物业管理流程优化方案
- 城市中学2023年英语期中考试试卷
- 吉他入门基础教程与练习曲集
- 小学生法制教育儿歌教学方案
- 医院护理质量改进项目案例分析
- 母线槽安装施工技术方案
- 小学综合教案设计与实施
- 电气设备维护保养操作手册及流程
- 小学美术创作与评析教学方案
- 初中数学相交线和平行线习题解析
- 2025年人教部编版语文四年级下册期末测试题及答案(一)
- 办公设备维修维护服务协议
- 超星尔雅学习通《剑指CET-4:大学生英语能力基础》2025章节测试附答案
- 苗族传统体育表演项目“滚山珠”的研究和分析
- 2025年电商平台生鲜配送售后服务标准范本3篇
- DB36-T 1941-2024 老年人轻度认知障碍筛查与干预指南
- 2024年09月2024秋季中国工商银行湖南分行校园招聘620人笔试历年参考题库附带答案详解
- 儿童青少年行为和情绪障碍的护理
- DB45T 2178-2020 甘蔗产量现场测定操作规程
- 实验设计DOE培训
- 第9课-秦统一中国【课件】(共30张课件)
评论
0/150
提交评论