中国石油大学华东VC实验报告doc.docx

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

中国石油大学华东VC实验报告doc.docx

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

中国石油大学华东VC实验报告doc.docx

中国石油大学华东VC实验报告doc

实验一熟悉VisualC++程序调试方法

一、实验目的

(1)熟悉VisualC++6.0开发环境;

(2)掌握在VisualC++6.0开发环境调试程序的方法。

二、实验内容

(1)创建三个项目,项目类型分别为:

Win32ConsoleApplication、Win32

Application和MFCAppWizard(exe),分别编译运行各个程序,观察各种项目类型

程序的特点。

(2)创建一个Win32ConsoleApplication类型的项目,输入下面的代码,按

照要求对代码进行调试。

说明:

下面的程序求100~1000以内的水仙花数,所谓水仙花数就是一个三位

的整数,其个位数字、十位数字和百位数字的立方和等于该数本身的值,则这个数

称为水仙花数。

#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<<"Thetotalnumberofnarcissusnumbersis:

"<

}

调试要求:

􀁺在程序代码的main函数中设置断点,启动程序执行到断点处停止;

􀁺在函数narcissus调用处进入函数内部,跟踪函数执行的过程;

􀁺单步执行程序,观察各个变量值的变化情况;

􀁺单步执行若干步后,跳出函数体,回到main函数。

三、运行结果:

四、记录调试过程中变量值的变化情况:

五、在VisualC++6.0中如何进行程序的跟踪调试;

在VisualC++6.0中利用上述调试工具里的按钮以及设置断点,F11按钮进行程序的跟踪调试。

六、心得与体会:

本次实验是我严格意义上第一次做的VC++的程序,虽然上课时认真听讲,但还是对它有点陌生感。

但是在其他同学的积极帮助下,我最终还是完成率任务。

通过本次实验,我熟悉了VisualC++6.0的开发环境,知道了Win32ConsoleApplication、Win32Application和MFCAppWizard(exe)这三种项目类型对应的程序特点,知道如何调试程序,初步了解了各个项目类型程序的特点。

总之,不管以前基础如何,我一定要学好VC,为以后打下基础。

 

实验二熟悉Windows源程序基本结构

一、实验目的

(1)熟悉VisualC++6.0开发环境;

(2)熟悉Windows系统事件驱动的运行机制;

(3)熟悉Windows应用程序源程序基本结构;

二、实验内容

创建一个空白的Win32Application应用程序,建立相关文件,手工输入下列

代码,实现一个Windows窗口程序。

三、源程序

#include"windows.h"

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessgae,WPARAMwParam,LPARAMlParam);

//LRESULT处理消息产生的一个有符号值;

//WPARAM消息类型

//LPARAM传递参数

intWINAPIWinMain(HINSTANCEhThisInst,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)

//WINAPI函数

//LPSTR字符串

{

WNDCLASSws;

//WNDCLASS窗口类

HWNDhWnd;

MSGmsg;

ws.style=0;

ws.lpfnWndProc=WndProc;

//WNDCLASSEX中最重要的成员。

前缀lpfn表示该成员是一个指向函数的长指针

ws.cbClsExtra=0;

ws.cbWndExtra=0;

ws.hInstance=hThisInst;

ws.hIcon=LoadIcon(NULL,IDI_HAND);

//Loadlcon图标

ws.hCursor=LoadCursor(NULL,IDC_CROSS);

//hCursor光标句柄

//IDC_CROSS十字光标

ws.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

//hbrBackground是主窗口背景色

ws.lpszMenuName=NULL;

ws.lpszClassName="DemoClass";

if(!

RegisterClass(&ws))

//RegisterClass注册窗口类

{

return-1;

}

hWnd=CreateWindow("DemoClass","MyFirstWindowsProgram",

WS_OVERLAPPEDWINDOW,100,200,640,480,

NULL,NULL,hThisInst,NULL);

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

//该函数将虚拟键消息转换为字符消息

DispatchMessage(&msg);

//函数功能该函数分发一个消息给窗口程序。

}

returnmsg.wParam;

}

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessgae,

WPARAMwParam,LPARAMlParam)

{

switch(messgae)

{

caseWM_DESTROY:

//发送WM_QUIT消息

PostQuitMessage(0);

//让消息循环退出

break;

default:

returnDefWindowProc(hwnd,messgae,wParam,lParam);

}

return0;

}

四、运行结果

1、该运行结果为鼠标不在对话框内的情况:

2、该图为鼠标在对话框内的情况:

五、Windows源程序的结构特点,及各个主要程序段的作用

1、事件驱动的程序设计

传统的MS-DOS程序主要采用顺序的、关联的、过程驱动的程序设计方法。

而事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。

2、消息循环与输入

