资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实验六 单文档与多文档实验目的1. 熟悉VC 6.0的MFC框架2. 掌握单文档使用方法实验内容创建单文档应用程序,完成一定的功能。实验步骤:创建单文档应用程序的一般步骤:利用AppWizard创建单文档应用程序框架。在文档类中声明保存文档数据所需要数据对象。完成文档类的OnNewDocument函数,初始化新文档。完成文档类的Serialize函数,保持和加载文档数据。完成视类的OnInitialUpdate函数,初始化显示。完成视类的OnDraw函数,显示当前文档内容。在视类中加入可以使用户编辑文档数据所需的代码。本实验指导通过以下4 个实验循序渐进演示创建单文档应用程序的基本操作,在前一个例子中演练过的操作,在后面的中出现时不再重复描述。例1 一个简单的单文档应用程序记事本程序例2 简单文本和图形输出例3 利用定时器输出滚动字幕例4 文档串行化编程例1. 一个简单的单文档应用程序记事本程序1. 只要在AppWizard的Step 6将Base Class设置为EditView,AppWizard就自动完成了一个记事本程序的设计:2. 运行程序,即可测试记事本的各种功能:3.说明:(1)打开Workshop中的Class视图,可以看到,一个简单的单文档应用程序向导自动建立五个类:向导自动建立的类相应源文件其他源文件相应头文件其他头文件CAboutDlgStdAfx.cppStdAfx.hCXxxAppXxx.cppXxx.rcXxx.hResource.hCXxxViewXxxView.cppXxxView.hCXxxDocXxxDoc.cppXxxDoc.hCMainFrameMainFrame.cppMainFrame.h视(View)显示用户程序的数据及处理用户与文档的交互文档对象永久存储(磁盘文件)MainFrame框架窗口(2)MFC的文档视结构:(3)每个类的主要函数:void CAboutDlg:DoDataExchange(CDataExchange* pDX)int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)/创建窗体的工具栏,状态栏等BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)BOOL CXxxApp:InitInstance()void CXxxApp:OnAppAbout()BOOL CXxxDoc:OnNewDocument()/初始化文档字符数据、字体信息等void CXxxDoc:Serialize(CArchive& ar)BOOL CXxxView:PreCreateWindow(CREATESTRUCT& cs)void CXxxView:OnDraw(CDC* pDC) BOOL CXxxView:OnPreparePrinting(CPrintInfo* pInfo)/弹出打印对话框void CXxxView:OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo) void CXxxView:OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)CXxxDoc* CXxxView:GetDocument() / non-debug version is inline例2. 简单文本和图形输出建立一个简单的单文档应用程序SimpleTextPicture,通过修改OnDraw函数在视(View)中输出信息或画图。OnDraw函数在SimpleTextPictureView.cpp文件中,专门用于输出信息或画图。负责视图显示功能(包括打印、显示、预览等)例21 显示正方形和文本void CSimpleTextPictureView:OnDraw(CDC* pDC)CSimpleTextPictureDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herepDC-TextOut(10,120,Hello World!);pDC-Rectangle(20,20,100,100);在AppWizard生成的OnDraw函数中加入以黑体字给出的两行代码,运行程序,显示如下:例22显示彩色图形和文本void CSimpleTextPictureView:OnDraw(CDC* pDC)CSimpleTextPictureDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereCPen pen;CBrush brush;pen.CreatePen(PS_SOLID, 3, RGB(250,0,0);brush.CreateSolidBrush(RGB(0,250,0);pDC-SelectObject(pen);pDC-SelectObject(brush);pDC-Ellipse(100,200,300,300);DeleteObject(pen);DeleteObject(brush);CString str(Hello World!);pDC-SetTextColor(RGB(0,0,250);pDC-TextOut(120,150,str);pDC-SetTextColor(RGB(125,125,125);double a=31.4,888.54;char ch10;CString str1;str1.Format(%f,a0);pDC-TextOut(20,40,str1);str1.Format(%f,a1);pDC-TextOut(20,60,str1);gcvt(a1,10,ch);pDC-TextOut(20,100,ch);gcvt(a0,10,ch);pDC-TextOut(20,120,ch);例2. 3 画一个太极图void CSimpleTextPictureView:OnDraw(CDC* pDC)CSimpleTextPictureDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereCBrush b1,b2;CPen p1,p2;COLORREF r1,r2;r1=RGB(250,250,250);r2=RGB(0,0,0);p1.CreatePen(1,1,r1);p2.CreatePen(1,1,r2);b1.CreateSolidBrush(r1);b2.CreateSolidBrush(r2);pDC-SelectObject(b1);pDC-Pie(200,150,320,270,260,150,260,270);pDC-SelectObject(b2);pDC-Pie(200,150,320,270,260,270,260,150);pDC-Pie(230,151,290,210,260,150,260,180);pDC-SelectObject(b1);pDC-SelectObject(p1);pDC-Pie(230,210,290,269,260,270,260,210); pDC-Ellipse(250,170,270,190);pDC-SelectObject(b2);pDC-Ellipse(250,230,270,250);CFont font;font.CreateFont(0,0,0,0,800,0,0,0,OEM_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,楷体);pDC-SelectObject(&font);pDC-TextOut(232,120,太极图);例3. 利用定时器输出滚动字幕1. 创建一个简单的单文档应用程序RollingString; 2. 在RollingStringView.h中添加变量定义代码如下(黑体字部分):public:virtual CRollingStringView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:private:int n; /定义变量在CRollingStringView构造函数中初始化变量nCRollingStringView:CXxx2View()/ TODO: add construction code heren=0;3. 在RollingStringView.cpp文件中修改OnDraw函数:void CRollingStringView:OnDraw(CDC* pDC)CRollingStringViewDoc* pDoc = GetDocument();pDC-SetTextColor(RGB(0,0,235);pDC-SetBkMode(TRANSPARENT);CFont font;font.CreateFont(28,15,0,0,FW_NORMAL,false,false,false,DEFAULT_CHARSET,OUT_DEVICE_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,隶书);pDC-SelectObject(&font);pDC-TextOut(n,100,世上无难事,只要肯登攀!);n=n+20;RECT r;GetClientRect(&r);if(nr.right-r.left)n=0; 4. 添加三条消息映射,OnLButtonDblClk、OnRButtonDblClk和OnTime,并加入代码:void CRollingStringView:OnLButtonDblClk(UINT nFlags, CPoint point) / TODO: Add your message hand
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号