可视化实验报告.docx
- 文档编号:2437963
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:24
- 大小:192.40KB
可视化实验报告.docx
《可视化实验报告.docx》由会员分享,可在线阅读,更多相关《可视化实验报告.docx(24页珍藏版)》请在冰点文库上搜索。
可视化实验报告
学生学号
0121010680227
实验课成绩
学生实验报告书
实验课程名称
可视化编程(VC)
开课学院
计算机科学与技术学院
指导教师姓名
岑丽
学生姓名
汤东昌
学生专业班级
软件工程1002班
2011
--
2012
学年
第
2
学期
实验课程名称:
_可视化编程(VC)
实验项目名称
熟悉VCIDE,创建一个简单的VC界面
实验成绩
实验者
汤东昌
专业班级
软件1002班
组别
同组者
实验日期
年月日
一部分:
实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)
熟悉VCIDE,并用API创建一个基本窗口。
第二部分:
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
#include
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//----------------------以下初始化窗口类------------------------------
intWINAPIWinMain(HINSTANCEhInstance,//WinMain函数说明
HINSTANCEhPrevInst,
LPSTRlpszCmdLine,
intnCmdShow)
{
HWNDhwnd;
MSGMsg;
WNDCLASSwndclass;
charlpszClassName[]="窗口";//窗口类名
charlpszTitle[]="My_Windows";//窗口标题名
//窗口类的定义
wndclass.style=0;//窗口类型为默认类型
wndclass.lpfnWndProc=WndProc;//窗口处理函数为WndProc
wndclass.cbClsExtra=0;//窗口类无扩展
wndclass.cbWndExtra=0;//窗口实例无扩展
wndclass.hInstance=hInstance;//当前实例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
//窗口的最小化图标为默认图标
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
//窗口采用箭头光标
//wndclass.hbrBackground=GetStockObject(DEFAULT_PALETTE);
wndclass.hbrBackground=NULL;
//窗口背景为白色
wndclass.lpszMenuName=NULL;//窗口中无菜单
wndclass.lpszClassName=lpszClassName;
//窗口类名为"窗口示例"
//-------------------------以下进行窗口类的注册-------------------------------
if(!
RegisterClass(&wndclass))//如果注册失败则发出警告声音
{
MessageBeep(0);
returnFALSE;
}
//创建窗口
hwnd=CreateWindow(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)
{
switch(message)
{
caseWM_DESTROY:
PostQuitMessage(0);//调用PostQuitMessage发出WM_QUIT消息
default:
returnDefWindowProc(hwnd,message,wParam,lParam);
}
return(0);
}
第三部分结果与讨论(可加页)
一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)
二、小结、建议及体会
实验结果分析:
如图所示为运行结果。
实验时需要注意窗口类的初始化,进行窗口类的注册,然后再创建窗口。
程序开头需要先进行窗口函数说明。
小结、建议及体会:
通过此次实验,我更好的认识和了解了API并且掌握了API一些基础知识
实验课程名称:
_可视化编程(VC)
实验项目名称
基于API编程
(一)
实验成绩
实验者
汤东昌
专业班级
软件1002班
组别
同组者
实验日期
年月日
一部分:
实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)
在窗口中画一个旋转的风车,风车中有三个叶片,颜色分别为红、绿和蓝,叶片外侧有一个外接圆。
第二部分:
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
#include
#include
#include
#definepi3.1415926
LRESULTCALLBACKWinProc(
HWNDhwnd,
UINTuMsg,
WPARAMwParam,
LPARAMlParam
);
intnNum=0,nMaxNum=20;//nMaxNum绘图次数,nNum当前位置
intWINAPIWinMain(
HINSTANCEhInstance,
HINSTANCEhPrevInstace,
LPSTRlpCmdLine,
intnCmdShow
)
{
charlpszClassName[]="窗口";
charlpszTitle[]="4_8";
//设计一个窗口类
WNDCLASSwndcls;
wndcls.cbWndExtra=0;
wndcls.cbClsExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinProc;
wndcls.lpszClassName=lpszClassName;
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndcls);
//创建窗口,定义一个变量用来保存成功创建的窗口后返回的句柄
HWNDhwnd;
hwnd=CreateWindow(lpszClassName,
lpszTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
600,
450,
NULL,
NULL,
hInstance,
NULL);
//显示及刷新窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
//定义消息结构体,开始消息循环
MSGmsg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
returnmsg.wParam;
}
//编写窗口过程函数
LRESULTCALLBACKWinProc(
HWNDhwnd,
UINTuMsg,
WPARAMwParam,
LPARAMlParam
)
{
HBRUSHhBrush;
HPENhPen;
charlpszTitle[]="My_windows";
inti,x,y;//x,y分别作为圆心的坐标
doublefAngle;
switch(uMsg)
{
caseWM_PAINT:
HDChDC;
PAINTSTRUCTps;
hDC=BeginPaint(hwnd,&ps);
SetMapMode(hDC,MM_ANISOTROPIC);
SetWindowExtEx(hDC,400,300,NULL);//设置窗口逻辑单位,所谓逻辑单位,即在比例一致情况下选择足够大的区域
SetViewportExtEx(hDC,600,450,NULL);
SetViewportOrgEx(hDC,300,200,NULL);
hPen=(HPEN)GetStockObject(RGB(10,100,20));//画外圆
SelectObject(hDC,hPen);
Ellipse(hDC,-100,-100,100,100);
hBrush=CreateSolidBrush(RGB(255,0,0));
SelectObject(hDC,hBrush);
fAngle=2*pi/nMaxNum*nNum;//设置初始角度,1/20*pi、2/20*pi、3/20*pi、、、、、、、、
x=(int)(50*cos(fAngle));//初始圆心位置坐标R(x,y)
y=(int)(50*sin(fAngle));
Pie(hDC,x-50,y-50,x+50,y+50,
(int)(x+50*cos(fAngle)),(int)(y+50*sin(fAngle)),
(int)(x+50*cos(fAngle+pi)),(int)(y+50*sin(fAngle+pi)));
hBrush=CreateSolidBrush(RGB(0,255,0));
SelectObject(hDC,hBrush);
fAngle=2*pi/nMaxNum*nNum;//设置初始角度,1/20*pi、2/20*pi、3/20*pi、、、、、、、、
x=(int)(50*cos(fAngle+2*pi/3));//初始圆心位置坐标R(x,y)
y=(int)(50*sin(fAngle+2*pi/3));
Pie(hDC,x-50,y-50,x+50,y+50,//易知
(int)(x+50*cos(fAngle+2*pi/3)),
(int)(y+50*sin(fAngle+2*pi/3)),
(int)(x+50*cos(fAngle+pi+2*pi/3)),
(int)(y+50*sin(fAngle+pi+2*pi/3)));
hBrush=CreateSolidBrush(RGB(0,0,255));
SelectObject(hDC,hBrush);
fAngle=2*pi/nMaxNum*nNum;
x=(int)(50*cos(fAngle+4*pi/3));
y=(int)(50*sin(fAngle+4*pi/3));
Pie(hDC,x-50,y-50,x+50,y+50,//同理
(int)(x+50*cos(fAngle+4*pi/3)),
(int)(y+50*sin(fAngle+4*pi/3)),
(int)(x+50*cos(fAngle+pi+4*pi/3)),
(int)(y+50*sin(fAngle+pi+4*pi/3)));
nNum++;
Sleep(100);
InvalidateRect(hwnd,NULL,1);//刷新客户区
EndPaint(hwnd,&ps);
DeleteObject(hBrush);
DeleteObject(hPen);
return0;
caseWM_DESTROY:
PostQuitMessage(0);
return0;
default:
returnDefWindowProc(hwnd,uMsg,wParam,lParam);
}
}
第三部分结果与讨论(可加页)
一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)
二、小结、建议及体会
实验结果分析:
实验结果如图所示。
实验中需要先对窗口进行编写,然后绘图,风车旋转既对窗口进行不断刷新。
小结、建议及体会:
通过本次实验了解windows的图形设备接口和windows绘图,掌握windows应用程序中有关图形的编程技术及其应用。
实验课程名称:
_可视化编程(VC)
实验项目名称
基于API编程
(二)
实验成绩
实验者
汤东昌
专业班级
软件1002班
组别
同组者
实验日期
年月日
一部分:
实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)
设计一个键盘程序,当按ctrl键时,表明要画椭圆;当按shift键时,表明要画矩形。
然后单击向右箭头键,椭圆或矩形的长度加10;单击向下箭头时,椭圆或矩形的高度加10;单击home键时,整个圆形或矩形向左移动;单击end键时,整个圆形或矩形向右移动;单击up键时,整个圆形或矩形向上移动;单击pagedown键时,整个圆形或矩形向下移动。
第二部分:
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
#include
#include
LRESULTCALLBACKWndProc(
HWNDhwnd,//handletowindow
UINTuMsg,//messageidentifier
WPARAMwParam,//firstmessageparameter
LPARAMlParam//secondmessageparameter
);
intl=0;
intr=0;
intx=0;
intp=0,q=0;
intu=0;
intd=0;
intWINAPIWinMain(
HINSTANCEhInstance,//handletocurrentinstance
HINSTANCEhPrevInstance,//handletopreviousinstance
LPSTRlpCmdLine,//commandline
intnCmdShow
)
{
WNDCLASSwndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WndProc;//
wndcls.lpszClassName="WHUT";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW|CS_VREDRAW;
RegisterClass(&wndcls);
HWNDhwnd;
hwnd=CreateWindow("WHUT","键盘实例",WS_OVERLAPPEDWINDOW/*&~WS_MINIMIZEBOX*/,
0,0,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL/*SW_MINIMIZE*/);
UpdateWindow(hwnd);
MSGmsg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);//
}
return0;
}
LRESULTCALLBACKWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam)
{
HDChDC;//定义设备环境句柄
PAINTSTRUCTps;//定义包含绘图信息的结构体变量
HBRUSHhBrush;//定义画刷句柄
//下面定义并初始化按键标志变量
staticBOOLnUpKeyDown=FALSE,
nDownKeyDown=FALSE,
nLeftKeyDown=FALSE,
nRightKeyDown=FALSE,
nShiftKeyDown=FALSE,
nCtrlKeyDown=FALSE,
nHomeKeyDown=FALSE,
nEndKeyDown=FALSE;
switch(iMessage)
{
caseWM_KEYDOWN:
{
switch(wParam)
{
caseVK_LEFT:
//当按向左箭头键时,变量置为真
l++;break;
caseVK_RIGHT:
//当按向右箭头键时,变量置为真
r++;break;
caseVK_SHIFT:
//当按Shift键时,变量置为真
x=1;break;
caseVK_CONTROL:
//当按Control键时,变量置为真
x=2;break;
caseVK_HOME:
//当按Home键时,变量置为真
p++;break;
caseVK_END:
//当按End键时,变量置为真
q++;break;
caseVK_UP:
//当按向上箭头键时,变量置为真
u++;break;
caseVK_DOWN:
//当按向下箭头键时,变量置为真
d++;break;
default:
break;
}
}
InvalidateRect(hWnd,NULL,TRUE);
break;
caseWM_PAINT:
//处理绘图消息
hDC=BeginPaint(hWnd,&ps);
hBrush=(HBRUSH)GetStockObject(WHITE_BRUSH);//创建白画刷
SelectObject(hDC,hBrush);//选入白画刷
//输出信息:
if(x==1)
{
Rectangle(hDC,100+(r-l)*10,100+(d-u)*10,200+(r-l)*10+10*p,200+(d-u)*10+10*q);
SelectObject(hDC,hBrush);//选入白画刷
}
else
if(x==2)
{
Ellipse(hDC,100+(r-l)*10,100+(d-u)*10,200+(r-l)*10+10*p,200+(d-u)*10+10*q);
SelectObject(hDC,hBrush);//选入白画刷
}
//删除画笔和画刷
DeleteObject(hBrush);
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
return0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return0;
}
第三部分结果与讨论(可加页)
一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)
二、小结、建议及体会
实验结果分析:
如图所示为按ctrl键后程序响应画出圆形。
实验中需注意对每个按键的消息响应。
小结、建议及体会:
通过本次实验了解windows应用程序中对键盘操作的响应,并掌握其编程方法,更好的理解鼠标及键盘的消息及其响应。
实验课程名称:
_可视化编程(VC)
实验项目名称
基于MFC编程
(一)
实验成绩
实验者
汤东昌
专业班级
软件1002班
组别
同组者
实验日期
年月日
一部分:
实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)
用MFC的向导创建编辑框,在编辑框中实现算术加、减、乘和除的运算。
第二部分:
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
先使用各个控件绘出如图所示界面
然后为各个空
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可视化 实验 报告