版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夫妻保证书全文样本
- 农业用地流转承包协议书
- 成人教育宣传推广协议
- 冷热水管材购销合同范本
- 光纤采购招标合同履行问题处理建议
- 员工外出安全保护方案
- 月嫂服务合同贴心解读
- 项目服务合同范本分享
- 供应商合同样本
- 工程安装委托书格式样本
- 环境土壤学课件
- 《生产安全事故报告和调查处理条例》知识考题及答案
- 110kv各类型变压器的计算单
- 看图猜成语完
- 汽车尾灯控制电路的设计仿真
- 国家开放大学《森林保护》形考任务1-4参考答案
- 约谈教育记录表
- 贵州省遵义市播州区第五小学2023-2024学年六年级上学期道德与法治期中质量监测试卷
- 产品研制管理规范
- 全血和成分血使用解读
- 2023-2024学年江苏省泰州市海陵区六年级数学第一学期期末含答案
评论
0/150
提交评论