消息类似于DOS下的用户输入,但比DOS的输入来源要广,Windows应用程序的消息来源有以下四种:

(1)输入消息;

(2)控制消息;(3)系统消息;(4)用户消息。

3、图形输出

Windows程序不仅在输入上与DOS程序不同,而且在程序输出上也与DOS有着很大不同,主要表现为:

(1)、DOS程序独占整个显示屏幕,其他程序在后台等待。

(2)、Windows程序的所有输出都是图形。

(3)、Windows下的输出是设备无关的。

4、资源共享

对于DOS程序来说,它运行时独占系统的全部资源,包括显示器、内存等,在程序结束时才释放资源。

而Windows是一个多任务的操作系统,各个应用程序共享系统提供的资源,常见的资源包括:

设备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话线等。

5、Windows程序的组成

编写一个典型的Windows应用程序,一般需要:

(1)、C,CPP源程序文件;

(2)、H,HPP头文件;(3)、资源文件。

6Windows源程序的特点为:

图形界面,面向对象程序设计,事件驱动,高效的内存

管理,设备独立性动态连接。

六、实验总结

1、心得体会:

通过本次上机实验,受益匪浅。

虽然本次实验的源程序已给出,但是我们不能仅仅局限于以给定的程序,还应深入了解其所代表的意义,了解其功能,初步掌握其运行机理。

通过本次实验课,我又学到了许多新知识,扩展了眼界,并一定程度上对老师上课时所讲的内容进行了巩固。

 

实验三Windows图形绘制编程实验

一、实验目的

(1)熟悉VisualC++6.0开发环境;

(2)掌握Windows图形输出的方法;

(3)理解设备环境、画笔、画刷的概念,掌握常用的绘图函数。

二、实验内容

请编写程序,要求如下:

(1)定义一支黄色画笔,绘制一条线段;

(1)定义一支紫色画笔,绘制一条多段线;

(3)定义一支红色画笔,绘制一个正方形,并用适当的画刷填充图形内部;

(4)定义一支绿色画笔,绘制一个圆,并用适当的画刷填充图形内部;

(5)定义一支蓝色画笔,绘制一个正六边形,并用适当的画刷填充图形内部。

三、源程序

//314.cpp:

Definestheentrypointfortheapplication.

//

#include"stdafx.h"

#include"resource.h"

#defineMAX_LOADSTRING100

//GlobalVariables:

HINSTANCEhInst;//currentinstance

TCHARszTitle[MAX_LOADSTRING];//Thetitlebartext

TCHARszWindowClass[MAX_LOADSTRING];//Thetitlebartext

//Fowarddeclarationsoffunctionsincludedinthiscodemodule:

ATOMMyRegisterClass(HINSTANCEhInstance);

BOOLInitInstance(HINSTANCE,int);

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

LRESULTCALLBACKAbout(HWND,UINT,WPARAM,LPARAM);

intAPIENTRYWinMain(HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow)

{

//TODO:

Placecodehere.

MSGmsg;

HACCELhAccelTable;

//Initializeglobalstrings

LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);

LoadString(hInstance,IDC_MY314,szWindowClass,MAX_LOADSTRING);

MyRegisterClass(hInstance);

//Performapplicationinitialization:

if(!

InitInstance(hInstance,nCmdShow))

{

returnFALSE;

}

hAccelTable=LoadAccelerators(hInstance,(LPCTSTR)IDC_MY314);

//Mainmessageloop:

while(GetMessage(&msg,NULL,0,0))

{

if(!

TranslateAccelerator(msg.hwnd,hAccelTable,&msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

}

returnmsg.wParam;

}

//

//FUNCTION:

MyRegisterClass()

//

//PURPOSE:

Registersthewindowclass.

//

//COMMENTS:

//

//Thisfunctionanditsusageisonlynecessaryifyouwantthiscode

//tobecompatiblewithWin32systemspriortothe'RegisterClassEx'

//functionthatwasaddedtoWindows95.Itisimportanttocallthisfunction

//sothattheapplicationwillget'wellformed'smalliconsassociated

//withit.

//

ATOMMyRegisterClass(HINSTANCEhInstance)

{

WNDCLASSEXwcex;

wcex.cbSize=sizeof(WNDCLASSEX);

wcex.style=CS_HREDRAW|CS_VREDRAW;

wcex.lpfnWndProc=(WNDPROC)WndProc;

wcex.cbClsExtra=0;

wcex.cbWndExtra=0;

wcex.hInstance=hInstance;

wcex.hIcon=LoadIcon(hInstance,(LPCTSTR)IDI_MY314);

wcex.hCursor=LoadCursor(NULL,IDC_ARROW);

wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName=(LPCSTR)IDC_MY314;

wcex.lpszClassName=szWindowClass;

wcex.hIconSm=LoadIcon(wcex.hInstance,(LPCTSTR)IDI_SMALL);

returnRegisterClassEx(&wcex);

}

//

//FUNCTION:

InitInstance(HANDLE,int)

//

//PURPOSE:

Savesinstancehandleandcreatesmainwindow

//

//COMMENTS:

//

//Inthisfunction,wesavetheinstancehandleinaglobalvariableand

//createanddisplaythemainprogramwindow.

//

BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)

