您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > VC程序设计实验指导
VC++程序设计实验指导书李贵荣计算机技术实验中心《VC++程序设计》实验指导书1前言一、上机实验目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解VisualC++面向对象与可视化开发工具的基本功能和用法,掌握MFC的类框架结构,学会使用VisualC++编写Windows应用程序。二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了4个必做实验。学生可以在课内机时先完成指导书中给出的程序,理解所学的知识,在此基础上再编写其他应用程序。指导书中的4个实验如下。1.基本Windows程序设计(2H,必做)。2.简单图形界面程序设计(2H,必做)。3.多文档程序设计(2H,必做)。4.综合性程序设计(4H,必做)。三、实验任务与时间安排《VisualC++程序设计》是一门实践性很强的课程,除了在课内安排的实验外,鼓励同学在课外用相关技术进行编程练习。《VisualC++程序设计》上机实验时间为10学时,与教学内容同时进行上机实验。10个上机学时分为4个必做实验。《VC++程序设计》实验指导书2目录实验一简单Windows程序设计.............................................3实验二简单界面设计.....................................................7实验三多文档程序设计..................................................14实验四综合设计实验....................................................18《VC++程序设计》实验指导书3实验一简单Windows程序设计【实验目的】1.学会创建VisualC++6.0Win32应用程序工程文件。2.掌握Windows应用程序的基本结构。3.理解Windows编程中的窗口、句柄、消息传递等概念及其作用。4.理解Windows图形设备接口的概念及了解常用Windows绘图函数。5.学会在VisualC++6.0中编译、调试、发布应用程序。【实验性质】验证性实验(学时数:2H)【实验要求】1.在Windows下启动VisualC++6.0,创建工程文件。2.编写一个简单的Windows应用程序,并在程序中创建句柄,学会使用句柄。3.分析上面的程序,在程序中使用注释语句标识出Windows程序的基本构成部分,并在注释语句中注明各部分的作用。4.在上面程序中添加消息处理函数,使用程序完成如下功能:(1)定义一只红色的画笔,绘制一个等边五边形;(2)用不同颜色的线条连接互不想念的两个点;(3)用不同颜色的画笔填充用上述方法所形成的图形中的每一个区域。【参考程序】#includewindows.h#includestdlib.h#includestring.h#includemath.h#definePi3.1415926longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);//消息处理函数声明.BOOLInitWindowsClass(HINSTANCEhInstance);//初始化窗口类声明BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);//初始化窗口声明.HWNDhWndMain;intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow)//主函数{MSGMessage;《VC++程序设计》实验指导书4if(!InitWindowsClass(hInstance))//初始化窗口类.returnFALSE;if(!InitWindows(hInstance,nCmdShow))//初始化窗口.returnFALSE;while(GetMessage(&Message,0,0,0)){TranslateMessage(&Message);//消息循环.DispatchMessage(&Message);}returnMessage.wParam;}longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)//消息处理函数.{HDChDC;//定义设备环境句柄.HBRUSHhBrush;//定义画刷句柄HPENhPen;//定义画笔句柄PAINTSTRUCTPtStr;//定义包含绘图信息的结构体变量doubledfRadious0=200.0,dfRadious1;//定义外部和内部正五边形外接圆半径.POINTlpOuterPoints[5],lpInnerPoints[5];//定义外,内正五边形点结构数组.POINTlpTriangle[3];//定义三角形点结构数组.dfRadious1=dfRadious0*sin(0.1*Pi)/sin(126.0/180*Pi);//根据外圆半径计算内园半径.//计算内外正五边形的点坐标.for(inti=0;i5;i++){lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi))+200;lpOuterPoints[i].y=(long)(dfRadious0*sin(i*72.0/180*Pi))+200;lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi))+200;lpInnerPoints[i].y=(long)(dfRadious1*sin(i*72.0/180*Pi+36.0/180*Pi))+200;}switch(iMessage){caseWM_PAINT://处理绘图消息.hDC=BeginPaint(hWnd,&PtStr);//得到设备环境句柄SetMapMode(hDC,MM_ANISOTROPIC);//设置映射模式.SetWindowOrgEx(hDC,-100,-100,NULL);//设置坐标原点.hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));//创新红色画笔.SelectObject(hDC,hPen);//将画笔选入.Polygon(hDC,lpOuterPoints,5);//画正五边形.//填充正五边形的不同区域.for(i=0;i5;i++)《VC++程序设计》实验指导书5{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);//向应用程序发送WM_QUIT消息.return0;default:return(DefWindowProc(hWnd,iMessage,wParam,lParam));}}BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)//初始化{HWNDhWnd;//定义窗口句柄.hWnd=CreateWindow(Polygon,//窗口类名.五边形,//窗口实例标题.WS_OVERLAPPEDWINDOW,//窗口风格.带边框,标题栏,系统菜单和最大和最小按钮.《VC++程序设计》实验指导书6CW_USEDEFAULT,//窗口左上角坐标.0,//窗口左上角坐标.CW_USEDEFAULT,//窗口宽度0,//窗口高度NULL,//无父窗口.NULL,//无主菜单.hInstance,//创建此窗口的应用程序的当前句柄.NULL);//指向一个传递给窗口的参数值从指针.//不使用该值.if(!hWnd)//如果窗口创建失败,返回false.returnFALSE;hWndMain=hWnd;//将窗口句柄传递给全局变量.ShowWindow(hWnd,nCmdShow);//显示窗口.UpdateWindow(hWnd);//更新并绘制用户区.returnTRUE;}BOOLInitWindowsClass(HINSTANCEhInstance)//初始化窗口类.{WNDCLASSWndClass;//定义窗口类.WndClass.cbClsExtra=0;//窗口类无扩展.WndClass.cbWndExtra=0;//窗口实例无扩展.WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));//窗口背景为白色.WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标.WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化图标为缺省图标.WndClass.hInstance=hInstance;//当前实例句柄.WndClass.lpfnWndProc=WndProc;//窗口处理函数.WndClass.lpszClassName=Polygon;//窗口类名.WndClass.lpszMenuName=NULL;//无菜单WndClass.style=0;//窗口类型为缺省类型.returnRegisterClass(&WndClass);//返回注册窗口的值.}《VC++程序设计》实验指导书7实验二简单界面设计【实验目的】使用MFC应用程序向导,生成Windows基本对话框。通过对Windows基本对话框的学习和使用,了解MFC的类库结构,掌握CDialog的基本组成,了解对话框程序的工作过程,学习使用常用的Windows控件,学会编写消息处理函数。【实
本文标题:VC程序设计实验指导
链接地址:https://www.777doc.com/doc-6315942 .html