为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

VC程序设计实验指导

2021-02-22 2页 doc 151KB 3阅读

用户头像 机构认证

峰海资料库

希望这份文档帮到您

举报
VC程序设计实验指导VC程序设计实验指导VC++程序设计实验指导书李贵荣计算机技术实验中心前言一、上机实验目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解VisualC++面向对象与可视化开发工具的基本功能和用法,掌握MFC的类框架结构,学会使用VisualC++编写Windows应用程序。二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了4个必做实验。学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。指导书中的4个实验如下。1.基本Window...
VC程序设计实验指导
VC程序实验指导VC++程序设计实验指导李贵荣计算机技术实验中心前言一、上机实验目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解VisualC++面向对象与可视化开发工具的基本功能和用法,掌握MFC的类框架结构,学会使用VisualC++编写Windows应用程序。二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了4个必做实验。学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。指导书中的4个实验如下。1.基本Windows程序设计(2H,必做)。2.简单图形界面程序设计(2H,必做)。3.多文档程序设计(2H,必做)。4.综合性程序设计(4H,必做)。三、实验任务与时间安排《VisualC++程序设计》是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术进行编程练习。《VisualC++程序设计》上机实验时间为10学时,与教学内容同时进行上机实验。10个上机学时分为4个必做实验。目录TOC\o"1-3"\h\z实验一简单Windows程序设计3实验二简单界面设计7实验三多文档程序设计14实验四综合设计实验18实验一简单Windows程序设计【实验目的】1.学会创建VisualC++Win32应用程序文件。2.掌握Windows应用程序的基本结构。3.理解Windows编程中的窗口、句柄、消息传递等概念及其作用。4.理解Windows图形设备接口的概念及了解常用Windows绘图函数。5.学会在VisualC++中编译、调试、发布应用程序。【实验性质】验证性实验(学时数:2H)【实验要求】1.在Windows下启动VisualC++,创建工程文件。2.编写一个简单的Windows应用程序,并在程序中创建句柄,学会使用句柄。3.分析上面的程序,在程序中使用注释语句标识出Windows程序的基本构成部分,并在注释语句中注明各部分的作用。4.在上面程序中添加消息处理函数,使用程序完成如下功能:(1)定义一只红色的画笔,绘制一个等边五边形;(2)用不同颜色的线条连接互不想念的两个点;(3)用不同颜色的画笔填充用上述方法所形成的图形中的每一个区域。【参考程序】#include<>#include<>#include<>#include<>#definePilongWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);BOOLInitWindowsClass(HINSTANCEhInstance);HWNDhWndMain;intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)returnFALSE;if(!InitWindows(hInstance,nCmdShow))returnFALSE;while(GetMessage(&Message,0,0,0)){TranslateMessage(&Message);DispatchMessage(&Message);}return;}longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam){HDChDC;HBRUSHhBrush;POINTlpOuterPoints[5],lpInnerPoints[5];POINTlpTriangle[3];dfRadious1=dfRadious0*sin*Pi)/sin180*Pi);for(inti=0;i<5;i++){lpOuterPoints[i].x=(long)(dfRadious0*cos(i*180*Pi))+200;lpOuterPoints[i].y=(long)(dfRadious0*sin(i*180*Pi))+200;lpInnerPoints[i].x=(long)(dfRadious1*cos(i*180*Pi+180*Pi))+200;lpInnerPoints[i].y=(long)(dfRadious1*sin(i*180*Pi+180*Pi))+200;}switch(iMessage){caseWM_PAINT:hDC=BeginPaint(hWnd,&PtStr);SetWindowOrgEx(hDC,-100,-100,NULL);hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));SelectObject(hDC,hPen);Polygon(hDC,lpOuterPoints,5);for(i=0;i<5;i++){lpTriangle[0]=lpOuterPoints[i%5];lpTriangle[1]=lpInnerPoints[i%5];lpTriangle[2]=lpOuterPoints[(i+1)%5];hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));SelectObject(hDC,hBrush);Polygon(hDC,lpTriangle,3);lpTriangle[2]=lpInnerPoints[(i+4)%5];hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));SelectObject(hDC,hBrush);Polygon(hDC,lpTriangle,3);}hBrush=CreateSolidBrush(RGB(255,255,255));SelectObject(hDC,hBrush);Polygon(hDC,lpInnerPoints,5);MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL);for(i=1;i<=5;i++){hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));SelectObject(hDC,hPen);LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y);}hPen=(HPEN)(GetStockObject(PS_NULL));DeleteObject(hPen);DeleteObject(hBrush);EndPaint(hWnd,&PtStr);return0;caseWM_DESTROY:PostQuitMessage(0);return0;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam));}}BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)hWnd=CreateWindow("Polygon","五边形",WS_OVERLAPPEDWINDOW,边框,标题栏,系统菜单和最大和最小按钮.CW_USEDEFAULT,0,CW_USEDEFAULT,NULL,hInstance,NULL);if(!hWnd)returnFALSE;hWndMain=hWnd;ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);returnTRUE;}BOOLInitWindowsClass(HINSTANCEhInstance){WNDCLASSWndClass;=0;=0;=(HBRUSH)(GetStockObject(WHITE_BRUSH));=LoadCursor(NULL,IDC_ARROW);=LoadIcon(NULL,IDI_APPLICATION);=hInstance;=WndProc;="Polygon";=NULL;returnRegisterClass(&WndClass);}实验二简单界面设计【实验目的】使用MFC应用程序向导,生成Windows基本对话框。通过对Windows基本对话框的学习和使用,了解MFC的类库结构,掌握CDialog的基本组成,了解对话框程序的工作过程,学习使用常用的Windows控件,学会编写消息处理函数。【实验性质】验证性实验(学时数:2H)【实验要求】使用MFC应用程序向导编写一个基本对话框程序。在程序综合运用静态文本框、编辑框、按钮控件,在程序练习使用文件对话框、颜色选择对话框、字体对话框、打印对话框等常用类。【实验内容】编写一个简单的计算器程序,要求有两个操作数,实现加、减、乘、除。参考界面如下图:."menuitemtosystemmenu.ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX<0xF000);CMenu*pSysMenu=GetSystemMenu(FALSE);if(pSysMenu!=NULL){CStringstrAboutMenu;(IDS_ABOUTBOX);if(!()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);}}TheframeworkdoesthisautomaticallyHCURSORCMy11_4Dlg::OnQueryDragIcon(){return(HCURSOR)m_hIcon;}voidCMy11_4Dlg::OnDifferenceButton(){doubledfItem1,dfItem2,dfResult;charcBuffer[10];(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1-dfItem2;储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBuffer;}voidCMy11_4Dlg::OnAddButton(){charcstrItem1[10],cstrItem2[10];doubledfItem1,dfItem2,dfResult;charcBuffer[50];(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1+dfItem2;储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBuffer;}voidCMy11_4Dlg::OnMultipleButton(){charcstrItem1[10],cstrItem2[10];doubledfItem1,dfItem2,dfResult;charcBuffer[10];(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1*dfItem2;储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBuffer;}voidCMy11_4Dlg::OnDevideButton(){charcstrItem1[10],cstrItem2[10];doubledfItem1,dfItem2,dfResult;charcBuffer[10];(cstrItem1,10);(cstrItem2,10);dfItem1=atof((LPCTSTR)cstrItem1);dfItem2=atof((LPCTSTR)cstrItem2);dfResult=dfItem1/dfItem2;储在cbuffer中.m_sResult_Edit=(LPCTSTR)cBuffer;}voidCMy11_4Dlg::OnExitButton(){OnOK();}实验三多文档程序设计【实验目的】了解Windows程序的文档、视图结构的基本概念,学会使用AppWizard创建基于文档/视图结构的框架应用程序以及文档类、视图类和文档模板类的应用。【实验性质】验证性实验(学时数:2H)【实验要求】1.掌握MicrosoftMFC中支持的文档/视图结构的基本概念,学会通过应用程序向导生成单文档(SDI)和多文档应用程序(MDI)。2.编写简单单文档界面应用程序。3.编写简单多文档界面应用程序。【实验内容】(一)单文档界面程序设计创建一个应用程序,其界面的标题为MySdi。在应用程序的主窗口中显示一行文本“您好,单文档界面的例程!”,并始终出现在窗口的中央。在“编辑”菜单上有一个菜单项“改变显示文本”,单该项可以弹出一个对话框,通过这个对话框可以改变主窗口中的显示文本。(1)创建工程文件首先创建一个MFCAppWizard(exe)工程文件,并取名为MySdi。建立MySdi应用程序工程文件时选择SingleDocument(单文档)选项,其他的都是默认选项。(2)添加资源为程序添加一个简单对话框CDlgInput,其中有一个文本输入控件IDC_EDIT1,关联的成员变量为m_input,类型为CString。操作过程如前面对话框实验。(3)为CMysdiDoc类添加成员变量为CMysdiDoc类添加成员变量可以有两种方法。第一种方法是利用VC的可视化编程工具。在Workspace窗口的ClassView选项卡中展开MysdiClasses,可以看到AppWizard为Mysdi程序生成的所有类。右击CMysdiDoc类,在弹出菜单中单击AddMemberVariable选项,在VariableType框中输入成员变量的类型CString,在VariableDeclaration框中输入成员变量名m_str。由于希望其他类的对象可以访问该成员变量,因此访问类型设置为public。单击OK将该成员变量的定义添加到类的定义中。第二种方法是手动的在CMysdiDoc的定义()中添加,直接为其添加一个成员变量。public:CStringm_str;(4)文档变量初始化为了测试该程序,我们在CMsdiDoc的OnNewDocument成员变量中为公有成员m_str赋以“您好,单文档界面的例程!”,方法是使用下面的代码替换OnNewDocument的实现代码中的“md)\\\nMymdiDocument"这是第一个文档类的的资源字符串,在后面加入:IDR_MYMDITYPE2"\nMymdi2\nMymdi2\nMymdi2文件(*.mm2)\\\nMymdi2Document"这是第二个文档类的资源字符串。(4)菜单、对话框资源单击Workplace窗口中的ResourceView选项卡,展开MyMdiresources|Menu,在“编辑”子菜单中添加一个新的菜单项“改变显示文本”,并将此菜单项的ID设置为ID_EDIT_CHANGETEXT。使用对话框实验中的方法,生成对话框类CDlgInput,并添加EditBox控件及其相关联的成员变量m_input,类型为CString。(5)代码编辑创建文档模板类,因为本应用程序支持多种文档,所以在应用程序的InitInstance()函数中,需要定义新的文档模板的对象,打开文件,查找如下代码:BOOLCMymdiApp::InitInstance(){AfxEnableControlContainer();……..CMultiDocTemplate*pDocTemplate;pDocTemplate=newCMultiDocTemplate(IDR_MYMDITYPE,RUNTIME_CLASS(CMymdiDoc),RUNTIME_CLASS(CChildFrame),上面是第一个文档的模板,下面在它的后面添加第二个文档的模板,代码如下:CMultiDocTemplate*pDocTemplate;pDocTemplate=newCMultiDocTemplate(IDR_MYMDITYPE,RUNTIME_CLASS(CMymdiDoc),RUNTIME_CLASS(CChildFrame),//customMDIchildframeRUNTIME_CLASS(CMymdiView));AddDocTemplate(pDocTemplate);CMultiDocTemplate*pDocTemplate2;pDocTemplate2=newCMultiDocTemplate(IDR_MYMDITYPE2,RUNTIME_CLASS(CMymdiDoc2),//MDI派生文档类的CRuntimeClass对象的指针RUNTIME_CLASS(CChildFrame),//MDI派生子框架类的CRuntimeClass对象的指针RUNTIME_CLASS(CMymdiView2));//创建文档模板的对象AddDocTemplate(pDocTemplate2);//将新模板添加到应用程序的文档模板列表中为了使CMyMdiApp类能够访问第二个文档/视图,需要在中加入它们的头文件。#include""#include""完善CMyMdiDoc2类,部分代码如下:BOOLCMymdiDoc2::OnNewDocument(){if(!CDocument::OnNewDocument())returnFALSE;m_str="您好,多文档界面的例程!";returnTRUE;}voidCMymdiDoc2::Serialize(CArchive&ar){if()){ar<>m_str;//读取文档内容}}///////////////////////////////////////////////////////////////////////////////CMymdiDoc2commandsvoidCMymdiDoc2::OnEditChangetext(){//TODO:AddyourcommandhandlercodehereCDlgInputinputDlg;//建立一个CinputDlg的对象inputDlgif(()==IDOK)//使inputDlg成为一个模式对话框{m_str=;//获取输入的字符串UpdateAllViews(NULL);//更新视图}}视图输出,需要在CMyMdiView2::OnDraw(CDC*pDC)中添加下列代码:voidCMymdiView2::OnDraw(CDC*pDC){CMymdiDoc2*pDoc=(CMymdiDoc2*)GetDocument();ASSERT_VALID(pDoc);//TODO:Addyourspecializedcodehereand/orcallthebaseclassCRectrectClient;//获取当前客户区的大小GetClientRect(rectClient);CSizesizeClient=();CStringstr=pDoc->m_str;//从文件中读取数据CSizesizeTextExtent=pDC->GetTextExtent(str);//用新选定的字体绘制字符串pDC->TextOut(str);}实验四综合设计实验【实验目的】了解VisualC++开发环境的常用功能,使用VisualC++编写对话框/文档视图结构程序,综合运用C++的面向对象程序设计方法,了解MFC类库结构和掌握常用MFC类,学会运用VisualC++较熟练开发MFC应用程序。【实验性质】综合性实验(学时数:4H)【实验要求】1.了解MFC类库结构,熟悉常用的MFC类。2.根据个人特点和兴趣,使用VisualC++设计一个功能较完善的Windows应用程序。3.内容可以选择下面的内容之一:(1)多媒体应用程序(2)数据库应用程序(3)网络应用程序4.人机界面要求:主界面的菜单项/按钮不少于5个,其功能均要求实现;对话框不少于3个。5.程序的文档要求:要求程序的说明和注释尽可能详尽,通过注释能够反映出程序的思路和执行流程。【实验内容】本次实验为设计型实验,实验内容由学生根据自身情况选择。可以参考教材中的第4篇----VisualC++高级编程中的部分内容。CTRL+A全选可调整字体属性及字体大小-CAL-FENGHAI.NetworkInformationTechnologyCompany.2020YEAR
/
本文档为【VC程序设计实验指导】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索