可视化编程作业 SDI应用程序设计【参考】.docx

可视化编程作业 SDI应用程序设计【参考】.docx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可视化程序设计语言实验五SDI应用程序设计学 号: 名: 何博指导教师: 李家军 2015 年 5 月作业题目:实验五 SDI应用程序设计(1)任务描述:编写一个SDI风格的MFC应用程序,要求主窗口菜单项中有一个菜单项“输入图形参数”,点击后会弹出一个对话框,其中有标签“输入圆的半径”,后面是一个编辑框控件,下一行是标签“圆心的横坐标:”,后面是一个编辑框,下一行是标签“圆心的纵坐标:”,后面是一个编辑框。下一行是两个按纽,“确认输入”,“放弃输入”,电击“确认按纽”后对话框关闭,在编辑框中输入的数据应该保存到文挡对象中有关的变量中,点击“放弃按纽”后对话框关闭,在编辑框中输入的数据不保存到文档对象中,如果数据发生变化,在视中指定位置上为中心处,会显示出一个指定半径的圆,并在圆的正下方显示:“面积是:xxxx”的字符串。你可以在主菜单中增加选择画笔、画刷样式的菜单项,并实现相应的功能。但基本功能应保证完成。实验步骤:创建工程文件,在资源视图中,添加对话框资源。为对话框添加类,类名DlgInput,基类CDialog。向对话框中加入3个编辑窗控件,并分别添加变量X,Y,R。为CMY_SDI类添加成员变量m_X,m_Y,m_R。文档变量初始化CMY_SDIDoc::CMY_SDIDoc(): m_X(200), m_Y(200), m_R(50){// TODO: 在此添加一次性构造代码}BOOL CSDIbookDoc::OnNewDocument(){if (!CDocument::OnNewDocument())// TODO: 在此添加重新初始化代码// (SDI 文档将重用该文档)m_X=200;m_Y=200;m_R=50;return TRUE;}通过对话框来改变CMY_SDIDoc的成员变量m_X,m_Y,m_R在资源视图中,编辑菜单栏,加入NEW菜单,并加入子菜单改变图形参数,并添加事件处理向导,消息类型选择COMMAND,类列表中选择CMY_SDIDoc,处理函数名OnChange。在CMY_SDIDoc,cpp中加入头文件DlgInput.h。void CSDIbookDoc::OnChange(){// TODO: 在此添加命令处理程序代码DlgInput dlg;if(dlg.DoModal()==IDOK)//调用DoModal()函数显示该模式对话框{m_R=dlg.R;m_X=dlg.X;m_Y=dlg.Y;UpdateAllViews(NULL);//刷新视图}}视图的输出在MY_SDI程序视图类CMY_SDIView类的OnDraw成员函数中,添加如下代码void CSDIbookView::OnDraw(CDC* pDC){CSDIbookDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if (!pDoc)return;// TODO: 在此处为本机数据添加绘制代码CRect rectClient;GetClientRect(rectClient);CSize sizeClient=rectClient.Size();int R=pDoc->m_R;int X=pDoc->m_X;int Y=pDoc->m_Y;HBRUSH hBrush;HPEN hPen;hPen=CreatePen(PS_SOLID,2,RGB(0,255,0)); hBrush=CreateHatchBrush(HS_BDIAGONAL,RGB(255,0,0)); //画刷(CBrush*)pDC->SelectObject(hBrush);(CPen*)pDC->SelectObject(hPen);pDC->Ellipse(X-R,Y-R,X+R,Y+R);}文档串行化通过重载CMY_SDIDoc类的Serialize函数来完成串行化。代码如下void CSDIbookDoc::Serialize(CArchive& ar){if (ar.IsStoring()){// TODO: 在此添加存储代码ar<<m_R;ar<<m_X;ar<<m_Y;}else{// TODO: 在此添加加载代码ar>>m_R;ar>>m_X;ar>>m_Y;}}}程序结果:初始运行初始参数更改参数更改后结果实验程序// DlgInput.cpp : 实现文件//#include "stdafx.h"#include "SDI book.h"#include "DlgInput.h"#include "afxdialogex.h"#include "DlgInput.h"// DlgInput 对话框IMPLEMENT_DYNAMIC(DlgInpu

您可能关注的文档

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档