可视化实验报告.doc_第1页
可视化实验报告.doc_第2页
可视化实验报告.doc_第3页
可视化实验报告.doc_第4页
可视化实验报告.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学生学号 0121210680517实验课成绩学 生 实 验 报 告 书实验课程名称可视化编程(VC)开 课 学 院计算机科学与技术学院指导教师姓名岑 丽学 生 姓 名程贵学生专业班级软件1202班2013-2014学年第2学期实验课程名称:_可视化编程(VC) 实验项目名称熟悉VC IDE,创建一个简单的VC界面实验成绩实 验 者专业班级组 别同 组 者实验日期 年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)1. 实验目的意义及原理方法目的:用API创建一个基本窗口本实验运用Windows编程的基础知识,包括窗口、事件驱动的基本概念等,进一步了解认识Windows编程中经常用到的“消息”以及对“消息”的响应,及Windows程序的结构框架。通过这些内容的学习及本次实验的练习,加深对这些知识点的理解及在实际编程中的应用。2主要仪器设备及耗材Microsoft Visual C+ 6.0第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等) 1. 用API创建一个基本窗口的源代码 #include#includeLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函数说明/-以下是入口函数的代码-int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) WNDCLASSEX wcex; HWND hWnd; MSG msg; TCHAR szWindowClass=窗口示例; /窗口类名 TCHAR szTitle=My Windows; /窗口标题名 /-以下初始化窗口类- wcex.cbSize=sizeof(WNDCLASSEX); /窗口类的大小 wcex.style=0; /窗口类型为默认类型 wcex.lpfnWndProc=WndProc; /窗口处理函数为WndProc wcex.cbClsExtra=0; /窗口类无扩展 wcex.cbWndExtra=0; /创口实例无扩展 wcex.hInstance=hInstance; /当前实例句柄 wcex.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_APPLICATION);/窗口的图标为默认类型 wcex.hCursor=LoadCursor(NULL,IDC_ARROW); /窗口采用箭头光标 wcex.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wcex.lpszMenuName=NULL; wcex.lpszClassName=szWindowClass; wcex.hIconSm=LoadIcon(wcex.hInstance,MAKEINTRESOURCE(IDI_APPLICATION); if(!RegisterClassEx(&wcex) MessageBox(NULL,_T(窗口类注册失败!),_T(窗口注册),NULL); return 1; hWnd=CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if(!hWnd) MessageBox(NULL,_T(创建窗口失败!),_T(创建窗口),NULL); return 1; ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); while(GetMessage(&msg,NULL,0,0) TranslateMessage(&msg); DispatchMessage(&msg); return(int) msg.wParam;LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) switch(message) case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd,message,wParam,lParam); break; return 0;2.程序的调试和分析1、实验过程中不报错,能通过编译但是不能出现结果。通过检查请教老师和同学发现hWnd=CreateWindow(WinFill,标准窗口,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);中的窗口类名与WndClass.lpszClassName=WinFil;不一致,将其改为一致后程序正常运行。第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)程序运行结果如下:二、小结、建议及体会通过这次的实验,我基本上掌握了如何用API函数来创建一个基本的窗口,但是在编程的时候不能熟练的应用其中的一些变量,故而要加强对课本的阅读。实验课程名称:_可视化编程(VC) 实验项目名称基于API编程(一)实验成绩实 验 者专业班级组 别同 组 者实验日期 年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)1. 实验目的意义及原理方法目的:在窗口中画一个旋转的风车,风车中有三个叶片,颜色分别为红、黄和蓝,叶片外侧有一个外接圆。运用所学的图形设备接口的基本概念以及Windows应用程序中绘图的主要步骤和绘图函数,并查阅相关资料和书籍,完成本实验的要求,掌握Windows应用程序中有关图形的编程技术及其应用。2主要仪器设备及耗材Microsoft Visual C+ 6.0第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)1. 旋转小风车的源程序代码:#include #include#define PI 3.141592654int n=0;long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);/消息处理函数声明.BOOL InitWindowsClass(HINSTANCE hInstance);/初始化窗口类声明BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);/初始化窗口声明.HWND hWndMain;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)/主函数HWND hwnd;MSG Msg;WNDCLASS wn;char lpszClassName=窗口;char lpszTitle=My_Windows;wn.style =0;wn.lpfnWndProc=WndProc;wn.cbClsExtra=0;wn.cbWndExtra=0;wn.hInstance=hInstance;wn.hIcon=LoadIcon(NULL,IDI_APPLICATION);wn.hCursor=LoadCursor(NULL,IDC_ARROW);wn.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wn.lpszMenuName=NULL;wn.lpszClassName=lpszClassName;RegisterClass(&wn);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,0,0,0)TranslateMessage(&Msg);/消息循环.DispatchMessage(&Msg);return Msg.wParam;long WINAPI WndProc(HWND hWnd,UINT message,UINT wParam,LONG lParam)/消息处理函数.switch(message)HDC hdc;PAINTSTRUCT ps;HPEN hp;HBRUSH hb;int x,y;int jiaodu;case WM_PAINT:hdc=BeginPaint(hWnd,&ps);SetMapMode(hdc,MM_ANISOTROPIC);SetWindowExtEx(hdc,400,300,NULL); /设置窗口逻辑单位 ,所谓逻辑单位,即在比例一致情况下选择足够大的区域SetViewportExtEx(hdc,550,450,NULL);SetViewportOrgEx(hdc,300,200,NULL);Ellipse(hdc,-100,100,100,-100);hp=(HPEN)GetStockObject(BLACK_PEN);hb=CreateSolidBrush(RGB(255,0,0);SelectObject(hdc,hb);SelectObject(hdc,hp);jiaodu=int(n*PI/10);x=int(50*cos(jiaodu);y=int(50*sin(jiaodu);Pie(hdc,x-50,y-50,x+50,y+50,0,0,2*x,2*y);hb=CreateSolidBrush(RGB(0,255,0);SelectObject(hdc,hb);x=int(50*cos(jiaodu+2*PI/3);y=int(50*sin(jiaodu+2*PI/3);Pie(hdc,x-50,y-50,x+50,y+50,0,0,2*x,2*y);hb=CreateSolidBrush(RGB(0,0,255);SelectObject(hdc,hb);x=int(50*cos(jiaodu+4*PI/3);y=int(50*sin(jiaodu+4*PI/3);Pie(hdc,x-50,y-50,x+50,y+50,0,0,2*x,2*y);n+;Sleep(100);InvalidateRect(hWnd,NULL,1); EndPaint(hWnd,&ps);return 0 ;case WM_DESTROY:/处理绘图消息.PostQuitMessage(0);default:return(DefWindowProc(hWnd,message,wParam,lParam);return(0);2. 程序的调试和分析实验能通过编译,但是运行出的窗口上什么也没有,不出现风车。通过多次调试运行检查之后发现,在实验过程中没有接设置视口的函数SetViewportExtEx(hdc,550,450,NULL);加上之后问题解决。第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)程序运行结果如下:二、小结、建议及体会通过使用API函数在窗口中对旋转风车的绘制,并给它上了色彩。这次编程让我更加了解vc+带来的强大知识力量,应该好好应用。实验课程名称:_可视化编程(VC) 实验项目名称基于API编程(二)实验成绩实 验 者专业班级组 别同 组 者实验日期 年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)1 实验目的意义及原理方法目的:设计一个键盘程序,当按Ctrl键时,表明要画椭圆;当按Shift键时,表明要画矩形。然后单击向右箭头键,椭圆或矩形的长度加10;单击向下箭头时,椭圆或矩形的高度加10;单击Home键时,整个圆形或矩形向左移动;单击End键时,整个圆形或矩形向右移动;单击PageUp键时,整个圆形或矩形向上移动;单击PageDown键时,整个圆形或矩形向下移动。通过Windows应用程序中常见的键盘及鼠标的操作及其编程方法和对鼠标操作的响应知识,实现上述实验的目的,在实验中学习掌握在Windows应用程序中有关键盘和鼠标的应用和操作。2 主要仪器设备及耗材 Microsoft Visual C+ 6.0第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)1. 键盘程序源代码2. #include#include#include#includeBOOL WINPAIWndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam);BOOL InitWindowsClass(HINSTANCE hInstance);BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);/窗口显示int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) MSG Message; if(!InitWindowsClass(hInstance) return FALSE; if(!InitWindows(hInstance,nCmdShow) return FALSE; while(GetMessage(&Message,0,0,0) TranslateMessage(&Message); DispatchMessage(&Message); return Message.wParam;LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam) HDC hdc; HPEN hp; static int c,s,left,top,right,bottom; HBRUSH hb; PAINTSTRUCT ps; switch(iMessage) case WM_KEYDOWN: if(wParam=VK_CONTROL)c=1;s=0;left=0;right=50;top=0;bottom=50; InvalidateRect(hWnd,NULL,1);else if(wParam=VK_SHIFT)s=1; c=0;left=0;top=0;right=50;bottom=50;InvalidateRect(hWnd,NULL,1);else if(wParam=VK_RIGHT)right=right+10;if(s=1|c=1)InvalidateRect(hWnd,NULL,1);else if(wParam=VK_DOWN)bottom=bottom+10;if(s=1|c=1)InvalidateRect(hWnd,NULL,1);else if(wParam=VK_PRIOR)top=top-10;bottom=bottom-10;if(s=1|c=1)InvalidateRect(hWnd,NULL,1);else if(wParam=VK_NEXT)top=top+10;bottom=bottom+10;if(s=1|c=1)InvalidateRect(hWnd,NULL,1);else if(wParam=VK_HOME)left=left-10;right=right-10;if(s=1|c=1)InvalidateRect(hWnd,NULL,1);else if(wParam=VK_END)left=left+10;right=right+10;if(s=1|c=1)InvalidateRect(hWnd,NULL,1);break;case WM_PAINT:hdc=BeginPaint(hWnd,&ps);SetMapMode(hdc,MM_TEXT); hp=(HPEN)GetStockObject(BLACK_PEN);hb=(HBRUSH)GetStockObject(WHITE_BRUSH); SelectObject(hdc,hb);SelectObject(hdc,hp);if(c=1)Ellipse(hdc,left,top,right,bottom);if(s=1)Rectangle(hdc,left,top,right,bottom); EndPaint(hWnd,&ps); DeleteObject(hp); DeleteObject(hp); break; case WM_DESTROY: PostQuitMessage(0); return 0; default: return(DefWindowProc(hWnd,iMessage,wParam,lParam); return 0;BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) HWND hWnd; hWnd=CreateWindow(键盘响应, 键盘响应, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if(!hWnd) return FALSE; ShowWindow(hWnd,nCmdShow); UpdateWindow(hWnd); return TRUE;BOOL InitWindowsClass(HINSTANCE hInstance) WNDCLASS WndClass; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,END); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=WndProc; WndClass.lpszClassName=键盘响应; WndClass.lpszMenuName=NULL; WndClass.style=0; return RegisterClass(&WndClass);3 程序调试与分析单击向下箭头时矩形或者圆的尺寸没有增加,将case VK_DOWN:rect.bottom+=10;if(Circle=TRUE&Rect=TRUE) InvalidateRect(hwnd,NULL,1); break; 改为case VK_DOWN:rect.bottom+=10;if(Circle=TRUE|Rect=TRUE) InvalidateRect(hwnd,NULL,1); break;第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)程序运行结果如下:二、小结、建议及体会 通过这次实验,熟悉了Windows应用程序中常见的键盘及鼠标的操作及其编程方法和对鼠标操作的响应,认识到实验的重要性,应该让实践与理论相结合,才能过检验理论的正确性与可行度。 实验课程名称:_可视化编程(VC) 实验项目名称基于MFC编程(一)实验成绩实 验 者专业班级组 别同 组 者实验日期 年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)1. 实验目的意义及原理方法目的:用MFC的向导创建编辑框,在编辑框中实现算术加、减、乘和除的运算。本实验应用所学的编辑框控件知识,通过编程简易计算器,熟悉使用MFC编程的内容及步骤,加深对MFC应用的理解和认识。2主要仪器设备及耗材 Microsoft Visual C+ 6.0第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)1. 用MFC编程简易计算器的主要源程序代码:void CMyDlg:OnButton6() / TODO: Add your control notification handler code here OnOK();void CMyDlg:OnButton5() 重置/ TODO: Add your control notification handler code here m_e1=0;m_e2=0; i=0;m_result.Format(%d,i);UpdateData(FALSE);void CMyDlg:OnButton4() 除法/ TODO: Add your control notification handler code here UpdateData();if(m_e2=0)AfxMessageBox(分母不能为0!);elsefloat(i)=float(m_e1)/float(m_e2);m_result.Format(%f,i);UpdateData(FALSE);void CMyDlg:OnButton3() 乘法/ TODO: Add your control notification handler code here UpdateData();float(i)=float(m_e1*m_e2); m_result.Format(%f,i);UpdateData(FALSE);void CMyDlg:OnButton2() 减法/ TODO: Add your control notification handler code here UpdateData(); float(i)=float(m_e1-m_e2);m_result.Format(%f,i);UpdateData(FALSE);void CMyDlg:OnButton1() 加法/ TODO: Add your control notification handler code here UpdateData();float(i)=float(m_e1+m_e2);m_result.Format(%f,i);UpdateData(FALSE);2程序调试与分析1. 添加的代码中用到的i未定义,在class CAboutDlg : public CDialog前加上对i的定义 int i。2. 提示”.format”must have class/struct/union type 错误,在类向导中发现对m_result变量的type设置错误,设置为float型时无法调用函数,改为Cstring型问题即可解决。3. 因为i定义为int型,后面代码的使用中需要其为float型,故用到类型强制转换。第三部分 结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)程序运行结果如下:二、小结、建议及体会 通过本次实验,初次使用MFC编程了一个简易的计算器,感受到mfc用起来比api更加简单一点,功能也更加强大一点。学好mfc对于以后的编程具有很好的使用意义。实验课程名称:_可视化编程(VC) 实验项目名称基于MFC编程(二)实验成绩实 验 者专业班级组 别同 组 者实验日期 年 月 日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)1. 实验目的意义及原理方法目的:建立一个程序进行数据的管理,设有10组数据,每一组数据有5个元素,要求该程序能实现如下功能:(1)从键盘依次输入10组数据;(2)调出任意的一组数据显示出来;(3)修改任意一组数据或一组数据中的任意一个元素;(4)求出任意一组数据中的最大值和最小值。本次实验涉及管理系统的知识,包含检索、查看或者像题中的求最大最小值等功能,通过第九章对Windows编程中常用控件等的学习和使用,在实例实践中熟练掌握MFC的编程。2主要仪器设备及耗材 Microsoft Visual C+ 6.0第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)1. 主要的程序代码:1、增加struct struDatadouble dfData5;数据结构体主要代码:void CMy9_20Dlg:OnButton1() / TODO: Add your control notification handler code here CString cstrGroup,cstrInputData5;/输入数据为字符串int iGroup;/组号为整数m_e1.GetWindowText(cstrGroup);/得到组号字符串m_e2.GetWindowText(cstrInputData0);/得到输入数据m_e3.GetWindowText(cstrInputData1);m_e4.GetWindowText(cstrInputData2);m_e5.GetWindowText(cstrInputData3);m_e6.GetWindowText(cstrInputData4);iGroup=atoi(LPCTSTR)cstrGroup);/将组号转化为整数形式for(int i=0;i5;i+)/将输入数据转化为浮点形式InputDataiGroup-1.dfDatai=atof(LPCTSTR)cstrInputDatai);void CMy9_20Dlg:OnButton2() / TODO: Add your control notification handler code here CString cstrGroup;int iGroup;double Max=0,Min=0;char cBuffer10;m_e1.GetWindowText(cstrGroup);/得到组号iGroup=atoi(LPC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论