可视化实验报告docWord文档格式.docx
《可视化实验报告docWord文档格式.docx》由会员分享,可在线阅读,更多相关《可视化实验报告docWord文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
Hello"
ws.style=0;
ws.lpfnWndProc=WndProc;
ws.cbClsExtra=O;
ws.cbWndExtra=O;
ws.hInstance=hthis;
ws.hIcon=LoadIcon(NULL,IDI_APPLICATION);
ws.hCursor=LoadCursor(NULL,IDC_ARROW);
ws.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
ws.lpszMenuName=NULL;
ws.lpszClassName=wclaname;
if(!
RegisterClass(&
ws))
{returnFALSE;
}
hwnd=CreateWindow(
wclaname,
titlename,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
NULL,
hthis,
NULL
);
ShowWindow(hwnd,ncomshow);
UpdateWindow(hwnd);
while(GetMessage(&
msg,NULL,O,O))
{TranslateMessage(&
msg);
DispatchMessage(&
returnmsg.wParam;
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMlParam)
switch(message)
caseWM_DESTROY:
PostQuitMessage(0);
break;
default:
returnDefWindowProc(hwnd,message,wParam,IParam);
return(O);
2、调试过程:
编译时出现下图错误
.inking,.”
.INK:
FatalerrorLNK1117:
syntaxerrorinoption"
sub5^stem:
console/incrementdl:
yes"
:
丸行link.ewe时出错.
>
__VO—"
1
分析错误后修改过程如下图:
其中,将console改为windows
第三部分结果与讨论(可加页)
一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)
二、小结、建议及体会
1、实验结果:
2、实验总结:
通过本次实验,我们了解了windows编程的一些基础知识,包括窗口的一些内容、事件驱动的基本问题,同时聊了了消息以及对消息的响应,然后通过窗口的创建,基本掌握了vc编程
的过程,对窗口的创建有了很好的掌握。
可视化编程(VC)
基于API编程
(一)
在窗口中画出一个旋转地风车,风车中有三个叶片,颜色分别为红、黄和蓝,叶片外侧有个外接圆。
目的是掌握画刷、画笔句柄的使用,进一步熟练掌握API编程。
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过
#include<
tchar.h>
math.h>
#definepi3.1415926
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstanee,LPSTRlpCmdLine,int
nShowCmd)
WNDCLASSEXwcex;
wcex.cbClsExtra=O;
〃窗口类无扩展
wcex.cbSize=sizeof(WNDCLASSEX);
〃窗口类的大小wcex.cbWndExtra=O;
〃窗口实例无扩展
wcex.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
〃窗口采用箭头光标
wcex.hIcon=Loadlcon(NULL,IDI_APPLICATION);
〃窗口图标为默认
wcex.hIconSm=Loadlcon(wcex.hlnstance,IDI_APPLICATION);
〃窗口小图标为默认
wcex.hInstance=hlnstanee;
wcex.lpfnWndProc=WndProc;
〃窗口处理函数为WndProcwcex.lpszClassName="
xuanzhuanxiaofengche"
//窗口类名wcex.lpszMenuName=NULL;
〃窗口中无菜单wcex.style=O;
〃窗口类型为默认
RegisterClassEx(&
wcex);
〃注册窗口
"
//窗口类名
旋转小风车”,〃窗口实例标题名
WS_OVERLAPPEDWINDOW,〃窗口风格
CW_USEDEFAULT,CW_USEDEFAULT,〃窗口左上角坐标为默认
CW_USEDEFAULT,CW_USEDEFAULT,〃窗口高和宽为默认
NULL,//窗口无父窗口
NULL,//窗口无主菜单
hlnstanee,
);
ShowWindow(hwnd,nShowCmd);
//显示窗口
UpdateWindow(hwnd);
//刷新用户区
msg,NULL,0,0))〃消息循环
TranslateMessage(&
〃将消息转换为字符信息
〃将消息传送到窗口函数
return(int)msg.wParam;
LRESULTCALLBACKWndProc(HWNDhwnd,UINTmsg,WPARAMwParam,LPARAMIParam){
HDChdc;
PAINTSTRUCTps;
HBRUSHhb;
HPENhp;
//LPCTSTRstr;
RECTclientrect;
GetClientRect(hwnd,&
clientrect);
staticinti=0;
switch(msg)
caseWM_PAINT:
{hdc=BeginPaint(hwnd,&
ps);
hp=(HPEN)GetStockObject(BLACK_PEN);
〃选择画笔
Arc(hdc,100,100,300,300,200,100,200,100);
〃画外圆
hb=CreateSolidBrush(RGB(255,0,0));
〃画红色的叶子
SelectObiect(hdc,hb);
Pie(hdc,
(int)150+50*sin(i*2*pi/360),(int)150-50*cos(i*2*pi/360),
(int)250+50*sin(i*2*pi/360),(int)250-50*cos(i*2*pi/360),
200,200,
(int)200+100*sin(i*2*pi/360),(int)200-100*cos(i*2*pi/360));
hb=CreateSolidBrush(RGB(255,255,0));
〃画黄色的叶子
SelectObject(hdc,hb);
(int)150+50*sin((i+120)*2*pi/360),(int)150-50*cos((i+120)*2*pi/360),
(int)250+50*sin((i+120)*2*pi/360),(int)250-50*cos((i+120)*2*pi/360),
(int)200+100*sin((i+120)*2*pi/360),(int)200-100*cos((i+120)*2*pi/360));
hb=CreateSolidBrush(RGB(0,0,255));
〃画蓝色的叶子
(int)150+50*sin((i+240)*2*pi/360),(int)150-50*cos((i+240)*2*pi/360),
(int)250+50*sin((i+240)*2*pi/360),(int)250-50*cos((i+240)*2*pi/360),
(int)200+100*sin((i+240)*2*pi/360),(int)200-100*cos((i+240)*2*pi/360));
i++;
Sleep(20);
if(i>
360)
i=i%360;
InvalidateRect(hwnd,NULL,1);
DeleteObject(hb);
DeleteObject(hp);
EndPaint(hwnd,&
PostQuitMessage(O);
returnDefWindowProc(hwnd,msg,wParam,IParam);
return0;
2、调试过程:
(1)编译时出现如下错误:
uonriquranon:
uu-ueougLinking・•・
LINK:
fatalerrorLNK1168:
cannotopenDebug/uu.exeforwriting执行linn^exe时岀错-
ProjectSettings
剧新凹
誓出文件名二Debug/uu.Exe对製/库模块:
kernel32Jibuser32.llbgdi32.libwinspooldibcomdlg32.lib
P产生涸试信息y增加棒接
r允许配置文仲
厂毅略全部St认库厂产生MAP文件
匸程选期回:
/subsysfem:
cQnsole/incremental^yes/pdb:
Debug/uu.pdb"
/debug/machine:
l386/out:
Debug/uu.exe"
/pdhtype:
sept
将console改为windows
(2)实验能通过编译,但是运行出的窗口上什么也没有,不出现风车。
通过多次调试运行检查之后发现,在实验过程中没有接设置视口的函数
SetViewportExtEx(hdc,550,450,NULL);
加上之后问题解决。
、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)
、小结、建议及体会
1、实验结果:
%;
;
一T)
通过此次实验,了解并掌握了图形设备接口的基本概率以及windows应用程序中绘图的主
要步骤,同时掌握了一些绘图函数的使用,很好的掌握了有关图形的编程技术以及应用。
并且,
熟练了API编程的过程,对其中出现的问题也有了初步的认识并能基本掌握。
基于API编程
(二)
咅B分:
实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备
及耗材,实验方案与技术路线等)
设计一个键盘程序,当按Ctrl键时,表明要画椭圆;
当按Shift键时,表明要画矩形。
然后按向右箭头键时,椭圆或矩形的长度加10;
按向下箭头时,椭圆或矩形的高度加10;
按Home键时,整个圆形或矩形向左移动;
按End键时,整个圆形或矩形向右移动;
按PageUp键时,整个圆形或矩形向上移动;
按PageDown®
时,整个圆形或矩形向下移动。
#include<
windows.h>
#include"
stdio.h"
LRESULTCALLBACKWndCcProc(HWNDhwnd,UINTuMsg,
WPARAMwParam,
LPARAMlParam
intWINAPIWinMain(HINSTANCEhlnstanee,HINSTANCEhPrevInstanee,LPSTRIpCmdLine,intnCmdShow
)
WNDCLASSwndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndcls.hCursor=LoadCursor(hlnstance,IDCARROW);
wndcls.hlcon=Loadlcon(hlnstance,IDI_APPLICATION);
wndcls.hInstance=hlnstanee;
wndcls.lpfnWndProc=WndCcProc;
wndcls.lpszClassName="
abc"
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW|CS_VREDRAW;
wndcls);
HWNDhWnd=CreateWindow("
"
作
6-6"
WS_OVERLAPPEDWINDOW,0,0,1000,1000,NULL,NULL,hlnstance,NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
msg,NULL,0,0))
LRESULTCALLBACKWndCcProc(
HWNDhWnd,
UINTMsg,
staticflag=0;
staticPOINTpt1,pt2;
switch(Msg)
caseWM_LBUTTONDOWN:
if(wParam&
MKCONTROL)
GetCursorPos(&
pt1);
flag=1;
elseif(wParam&
MK_SHIFT)
flag=2;
caseWM_LBUTTONUP:
if(wParam&
MK_CONTROL|wParam&
pt2);
InvalidateRect(hWnd,NULL,1);
caseWM_KEYDOWN:
switch(wParam)
caseVK_RIGHT:
pt2.x+=10;
caseVK_LEFT:
pt2.x-=10;
caseVK_UP:
pt2.y-=10;
caseVK_DOWN:
pt2.y+=10;
caseVK_HOME:
pt1.x-=10;
caseVK_END:
pt1.x+=10;
caseVK_PRIOR:
pt1.y-=10;
caseVK_NEXT:
pt1.y+=10;
if(1==flag)
hdc=BeginPaint(hWnd,&
hb=CreateSolidBrush(RGB(0,0,255));
SelectObject(hdc,hb);
Ellipse(hdc,pt1.x,pt1.y,pt2.x,pt2.y);
EndPaint(hWnd,&
elseif(2==flag)
hb=CreateSolidBrush(RGB(0,255,0));
Rectangle(hdc,pt1.x,pt1.y,pt2.x,pt2.y);
returnDefWindowProc(hWnd,Msg,wParam,IParam);
}
编译时出现的问题
J[liBCDTlibCert0,0bj):
errorLNK28C1:
unresolvedexternalsynbolnjinDebug/6_exe:
FatalerrorLNK1129:
1unresolvedexternals执行link.pxe日寸出错.
分析问题后修改过程如下:
儈吐件呑
Debug/E.exe
对誓』库模块:
kernel32.libuser32.libgdl32Jlbwinspool.libcomdlg32Jlb
工程徙顶回:
/subsystem:
console/incrementakye^/pdb:
Debug/6.pdb"
,Debug/6.exe,'
/pdbtype:
按Ctrl键加鼠标
按Shift键加鼠标
通过本次实验,我们掌握了Windows应用程序中常见的键盘及鼠标的操作及编程方法和对鼠标操作的响应,并且了解了鼠标的响应方法。
我们知道了,在用户与计算机的交互过程中,除鼠标之外,键盘的操作也是非常重要的,大量的信息都是由键盘进行输入的。
而在API编程
过程中,我们也熟悉了API编程的步骤,更好的掌握一些API编程的知识。
基于MFC编程
(一)
用MFC的向导创建编辑框,在编辑框中实现算术加、减、乘和除运算。
目的是熟悉并掌握MFCS程的过程,学会创建编辑框及MFC中控件的添加及使用等知识第二部分:
实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)
//力口法器Dlg.cpp:
implementationfile
stdafx.h"
加法器.h"
加法器Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAboutclassCAboutDlg:
publicCDialog{
public:
CAboutDlg();
//DialogData
〃{{AFX_DATA(CAbo