VC++.net五次上机实验报告3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1《面向对象程序设计》实验报告题目__________学生姓名学号专业班级指导老师实验一cview类中cdc的使用一.实验目的熟悉.net的开发平台,掌握CDC类的使用:文本的输出,数字的显示输出,点2线图的绘制,位图的显示输出。二.实验内容1.显示一首诗。2.画一个坐标系,画函数的图像。3.显示资源中的一幅位图。4.GDI绘图之鼠标绘图.三.实验步骤:实验内容一:显示一首诗(1)创建一个名为Ex1的单文档MFC应用程序;(2)在视图类的源文件中编辑ondraw()函数,添加如下代码:voidCEx1View::OnDraw(CDC*/*pDC*/){CEx1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(!pDoc)return;//TODO:在此处为本机数据添加绘制代码CClientDCdc(this);TEXTMETRICtm;dc.GetTextMetrics(&tm);intnLineHeight=tm.tmHeight+tm.tmExternalLeading;dc.TextOut(10,1*nLineHeight,CString(静夜思));dc.TextOut(10,2*nLineHeight,CString(床前明月光,));dc.TextOut(10,3*nLineHeight,CString(疑是地上霜。));dc.TextOut(10,4*nLineHeight,CString(举头望明月,));dc.TextOut(10,5*nLineHeight,CString(低头思故乡。));}(3)运行程序得到如下结果:3实验内容二:画一个坐标系,画函数的图像(1)创建一个名为Ex1_5的单文档MFC运用程序;(2)在视图类的源文件中编辑ondraw()函数,添加如下代码:voidCEX1_5View::OnDraw(CDC*pDC){CEX1_5Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(!pDoc)return;//TODO:在此处为本机数据添加绘制代码CRectrectClient;GetClientRect(rectClient);pDC-SetMapMode(MM_ANISOTROPIC);pDC-SetWindowExt(1000,1000);pDC-SetViewportExt(rectClient.right,-rectClient.bottom);pDC-SetViewportOrg(rectClient.right/2,rectClient.bottom/2);pDC-MoveTo(-500,0);pDC-LineTo(500,0);pDC-MoveTo(500,0);pDC-LineTo(490,10);pDC-MoveTo(500,0);pDC-LineTo(490,-10);pDC-MoveTo(0,-500);pDC-LineTo(0,500);pDC-MoveTo(0,500);pDC-LineTo(-10,490);4pDC-MoveTo(0,500);pDC-LineTo(10,490);for(inti=-4;i=4;i++){CStringstr;str.Format(_T(%d),i);pDC-MoveTo(i*100,-5);pDC-LineTo(i*100,+5);pDC-TextOutW(i*100,-5,str);}for(inti=-1;i=1;i++){if(i==0)continue;CStringstr;str.Format(_T(%d),i);pDC-MoveTo(-5,i*100);pDC-LineTo(+5,i*100);pDC-TextOutW(+5,i*100,str);}pDC-MoveTo(-400,(int)100*sin((float)-4));for(inti=-400;i=400;i++){floatix,iy;inty;ix=(float)i/100;iy=sin(ix);y=(int)100*iy;pDC-LineTo(i,y);}}(3)运行程序得到如下结果:5实验内容三:显示资源中的一幅位图。(1)创建一个名为Ex1_2的单文档MFC运用程序;(2)为文档添加位图资源:右键点击项目,单击“添加”菜单项,在打开的“添加资源”对话框里选择Bitmap,单击“导入”,打开文件对话框,选泽所要添加的位图资源。(3)在视图类的ondraw()函数中添加如下代码:voidCEX1_2View::OnDraw(CDC*pDC){CEX1_2Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(!pDoc)return;//TODO:在此处为本机数据添加绘制代码CBitmapBitmap;Bitmap.LoadBitmapW(IDB_BITMAP1);//将位图装入内存CDCMemDC;MemDC.CreateCompatibleDC(pDC);//创建内存设备环境CBitmap*OldBitmap=MemDC.SelectObject(&Bitmap);BITMAPbm;//创建BITMAP结构变量Bitmap.GetBitmap(&bm);//获取位图信息pDC-BitBlt(10,10,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);pDC-SelectObject(OldBitmap);//恢复设备环境}(4)运行程序得到如下结果:6实验内容四:GDI绘图之鼠标绘图.(1)创建一个名为Ex1_3的单文档MFC运用程序;(2)在类视图中选择视图类,在视图类中添加消息WM_LBOTTONDOWN,WM_LBUTTONUP,WM_MOUSEMOVE从而得到消息响应函数OnLButtonDown(),OnLButtonUp(),OnMouseMove();(3)然后再在视图类中添加变量CPointm_ptPrev;CPointm_ptOringin;分别记录当前点和起始点的位置。(4)在如下函数中添加如下代码;voidCEx1_3View::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:在此添加消息处理程序代码和/或调用默认值SetCapture();m_ptPrev=point;CView::OnLButtonDown(nFlags,point);}voidCEx1_3View::OnLButtonUp(UINTnFlags,CPointpoint){//TODO:在此添加消息处理程序代码和/或调用默认值if(GetCapture()!=this)7return;CClientDCdc(this);dc.MoveTo(m_ptPrev);dc.LineTo(point);ReleaseCapture();CView::OnLButtonUp(nFlags,point);}voidCEx1_3View::OnMouseMove(UINTnFlags,CPointpoint){//TODO:在此添加消息处理程序代码和/或调用默认值if(GetCapture()!=this)return;CClientDCdc(this);dc.MoveTo(m_ptPrev);dc.LineTo(point);m_ptPrev=point;CView::OnMouseMove(nFlags,point);}(5)运行程序得到如下的结果:四实验总结:在获取设备环境时有两种方法:一种是函数本身使用CDC*pDC第二种是使用CClientdc(this)this.的方式。8实验二、模式对话框及通用对话框的使用一.实验目的掌握对话框中数据交换的技术。常用控件的使用,CfileDialog的使用.二.实验内容(1)求两正整数的最大公约数和最小公倍速数,用一个函数求最大公约数,另一个函数求最小公倍数。要求:两正整数从对话框输入。将最大公约数和最小公倍数在ondraw()函数中输出。(2)使用Cfile和CfileDialog及atl的image类显示输出图像.(3)在视图类中集成Richedit控件,然后显示一个文本文件或rtf文件.三.实验步骤:实验内容一:求两正整数的最大公约数和最小公倍速数,用一个函数求最大公约数,另一个函数求最小公倍数。要求:两正整数从对话框输入。将最大公约数和最小公倍数在ondraw()函数中输出。(1)创建一个名为Ex2_1的单文档MFC运用程序;(2)编辑菜单资源,添加一个名为“计算”的菜单项;如图所示:设定菜单项“计算“的ID号为ID_CALCULATE,并在视图类中添加消息响应函数OnCalculate(),在头文件中加入#includeDig.h添加如下代码:voidCEx2_1View::OnCalculate(){//TODO:在此添加命令处理程序代码CDigdig;dig.DoModal();//激活对话框}(3)新插入一对话框,编辑对话框资源,添加控件下表所示控件IDCaption静态控件IDC_STATIC请输入两个数字静态控件IDC_STATIC数字a静态控件IDC_STATIC数字b静态控件IDC_STATIC最小公倍数静态控件IDC_STATIC最大公约数编辑框IDC_EDIT1编辑框IDC_EDIT2编辑框IDC_EDIT3编辑框IDC_EDIT49按钮IDC_BUTTON1计算得到对话框:(3)在新建的对话框中添加一个CDig类,在四个编辑框中分别添加变量:控件ID变量名变量类型说明IDC_EDIT1m_num1int从编辑框中接收数字aIDC_EDIT2m_num2int从编辑框中接收数字bIDC_EDIT3m_mnum1int从编辑框中输出最小公倍数IDC_EDIT1m_mnum2int从编辑框中输出最大公约数(4)在创建类的源文件Dig.cpp中为按钮“计算“添加消息响应函数OnBnClickedButton1(),并添加如下代码:voidCDig::OnBnClickedButton1(){//TODO:在此添加控件通知处理程序代码UpdateData(true);m_mnum1=fun_1(m_num1,m_num2);m_mnum2=func2(m_num1,m_num2);UpdateData(false);}(5)在CDig类中添加函数intfun_1(intm_num1,intm_num2)和intfunc2(intm_num1,intm_num2)分别用于计算两个数的最小公倍数和最大公约数,并添加如下代码:intCDig::fun_1(intm_num1,intm_num2)//计算最小公倍数{intt,m,i;if(m_num1m_num2){t=m_num2;m=m_num1;}10else{t=m_num1;m=m_num2;}if(t%m==0){returnm;}elsefor(i=m-1;i=1;i--){if((t%i==0)&&(m%i==0)){returni;break;}}return0;}intCDig::func2(intm_num1,intm_num2)//计算最大公约数{intt,m,n,s;if(m_num1m_num2){t=m_num2;m=m_num1;}else{t=m_num1;m=m_num2;}if(t%m==0)returnt;else{n=fun_1(t,m);s=n*((m/n)*(t/n));returns;}}(6)运行程序得到如下结果:11实验内容二:使用Cfile和CfileDialog及atl的image类显示输出图像(1)创建一个名为Ex2_2的单文档MFC运用程序;(2)在视图类中添加消息WM_LBOTTONDOWN,并在消息处理函数中添加如下代码

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功