付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验五、文档-视图编程实验目的:1、 了解windows MDI程序的文档模板类的作用。2、 掌握windows 程序文档-视图框架的程序设计原理。3、 知道视图的切分方法和单文档多视图的消息处理。实验要求:建立一个windows MDI(多文档)应用程序,利用视图切分实现对文档中管理的字符串和色彩数据的多种视图的不同控制。实验指导:一、 在VC+6.0环境中建立一个多文档工程。在文档中添加属性项:public:CString m_strData; / string textCOLORREF m_colorData; / color for the string text重载OnNewDocu
2、ment()并添加数据初始化代码:BOOL CMultiViewDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/ TODO: add reinitialization code here/ (SDI documents will reuse this document)m_strData = Sample Data String;m_colorData = RGB(0, 0, 0);return TRUE;二、 在工程中添加另外两个视图类,一个视图用于控制显示的数据项的设置,一个视图用于颜色的显示。原来已生成的视图则
3、显示字符串。1. 利用资源编辑器添加一个如图所示的对话框资源,注意对话框的风格设为Child类型。并在此基础上利用ClassWizard生成一个基于CFormView的视图类。在视图中添加与文档相关的获取文档指针的方法,并添加控件的变量和对控件的消息映射处理。.h文件public:/AFX_DATA(CControlView)enum IDD = IDD_DIALOG1 ;CStringm_str;intm_iColor;/AFX_DATApublic:C*Doc* GetDocument();/ Overrides/ ClassWizard generated virtual functio
4、n overrides/AFX_VIRTUAL(CControlView)protected:virtual void DoDataExchange(CDataExchange* pDX);virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);/AFX_VIRTUAL.cpp文件C*Doc* C*View:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(C*Doc);return (C*Doc
5、*)m_pDocument;void C*View:OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint) / TODO: Add your specialized code here and/or call the base classC*Doc* pDoc = GetDocument();ASSERT_VALID(pDoc);m_str = pDoc-m_strData;if (pDoc-m_colorData = RGB(255, 0, 0)m_iColor = 0;else if (pDoc-m_colorData = RGB(0,
6、 255, 0)m_iColor = 1;else if (pDoc-m_colorData = RGB(0, 0, 255)m_iColor = 2;elsem_iColor = -1;UpdateData(FALSE);void C*View:OnDataChange() if (!UpdateData()return;C*Doc* pDoc = GetDocument();COLORREF color = RGB(255 * (m_iColor = 0),255 * (m_iColor = 1),255 * (m_iColor = 2);BOOL bUpdate = FALSE;if (
7、m_str != pDoc-m_strData)pDoc-m_strData = m_str;bUpdate = TRUE;if (color != pDoc-m_colorData)pDoc-m_colorData = color;bUpdate = TRUE;if (bUpdate)/ 更新所有视图pDoc-UpdateAllViews(this);2. 添加另一个基于CView类的视图,并同样添加获取文档指针的方法和OnDraw()函数中的代码。void C*View:OnDraw(CDC* pDC)C*Doc* pDoc = GetDocument();ASSERT_VALID(pDo
8、c);/ TODO: add draw code hereCRect rect;GetClientRect(rect);CBrush br(pDoc-m_colorData);pDC-FillRect(rect, &br);3. 在原来工程生成的基于CView类的视图中添加OnDraw()函数中的代码用于文本的显示。void CMultiViewView:OnDraw(CDC* pDC)CMultiViewDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rect;GetClientRect(rect);pDC-SetTextAlign(TA
9、_BASELINE | TA_CENTER);pDC-SetTextColor(pDoc-m_colorData);pDC-SetBkMode(TRANSPARENT);/ center in the windowpDC-TextOut(rect.Width() / 2, rect.Height() / 2,pDoc-m_strData, pDoc-m_strData.GetLength();三、 在CChildFrame类中添加与视图切分相关的属性项和切分代码,注意包含相关头文件。.h文件/ Attributespublic:CSplitterWnd m_wndSplitter1;CSpli
10、tterWnd m_wndSplitter2;.cpp文件BOOL CChildFrame:OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) / 静态切分if (!m_wndSplitter1.CreateStatic(this, 1, 2)TRACE0(Failed to CreateStaticSplittern);return FALSE;/创建控制视图if (!m_wndSplitter1.CreateView(0, 0,RUNTIME_CLASS(C*View),CSize(250, 100), pContex
11、t)TRACE0(Failed to create first panen);return FALSE;/对另一窗片的二次切分if (!m_wndSplitter2.CreateStatic(&m_wndSplitter1, 2, 1,WS_CHILD | WS_VISIBLE | WS_BORDER,m_wndSplitter1.IdFromRowCol(0, 1) )TRACE0(Failed to create nested splittern);return FALSE;int cyText = max(lpcs-cy - 70, 20);/字符串显示视图的创建if (!m_wndSplitter2.CreateView(0, 0,RUNTIME_CLASS(C*View), CSize(0, cyText), pContext)TRACE0(Failed to create second panen);return FALSE;/颜色显示视图的创建if (!m_wndSplitter2.CreateView(1, 0,RUNTIME_CLASS(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年混合动力汽车检测与故障诊断实训指导手册
- 2026四川旅投物业服务集团有限责任公司招聘1人备考题库及参考答案详解1套
- 迈瑞医疗2027届技能人才校园招聘备考题库及答案详解(基础+提升)
- 2026广东中山市港口镇中南村招聘综合人员2人备考题库完整参考答案详解
- 2026安徽黄山市徽城投资集团有限公司招聘3人备考题库含答案详解(模拟题)
- 2026新疆和田墨玉县国有资产投资经营管理有限责任公司招聘1人备考题库含答案详解(预热题)
- 2026上海市同济口腔医院(同济大学附属口腔医院)招聘21人备考题库及答案详解(名校卷)
- 2026北京房山区燕山教育委员会所属事业单位第二批招聘教师18人备考题库附答案详解(精练)
- 毕业设计(论文)致谢词 范文8篇
- 2026浙江台州市天台县教育局教师招聘14人考试备考试题及答案解析
- 血脂知识科普课件
- 肺部磁共振成像在肺疾病诊断中的价值
- 初中八年级数学课件-一次函数的图象与性质【全国一等奖】
- 《石墨类负极材料检测方法 第1部分:石墨化度的测定》
- 贵州艺辰纸业有限责任公司年产15万吨化学机械木浆的林纸一体化生产线及配套的纸板生产线(一期)环评报告
- 鳞翅目检疫性害虫课件
- 硬笔书法 撇和捺的写法课件
- JJG 444-2023标准轨道衡
- 羽毛球正手击高远球教学设计
- GB/T 15530.6-2008铜管折边和铜合金对焊环松套钢法兰
- GRR培训-完整版课件
评论
0/150
提交评论