级中国石油大学VC++实验报告.docx
- 文档编号:24819841
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:52
- 大小:300.15KB
级中国石油大学VC++实验报告.docx
《级中国石油大学VC++实验报告.docx》由会员分享,可在线阅读,更多相关《级中国石油大学VC++实验报告.docx(52页珍藏版)》请在冰豆网上搜索。
级中国石油大学VC++实验报告
VisualC++面向对象与可视化程序设计
实验报告
姓名:
郑长明
班级:
电气10-2
学号:
10053228
实验一VisualC++程序调试实验.............................................................................3
实验二C++类基本语法实验.....................................................................................6
实验三Windows图形绘制编程实验.......................................................................8实验四鼠标和键盘编程实验...................................................................................13实验五定时器编程实验...........................................................................................18实验六MFC消息映射编程实验...............................................................................21实验七MFC控件编程实验.......................................................................................25实验八MFC鼠标做图编程实验.........................................................................................33
实验一VisualC++程序调试实验
一、实验目的
(1)熟悉VisualC++6.0开发环境;
(2)掌握在VisualC++6.0开发环境调试程序的方法。
二、实验报告
(1)观察三种项目类型对应的程序特点,做出简要说明;
Win32Application
就是普通的常见的窗口应用程序,当然有的界面做得比较个性化,比如圆形的、不规则形状的。
他们都是所谓的GUI(GraphicsUserInterface图形用户接口),我们可以通过鼠标点击来完成控制。
Win32ConsoleApplication(win32控制台应用程序)
往往是像MS-DOS窗口(XP中叫命令提示符)的样子出现,我们得用键盘输入各种命令来使用它;或者叫CUI(CharacterUserInterface字符用户接口)。
MFCAPPWIZARD:
MFC程序向导,微软为了减轻开发人员的工作负担,推出了MFC,MFC其实是一个框架,里面包含了200多个类,MFC比较复杂,MFC框架把基本的功能都实现了,你只是需要把你特殊的功能加到MFC里面,比如你想建一个windows窗口,MFCAPPWIZARD下,MFC中自包含了CWnd串口类,但是win32application,就是要你自己写一个窗口类,才能用。
(2)列出C++程序清单,以及程序的运行结果;
#include"iostream.h"
#include"math.h"
voidnarcissus();
voidmain()
{narcissus();}
voidnarcissus()
{
intx1;
intx20;
intx2;
intx3;
intcount=0;
for(intx=100;x<1000;x++)
{
x1=x/100;
x20=x%100;
x2=x20/10;
x3=x20%10;
if(x1*x1*x1+x2*x2*x2+x3*x3*x3==x)
{
count++;
cout<<"Onenarcissusnumberfound:
"< } } cout<<"Thetotalnumberofnarcissusnumberis: "< } (3)记录调试过程中变量值的变化情况; (4)在VisualC++6.0中如何进行程序的跟踪调试; 输完程序后先设置断点,再点F5GO全速运行,再点F11stepinto进入函数体,最后点F10单步执行即可。 (5)总结实验的心得体会,实验中遇到的困难以及解决的方法等。 首先是建工程的问题,以前总是使用C++sourcefile,现在换别的工程不会建立了; 其次是刚开始不知道怎么调试,不会但不执行和进出主函数操作。 后来进行简单学习知道了使用一些快捷键快速调试。 通过本次实验我了解了C++3种Win32ConsoleApplication、Win32Application和MFCAppWizard(exe)工程的建立。 主要学会了如何进行程序调试和观察变量值的变化。 实验二C++类基本语法实验 一、实验目的 (1)熟悉VisualC++6.0开发环境; (2)熟悉C++类设计的基本方法; (3)掌握C++类的几个重要成员函数的定义和使用方法; 二、实验内容 创建一个Employee类,该类中有字符数组,表示姓名、街道地址、市、省和 邮政编码。 其功能有修改姓名、显示数据信息。 要求其功能函数的原型放在类定义 中,构造函数初始化每个成员,显示信息函数要求把对象中的完整信息打印出来。 其中数据成员为保护的,函数为公有的。 (1)列出C++程序清单,以及程序的运行结果 程序如下: #include #include classEmployee { protected: charname[200];//这个是姓名数组 charaddress[200];//这个是存放地址的 charshi[200];//这个是存放市的 charsheng[200];//这个是存放省的 charyoubian[200];//这个是存放邮编的 public: Employee(char*p,char*q,char*m,char*n,char*r) { strcpy(name,p); strcpy(address,q); strcpy(shi,m); strcpy(sheng,n); strcpy(youbian,r); } voidchangename(Employeea)//这是改变名字的 { charname1[200]; cout< cout<<"请输入新名字: "< cin>>name1; cout< cout<<"正在修改,请等待...修改完成! "< strcpy(name,name1); } voiddisplay()//这是显示输出的 { cout<<"姓名: "< cout<<"街道地址: "< cout<<"市: "< cout<<"省: "< cout<<"邮编: "< } }; voidmain() { Employeeaa("小明","公安小区1号","徐州","江苏","221000"); aa.display(); aa.changename(aa); aa.display(); } (2)总结实验的心得体会,实验中遇到的困难以及解决的方法等 刚开始编写的程序比较复杂,错误很多,不是少个分号就是多个大括号。 其次程序比较不美观,感觉界面很陈旧,所以后来对输出界面做了比较人性化的美化工作。 实验中的一些错误的改正: (1)在类内不允许对所定义的数据成员进行初始化。 (2)类中的数据成员的类型可以是任意的,包括整型、浮点型、字符型、数组、指针和引用等。 也可以是对象,即另一个类的对象,可以作为该类的成员,但自身类的对象是不可以的。 (3)一般地,在类内先说明公有成员,它们是用户关心的,后面说明私有成员。 (4)一般将类定义的说明部分或者整个定义部分(包含实现部分)放在一个头文件中。 (5)在类的说明部分之后必须加分号“;”。 本次实现我深刻的学习了C++的基本语法规范,学习了关于类的声明与定义,学会了使用strcmp函数,深刻的理解了C++中类的封装的优越性。 实验三Windows图形绘制编程实验 一、实验目的 (1)熟悉VisualC++6.0开发环境; (2)掌握Windows图形输出的方法; (3)理解设备环境、画笔、画刷的概念,掌握常用的绘图函数。 二、实验内容 请编写程序,要求如下: (1)定义一支红色画笔,绘制一个正方形; (2)用不同颜色的线条连接互不相邻的两个顶点; (3)用不同颜色的画刷填充用上述方法所形成的图形中的每一个区域。 三、实验报告 (1)列出图形绘制程序代码清单; #include #include LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明 //---------------以下初始化窗口类---------------------- intWINAPIWinMain(HINSTANCEhInstance, HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow) { HWNDhwnd; MSGMsg; WNDCLASSwndclass; //LPCWSTRlpszClassName=_T("窗口");//窗口类名 //LPCWSTRlpszTitle=L"My_Windows";//窗口标题名 charlpszClassName[]="窗口";//窗口类名 charlpszTitle[]="基本绘图练习";//窗口标题名 //窗口类的定义 wndclass.style=0;//窗口类型为缺省类型 wndclass.lpfnWndProc=WndProc;//定义窗口处理函数 wndclass.cbClsExtra=0;//窗口类无扩展 wndclass.cbWndExtra=0;//窗口实例无扩展 wndclass.hInstance=hInstance;//当前实例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为缺省图标 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); //窗口采用箭头光标 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); //窗口背景为白色 wndclass.lpszMenuName=NULL;//窗口中无菜单 wndclass.lpszClassName=lpszClassName; //窗口类名为"窗口" //---------------以下进行窗口类的注册------- if(! RegisterClass(&wndclass))//如果注册失败则发出警告 {MessageBeep(0);returnFALSE;} //----------------创建窗口------------------- hwnd=CreateWindow ( //_T("Title"), lpszClassName,//窗口类名 lpszTitle,//窗口实例的标题名 WS_OVERLAPPEDWINDOW,//窗口的风格 CW_USEDEFAULT, CW_USEDEFAULT,//窗口左上角坐标为缺省值 CW_USEDEFAULT, CW_USEDEFAULT,//窗口的高和宽为缺省值 NULL,//此窗口无父窗口 NULL,//此窗口无主菜单 hInstance,//创建此窗口的应用程序的当前句柄 NULL//不使用该值 ); //---------------显示窗口---------------------- ShowWindow(hwnd,nCmdShow); //--------------绘制用户区--------------------- UpdateWindow(hwnd); //---------------消息循环---------------------- while(GetMessage(&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } returnMsg.wParam;//消息循环结束即程序终止时将信息返回系统 } //窗口函数 LRESULTCALLBACKWndProc (HWNDhwnd, UINTmessage, WPARAMwParam, LPARAMlParam ) { HDChDC;//定义指向设备的句柄 HBRUSHhBrush;//定义指向画刷的句柄 HPENhPen;//定义指向画笔的句柄 PAINTSTRUCTPtStr;//定义指向包含绘图信息的结构变量 POINTpoints1[3],points2[3],points3[3],points4[3]; points1[0].x=10; points1[0].y=10; points1[1].x=100; points1[1].y=10; points1[2].x=55; points1[2].y=55; points2[0].x=55; points2[0].y=55; points2[1].x=100; points2[1].y=10; points2[2].x=100; points2[2].y=100; points3[0].x=100; points3[0].y=100; points3[1].x=55; points3[1].y=55; points3[2].x=10; points3[2].y=100; points4[0].x=10; points4[0].y=100; points4[1].x=55; points4[1].y=55; points4[2].x=10; points4[2].y=10; switch(message) { caseWM_PAINT: //处理绘图消息 hDC=BeginPaint(hwnd,&PtStr); SetMapMode(hDC,MM_ISOTROPIC);//设置映像模式 SetWindowExtEx(hDC,50,50,NULL); SetViewportExtEx(hDC,100,500,NULL); hBrush=(HBRUSH)CreateSolidBrush(RGB(0,100,100)); SelectObject(hDC,hBrush); Polygon(hDC,points1,3); hBrush=(HBRUSH)CreateSolidBrush(RGB(100,0,100)); SelectObject(hDC,hBrush); Polygon(hDC,points2,3); hBrush=(HBRUSH)CreateSolidBrush(RGB(100,100,100)); SelectObject(hDC,hBrush); Polygon(hDC,points3,3); hBrush=(HBRUSH)CreateSolidBrush(RGB(100,100,0)); SelectObject(hDC,hBrush); Polygon(hDC,points4,3); hPen=CreatePen(PS_SOLID,2,RGB(0,255,255)); SelectObject(hDC,hPen); MoveToEx(hDC,10,10,NULL); LineTo(hDC,100,10); hPen=CreatePen(PS_SOLID,2,RGB(0,255,0)); SelectObject(hDC,hPen); MoveToEx(hDC,100,10,NULL); LineTo(hDC,100,100); hPen=CreatePen(PS_SOLID,2,RGB(0,0,255)); SelectObject(hDC,hPen); MoveToEx(hDC,100,100,NULL); LineTo(hDC,10,100); hPen=CreatePen(PS_SOLID,2,RGB(255,255,0)); SelectObject(hDC,hPen); MoveToEx(hDC,10,100,NULL); LineTo(hDC,10,10); hPen=CreatePen(PS_SOLID,2,RGB(255,0,255)); SelectObject(hDC,hPen); MoveToEx(hDC,10,10,NULL); LineTo(hDC,100,100); hPen=CreatePen(PS_SOLID,2,RGB(255,0,0)); SelectObject(hDC,hPen); MoveToEx(hDC,100,10,NULL); LineTo(hDC,10,100); hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH);//深灰色刷 SelectObject(hDC,hBrush); Rectangle(hDC,150,100,200,150); DeleteObject(hBrush); DeleteObject(hPen); EndPaint(hwnd,&PtStr);//结束绘图 return0; caseWM_DESTROY: PostQuitMessage(0); default: //缺省时采用系统消息缺省处理函数 returnDefWindowProc(hwnd,message,wParam,lParam); } return(0); } (2)总结在Windows程序中绘制图形的基本操作步骤; (1)分别定义指向设备上下文、画刷、画笔的句柄,定义指向包含绘图信息的结构体变量。 (2)在处理绘图消息的时候首设置好映像模式,编写绘图程序时先选择画笔与画刷。 (3)在编写绘图程序。 (4)绘图程序写完后释放画刷画笔句柄,结束绘图程序。 (3)总结实验的心得体会,实验中遇到的困难以及解决的方法等。 实验刚开始,对于实验的基本操作不够熟悉。 尤其是在对画笔和画刷的初始化上没有足够的认识,导致浪费了一些时间。 经过一节课的摸索逐渐的熟悉了画刷和画笔的使用。 有了对画笔的使用基础,对于各种绘图函数都能灵活运用。 在绘制多边形时,对于其中要求的坐标表示的概念比较模糊,在同学的帮助下才知道需要先定义一个包含坐标的数组,然后在绘制图形时进行引用便行了。 实验四鼠标和键盘编程实验 一、实验目的 (1)掌握键盘和鼠标的消息传递机制; (2)掌握在Windows程序中处理键盘和鼠标消息的方法; (3)掌握在VisualC++的程序调试方法。 二、实验内容 请编写程序,要求如下: (1)在屏幕上绘制一个矩形,并分成4个区域; (2)在矩形内移动鼠标时,在4个区域中显示不同的光标,并在屏幕上打印光 标坐标; (3)处理SHIFT和CTRL键消息,按下键时,显示一个消息框。 三、消息处理程序代码清单 #include #include #include LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明 //---------------以下初始化窗口类---------------------- intWINAPIWinMain(HINSTANCEhInstance, HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow) { HWNDhwnd; MSGMsg; WNDCLASSwndclass; //LPCWSTRlpszClassName=_T("窗口");//窗口类名 //LPCWSTRlpszTitle=L"My_Windows";//窗口标题名 charlpszClassName[]="窗口";//窗口类名 charlpszTitle[]="My_Windows";//窗口标题名 //窗口类的定义 wndclass.style=0;//窗口类型为缺省类型 wndclass.lpfnWndProc=WndProc;//定义窗口处理函数 wndclass.cbClsExtra=0;//窗口类无扩展 wndclass.cbWndExtra=0;//窗口实例无扩展 wndclass.hInstance=hInstance;//当前实例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); //窗口的最小化图标为缺省图标 wndclass.hCursor=Load
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国 石油大学 VC 实验 报告