级中国石油大学VC++实验报告.docx

上传人:b****2 文档编号:11623021 上传时间:2023-06-01 格式:DOCX 页数:52 大小:300.15KB
下载 相关 举报
级中国石油大学VC++实验报告.docx_第1页
第1页 / 共52页
级中国石油大学VC++实验报告.docx_第2页
第2页 / 共52页
级中国石油大学VC++实验报告.docx_第3页
第3页 / 共52页
级中国石油大学VC++实验报告.docx_第4页
第4页 / 共52页
级中国石油大学VC++实验报告.docx_第5页
第5页 / 共52页
级中国石油大学VC++实验报告.docx_第6页
第6页 / 共52页
级中国石油大学VC++实验报告.docx_第7页
第7页 / 共52页
级中国石油大学VC++实验报告.docx_第8页
第8页 / 共52页
级中国石油大学VC++实验报告.docx_第9页
第9页 / 共52页
级中国石油大学VC++实验报告.docx_第10页
第10页 / 共52页
级中国石油大学VC++实验报告.docx_第11页
第11页 / 共52页
级中国石油大学VC++实验报告.docx_第12页
第12页 / 共52页
级中国石油大学VC++实验报告.docx_第13页
第13页 / 共52页
级中国石油大学VC++实验报告.docx_第14页
第14页 / 共52页
级中国石油大学VC++实验报告.docx_第15页
第15页 / 共52页
级中国石油大学VC++实验报告.docx_第16页
第16页 / 共52页
级中国石油大学VC++实验报告.docx_第17页
第17页 / 共52页
级中国石油大学VC++实验报告.docx_第18页
第18页 / 共52页
级中国石油大学VC++实验报告.docx_第19页
第19页 / 共52页
级中国石油大学VC++实验报告.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

级中国石油大学VC++实验报告.docx

《级中国石油大学VC++实验报告.docx》由会员分享,可在线阅读,更多相关《级中国石油大学VC++实验报告.docx(52页珍藏版)》请在冰点文库上搜索。

级中国石油大学VC++实验报告.docx

级中国石油大学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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2