{

HWNDhWnd;

hInst=hInstance;//Storeinstancehandleinourglobalvariable

hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);

if(!

hWnd)

{

returnFALSE;

}

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

returnTRUE;

}

//

//FUNCTION:

WndProc(HWND,unsigned,WORD,LONG)

//

//PURPOSE:

Processesmessagesforthemainwindow.

//

//WM_COMMAND-processtheapplicationmenu

//WM_PAINT-Paintthemainwindow

//WM_DESTROY-postaquitmessageandreturn

//

//

LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)

{

intwmId,wmEvent;

PAINTSTRUCTps;

HDChdc;

HPENhP;

POINTpt[]={{70,200},{20,180},{20,100}};

POINTpm[]={{200,80},{300,80},{350,156},{300,237},{200,237},{150,156}};

HBRUSHhBr;

TCHARszHello[MAX_LOADSTRING];

LoadString(hInst,IDS_HELLO,szHello,MAX_LOADSTRING);

switch(message)

{

caseWM_COMMAND:

wmId=LOWORD(wParam);

wmEvent=HIWORD(wParam);

//Parsethemenuselections:

switch(wmId)

{

caseIDM_ABOUT:

DialogBox(hInst,(LPCTSTR)IDD_ABOUTBOX,hWnd,(DLGPROC)About);

break;

caseIDM_EXIT:

DestroyWindow(hWnd);

break;

default:

returnDefWindowProc(hWnd,message,wParam,lParam);

}

break;

caseWM_PAINT:

hdc=BeginPaint(hWnd,&ps);

//TODO:

Addanydrawingcodehere...

RECTrt;

SetMapMode(hdc,MM_ANISOTROPIC);

hP=CreatePen(PS_SOLID,9,RGB(255,255,0));

//黄色画笔

SelectObject(hdc,hP);

MoveToEx(hdc,15,15,NULL);

LineTo(hdc,200,15);

//多线段

hP=CreatePen(PS_SOLID,4,RGB(200,0,200));

SelectObject(hdc,hP);

Polyline(hdc,pt,3);

//红色

hP=CreatePen(PS_SOLID,2,RGB(255,0,0));

SelectObject(hdc,hP);

hBr=(HBRUSH)GetStockObject(DKGRAY_BRUSH);

SelectObject(hdc,hBr);

Rectangle(hdc,300,300,400,400);

//绿色

hP=CreatePen(PS_SOLID,2,RGB(0,255,0));

SelectObject(hdc,hP);

hBr=(HBRUSH)GetStockObject(GRAY_BRUSH);

SelectObject(hdc,hBr);

Ellipse(hdc,30,30,100,100);

//蓝色

hP=CreatePen(PS_SOLID,2,RGB(0,0,255));

SelectObject(hdc,hP);

hBr=(HBRUSH)GetStockObject(GRAY_BRUSH);

SelectObject(hdc,hBr);

Polygon(hdc,pm,6);

GetClientRect(hWnd,&rt);

DrawText(hdc,szHello,strlen(szHello),&rt,DT_CENTER);

EndPaint(hWnd,&ps);

break;

caseWM_DESTROY:

PostQuitMessage(0);

break;

default:

returnDefWindowProc(hWnd,message,wParam,lParam);

}

return0;

}

//Mesagehandlerforaboutbox.

LRESULTCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)

{

switch(message)

{

caseWM_INITDIALOG:

returnTRUE;

caseWM_COMMAND:

if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)

{

EndDialog(hDlg,LOWORD(wParam));

returnTRUE;

}

break;

}

returnFALSE;}

四、运行结果:

五、在Windows程序中绘制图形的基本操作步骤

1、获取绘图的窗口句柄;

2、由绘图句柄得到设备环境句柄HDC;

3、图形绘制:

(1)、画笔:

CreatePen、SelectObject、DeleteObject、CreateSolidBrush、GetStockObject、CreateHatchBrush;

(2)、直线:

MoveToEx、LineTo、Rectangle、Ellipse。

六、实验心得与体会:

本次实验是对Windows图形绘制的编程,虽然在课堂上老师仔细讲过该如何编程,但是在轮到自己做实验时还是有点力不从心。

仔细思考一下,还是由于自己的基本知

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

当前位置:首页 > 小学教育 > 语文

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

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