可视化编程实验报告.docx
- 文档编号:8444149
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:17
- 大小:130.04KB
可视化编程实验报告.docx
《可视化编程实验报告.docx》由会员分享,可在线阅读,更多相关《可视化编程实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
可视化编程实验报告
学生学号
实验课成绩
武汉理工大学
学生实验报告书
实验课程名称可视化编程
开课学院计算机科学与技术学院
指导老师姓名
学生姓名
学生专业班级
2010—2011学年第二学期
实验课程名称:
可视化编程
实验项目名称
API编程实现
实验成绩
实验者
专业班级
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
要求:
设计一个键盘程序,当按CTRL键时,表明要画椭圆;当按下Shift键时,表明要画
矩形。
然后单击向w键,椭圆或矩形的长度向上加10;单击s时,椭圆或矩形的高度向下加10;单击a键时,椭圆或矩形的长度向左加10;单击d时,椭圆或矩形的高度向右加10;单击←键时,整个圆形或矩形向左移动,单击→键时,整个圆形或矩形向右移动;单击↑键时,整个圆形或矩形向上移动;单击↓建时,矩形or圆形向下移动。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
#include
#include
#include
longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam);BOOLInitWindowsClass(HINSTANCEhInstance);
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);
HWNDhWndMain;
RECTrect1;
intWINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
{MSGMessage;
if(!
InitWindowsClass(hInstance))
returnFALSE;
if(!
InitWindows(hInstance,nCmdShow))
returnFALSE;
while(GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
returnMessage.wParam;
}
longWINAPIWndProc(HWNDhWnd,
UINTiMessage,
UINTwParam,
LONGlParam)
{HDChDC;
staticBOOLbCircle=FALSE,bRect=FALSE;
PAINTSTRUCTps;
switch(iMessage)
{
caseWM_KEYDOWN:
if(wParam==VK_CONTROL)
{
bCircle=TRUE;
bRect=FALSE;
rect1.left=0;
rect1.right=0;
rect1.top=0;
rect1.bottom=0;
}
elseif(wParam==VK_SHIFT)
{
bRect=TRUE;
bCircle=FALSE;
rect1.left=0;
rect1.right=0;
rect1.top=0;
rect1.bottom=0;
}
elseif(wParam==VK_RIGHT)
{
rect1.right+=10;
if(bRect==TRUE||bCircle==TRUE)
{
InvalidateRect(hWnd,NULL,TRUE);
}
}
elseif(wParam==VK_DOWN)
{
rect1.bottom+=10;
if(bRect==TRUE||bCircle==TRUE)
{
InvalidateRect(hWnd,NULL,TRUE);
}
}
elseif(wParam==VK_PRIOR)
{
rect1.top-=10;
rect1.bottom-=10;
if(bRect==TRUE||bCircle==TRUE)
{
InvalidateRect(hWnd,NULL,TRUE);
}
}
elseif(wParam==VK_NEXT)
{
rect1.top+=10;
rect1.bottom+=10;
if(bRect==TRUE||bCircle==TRUE)
{
InvalidateRect(hWnd,NULL,TRUE);
}
}
elseif(wParam==VK_HOME)
{
rect1.left-=10;
rect1.right-=10;
if(bRect==TRUE||bCircle==TRUE)
{
InvalidateRect(hWnd,NULL,TRUE);
}
}
elseif(wParam==VK_END)
{
rect1.left+=10;
rect1.right+=10;
if(bRect==TRUE||bCircle==TRUE)
{
InvalidateRect(hWnd,NULL,TRUE);
}
}
break;
caseWM_PAINT:
hDC=BeginPaint(hWnd,&ps);
if(bCircle==TRUE)
{
Ellipse(hDC,rect1.left,rect1.top,rect1.right,rect1.bottom);
}
if(bRect==TRUE)
{Rectangle(hDC,rect1.left,rect1.top,rect1.right,rect1.bottom);
}
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
return0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
return0;
}
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)
{HWNDhWnd;
hWnd=CreateWindow("6_4",
"鼠标显示实例程序",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
0,
CW_USEDEFAULT,
0,
NULL,
NULL,
hInstance,
NULL);
if(!
hWnd)returnFALSE;
hWndMain=hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
}
BOOLInitWindowsClass(HINSTANCEhInstance)
{WNDCLASSWndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="6_4";
WndClass.lpszMenuName=NULL;
returnRegisterClass(&WndClass);
}
三.主要仪器设备及耗材
电脑VC++6.0软件
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
最开头掉了#include
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
结果如图:
实验课程名称:
可视化编程
实验项目名称
计算器设计
实验成绩
实验者
专业班级
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
用MFC的向导创建编辑框,在编辑框中实现算术加、减、乘和除的运算。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
用classwizard对各按钮以及编辑框进行添加变量
然后在jisuanDlg.cpp文件开头定义变量
最后在下方添加下列代码
voidCJisuanDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
char*p1=m_e1.GetBuffer(m_e1.GetLength());
char*p2=m_e2.GetBuffer(m_e2.GetLength());
floata1;
a1=atof(p1);
floata2;
a2=atof(p2);
a3=a1+a2;
m_e3.Format("%f",a3);
UpdateData(FALSE);
}
voidCJisuanDlg:
:
OnButton2()
{
UpdateData(TRUE);
char*p1=m_e1.GetBuffer(m_e1.GetLength());
char*p2=m_e2.GetBuffer(m_e2.GetLength());
floata1;
a1=atof(p1);
floata2;
a2=atof(p2);
a3=a1-a2;
m_e3.Format("%f",a3);
UpdateData(FALSE);
}
voidCJisuanDlg:
:
OnButton3()
{
UpdateData(TRUE);
char*p1=m_e1.GetBuffer(m_e1.GetLength());
char*p2=m_e2.GetBuffer(m_e2.GetLength());
floata1;
a1=atof(p1);
floata2;
a2=atof(p2);
a3=a1*a2;
m_e3.Format("%f",a3);
UpdateData(FALSE);
}
voidCJisuanDlg:
:
OnButton4()
{
UpdateData(TRUE);
char*p1=m_e1.GetBuffer(m_e1.GetLength());
char*p2=m_e2.GetBuffer(m_e2.GetLength());
floata1;
a1=atof(p1);
floata2;
a2=atof(p2);
a3=a1/a2;
m_e3.Format("%f",a3);
UpdateData(FALSE);
}
voidCJisuanDlg:
:
OnButton9()
{UpdateData(TRUE);
//TODO:
Addyourcontrolnotificationhandlercodehere
m_e1=_T("");
m_e2=_T("");
m_e3=_T("");
UpdateData(FALSE);}
三、主要仪器设备及耗材
电脑VC++
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
一开始没有加入UpdateData(TRUE)UpdateData(FALSE)等代码,导致计算结果无法刷新与显示。
m_e1=_T("");
m_e2=_T("");
m_e3=_T("");
这段代码是由其他同学在程序中找到的,灰体字,一开始没怎么注意,后来才发现可以执行清零功能
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
通过这次上机实验,初步掌握了mfc编写对话框的基本方法,通过编写一个简单的小程序使自己对vc++有了更多的认识,对mfc编程有了更深的体会,熟悉了使用classwizard添加函数以及变量的方法,认识到了mfc与api相比的方便之处。
实验课程名称:
可视化编程
实验项目名称
菜单设计
实验成绩
实验者
专业班级
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
MFC编程菜单应用实验内容:
编写一个单文档应用程序在主菜单中增加【曲线】、【线宽】和【颜色】三个菜单项,【曲线】菜单中包含【正弦】和【余弦】两个菜单项;【线宽】菜单中包含【线宽2】和【线宽3】两个菜单项;【颜色】菜单中包含【红色】和【蓝色】两个菜单项
二、基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
voidCMainFrame:
:
OnMenuitem32771()
{
//TODO:
Addyourcommandhandlercodehere
jp=0;
CClientDCdc(this);
CRectcr;
GetClientRect(&cr);
dc.FillSolidRect(cr,RGB(255,255,255));
dc.SelectStockObject(BLACK_PEN);
for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{
lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100))+100;
}
dc.Polyline(lpSin,100);
voidCMainFrame:
:
OnMenuitem32772()
{
//TODO:
Addyourcommandhandlercodehere
jp=1;
CClientDCdc(this);
CRectcr;
GetClientRect(&cr);
dc.FillSolidRect(cr,RGB(255,255,255));
dc.SelectStockObject(BLACK_PEN);
for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{
lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*cos(j*2*Pi/100))+100;
}
dc.Polyline(lpSin,100);
}
voidCMainFrame:
:
OnMenuitem32773()
{CClientDCdc(this);
CRectcr;
GetClientRect(&cr);
//TODO:
Addyourcommandhandlercodehere
HPENhp;
hp=CreatePen(PS_INSIDEFRAME,6,RGB(0,0,0));
dc.SelectObject(hp);
if(jp==1)
{for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{
lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*cos(j*2*Pi/100))+100;
}
}
else
{
for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{
lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100))+100;
}
}
dc.Polyline(lpSin,100);
}
voidCMainFrame:
:
OnMenuitem32775()
{
//TODO:
Addyourcommandhandlercodehere
CClientDCdc(this);
CRectcr;
GetClientRect(&cr);
//TODO:
Addyourcommandhandlercodehere
HPENhp;
hp=CreatePen(PS_INSIDEFRAME,6,RGB(0,0,255));
dc.SelectObject(hp);
if(jp==1)
{for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*cos(j*2*Pi/100))+100;
}
}
else
{
for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100))+100;
}
}
dc.Polyline(lpSin,100);
}
voidCMainFrame:
:
OnMenuitem32776()
{CClientDCdc(this);
CRectcr;
GetClientRect(&cr);
HPENhp;
hp=CreatePen(PS_INSIDEFRAME,6,RGB(255,0,0));
dc.SelectObject(hp);
if(jp==1)
{for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*cos(j*2*Pi/100))+100;
}
}
else
{
for(intj=0;j<100;j++)//生成正弦曲线的点坐标
{lpSin[j].x=(long)(j*2*Pi/100*90);
lpSin[j].y=(long)(dfRange*sin(j*2*Pi/100))+100;
}
}
dc.Polyline(lpSin,100);
}
三、主要仪器设备及耗材
电脑VC++6.0
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
由于菜单的认识还不是很了解只能初步设计下菜单按键的响应函数。
在执行画笔时,每一次都要重新写一遍函数。
希望以后有待加强
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
通过这次试验体会菜单的制作以及画笔的使用方法,也初步掌握了菜单的修改和一些按钮的设置。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可视化 编程 实验 报告