已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字媒体学院上机实验报告I课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:01实验成绩:一、实验名称:测试创建函数二、实验目的及要求1. 熟悉Windows程序设计2. 掌握VS的使用3. 了解程序窗口的设计3、 实验环境: VS2012四、实验内容编制一个程序,设计一个程序窗口,测试创建函数的风格参数,简单总结窗口有哪些风格。五、算法描述及实验步骤1. 创建一个基于对话框的项目2. 给对话框加入相应的操作按钮3. 给按钮加上代码,设置属性4. 为实现操作添加必要函数六、调试过程及实验结果我就只是在源代码里面更改了几次风格参数的代码,看了下效果,并将风格参数总结成了一份word文档。七、总结本次实验,我掌握了一些具体函数的定义和调用方法。在操作的过程中深刻地体会到函数调用的便捷。通过vs使用,我亲自感受并实践了程序设计的思想,同时对vs程序设计也有了总体的认识。此外,编写程序的严谨思想也令我深深地感受一丝不苟地工作的重要性。8、 附录LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) HDC hdc ; PAINTSTRUCT ps ; RECT rect ; switch (message) case WM_CREATE: PlaySound (TEXT (123.wav), NULL, SND_FILENAME | SND_ASYNC) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetClientRect (hwnd, &rect) ; DrawText (hdc, TEXT (Hello, Windows 7!), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;运行结果截图:上机实验报告II课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:02实验成绩:一、实验名称:绘制小船二、实验目的及要求1.掌握VS的使用2.了解程序窗口的设计3.熟悉图形设备接口、绘图和文字3、 实验环境: VS2012四、实验内容绘制一艘小船,有颜色的帆船,标注船长,有坐标系。五、算法描述及实验步骤1. 创建一个基于对话框的项目2. 确定船的各点之间的坐标关系2. 利用函数将船的坐标关系绘制出来3. 填充颜色六、调试过程及实验结果 起初画船身的时候,坐标没算好,船是奇形怪状的,后来经过研究确定了坐标,确定每个坐标点比较繁琐,花了比较多的时间,而且中间因为计算错误更改了很多次。各个图形建的顺序不清楚,也很奇怪,后来解决了。后来颜色也不会填,通过问别人和百度解决了。七、总结这次实验是图形的绘制,本次实验内容很多,既要打开文件读取数据,又要绘制坐标,轴,坐标刻度,还要对坐标进行转化,比较麻烦,将它们完美地融合在一起却不简单。这已经是第二个实验了,也学了编程的知识,虽然有的函数,代码我知道它是什么功能,我会用,但却不是很理解,将所学进行改编融合这方面我还是很欠缺的。这个程序虽然是写完了,结果也运行出来了,但我知道它是写的很糟糕的,类只是函数的堆砌,完全算不上真正的类,运行也存在很大的问题。刚开始编译时还有好多错误,多编译几次竟然就通过了,但是通过之后有时是弹出两个或多个打开文件的对话框,有时是一个,往往还伴随着黑屏。我想应该是数据读取的函数调用有问题,具体是什么原因还不是很清楚,明天上午再去请教同学吧。八、附录LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static TCHAR szBuffer8=TEXT(船有20米长。); TEXTMETRIC tm; static int cxChar,cyChar; static POINT BoatFigure4 static int cxClient, cyClient ; HDC hdc ; int i,j ; PAINTSTRUCT ps ; POINT Boat4 ; static int CloudFigure124; int Cloud124; static POINT PoleFigure4; POINT Pole4; static POINT FlagFigure3; POINT Flag3; static int BubbleFigure34 int Bubble34; static POINT ArrowFigure43; POINT Arrow43; HBRUSH hOrangeBrush,hBlueBrush,hBrownBrush,hRedBrush; switch (message) case WM_SIZE: cxClient = LOWORD (lParam) ; cyClient = HIWORD (lParam) ; return 0 ; / case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; GetTextMetrics(hdc,&tm); cxChar=tm.tmAveCharWidth; cyChar=tm.tmHeight+tm.tmExternalLeading; SetMapMode(hdc,MM_ISOTROPIC); SetWindowExtEx(hdc,cxClient/2,cyClient/2,NULL); SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL); SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); for(i=0;i4;i+) Boati.x=cxClient*BoatFigurei.x/70; Boati.y=cyClient*BoatFigurei.y/40; Polei.x=cxClient*PoleFigurei.x/140; Polei.y=cyClient*PoleFigurei.y/40; for(i=0;i3;i+) Flagi.x=cxClient*FlagFigurei.x/70; Flagi.y=cyClient*FlagFigurei.y/40; for(i=0;i3;i+) Bubblei0= cxClient*BubbleFigurei0/70; Bubblei1= cyClient*BubbleFigurei1/40; Bubblei2= cxClient*BubbleFigurei2/70; Bubblei3= cyClient*BubbleFigurei3/40; for(i=0;i12;i+) Cloudi0= cxClient*CloudFigurei0/70; Cloudi1= cyClient*CloudFigurei1/40; Cloudi2= cxClient*CloudFigurei2/70; Cloudi3= cyClient*CloudFigurei3/40; for(i=0;i4;i+) for(j=0;j3;j+) Arrowij.x=cxClient*ArrowFigureij.x/140; Arrowij.y=cyClient*ArrowFigureij.y/80; SelectObject (hdc, hBlueBrush) ; SetPolyFillMode (hdc, ALTERNATE) ;for(i=0;i11;i+)Ellipse(hdc,Cloudi0,Cloudi1,Cloudi2,Cloudi3); for(i=0;i3;i+)Ellipse(hdc,Bubblei0,Bubblei1,Bubblei2,Bubblei3); SelectObject (hdc,GetStockObject(NULL_PEN); Ellipse(hdc,Cloud110,Cloud111,Cloud112,Cloud113); DeleteObject(hBlueBrush); SelectObject (hdc, hOrangeBrush) ; Polygon (hdc, Boat, 4); DeleteObject(hOrangeBrush); SelectObject(hdc,hBrownBrush); Polygon(hdc,Pole,4); DeleteObject(hBrownBrush); SelectObject(hdc,hRedBrush); Polygon(hdc,Flag,3); DeleteObject(hRedBrush); SelectObject(hdc,GetStockObject(BLACK_BRUSH); for(i=0;i4;i+)Polygon(hdc,Arrowi,3); SelectObject(hdc,GetStockObject(BLACK_PEN); MoveToEx(hdc,cxClient*(-29)/70,0,NULL); LineTo(hdc,cxClient*24/70,0); MoveToEx(hdc,0,cyClient*18/40,NULL); LineTo(hdc,0,cyClient*(-16)/40); MoveToEx(hdc,cxClient*(-14)/70,cyClient*(-3)/40,NULL); LineTo(hdc,cxClient*(-14)/70,cyClient*(-19)/40); MoveToEx(hdc,cxClient*18/70,cyClient*(-3)/40,NULL); LineTo(hdc,cxClient*18/70,cyClient*(-19)/40); MoveToEx(hdc,cxClient*(-14)/70,cyClient*(-18)/40,NULL); LineTo(hdc,cxClient*18/70,cyClient*(-18)/40); SetTextColor(hdc,RGB(255,66,67); TextOut(hdc,-3*cxChar,cyClient*(-18)/40+cyChar,szBuffer,lstrlen(szBuffer); EndPaint(hwnd, &ps) ; return 0 ; / case WM_DESTROY: PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;运行结果截图:上机实验报告III课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:03实验成绩:一、实验名称:重现基本文本编辑器二、实验目的及要求1.掌握VS的使用2.了解程序窗口的设计3.掌握本编辑器的基本函数调用3、 实验环境: VS2012四、实验内容创建一个简单的程序窗口,并创建编辑类的子窗口,捕获光标位置后可以此输入文字基本文本编辑框五、算法描述及实验步骤创建一个Win32的项目给头文件添加一个新建项定义主函数在主函数中为实现操作添加必要函数(LoadIcon;LoadCursor;GetStockObject;MessageBox;CreateWindow;CreateFont; GetTextMetrics;max;SendMessage等)六、调试过程及实验结果 在写编辑类子窗口的代码时没有遇到太大的困难,不过在捕获鼠标的位置时花了比较多的时间,对照了书上的代码,借鉴了一个书配套光盘的已经写好的基本文本编辑器的代码,才把程序写好。七、总结 小小一个鼠标捕获看似我们用得已经没有知觉的操作也是相当复杂的,这是我最深的感受。程序使用了等宽字体,如果使用变宽的话,太难了。八、附录LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static DWORD dwCharSet = DEFAULT_CHARSET ; static int cxChar, cyChar, cxClient, cyClient, cxBuffer, cyBuffer, xCaret, yCaret ; static TCHAR * pBuffer = NULL ; HDC hdc ; int x, y, i ; PAINTSTRUCT ps ; TEXTMETRIC tm ; switch (message) case WM_INPUTLANGCHANGE: dwCharSet = wParam ; / fall through case WM_CREATE: hdc = GetDC (hwnd) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; GetTextMetrics (hdc, &tm) ; cxChar = tm.tmAveCharWidth ; cyChar = tm.tmHeight ; DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; ReleaseDC (hwnd, hdc) ; / fall through case WM_SIZE: / obtain window size in pixels if (message = WM_SIZE) cxClient = LOWORD (lParam) ; cyClient = HIWORD (lParam) ; / calculate window size in characters cxBuffer = max (1, cxClient / cxChar) ; cyBuffer = max (1, cyClient / cyChar) ; / allocate memory for buffer and clear it if (pBuffer != NULL) free (pBuffer) ; pBuffer = (TCHAR *) malloc (cxBuffer * cyBuffer * sizeof (TCHAR) ; for (y = 0 ; y cyBuffer ; y+) for (x = 0 ; x cxBuffer ; x+) BUFFER(x,y) = ; / set caret to upper left corner xCaret = 0 ; yCaret = 0 ; if (hwnd = GetFocus () SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; InvalidateRect (hwnd, NULL, TRUE) ; return 0 ; case WM_SETFOCUS: / create and show the caret CreateCaret (hwnd, NULL, cxChar, cyChar) ; SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; ShowCaret (hwnd) ; return 0 ; case WM_KILLFOCUS: / hide and destroy the caret HideCaret (hwnd) ; DestroyCaret () ; return 0 ; case WM_KEYDOWN: switch (wParam) case VK_HOME: xCaret = 0 ; break ; case VK_END: xCaret = cxBuffer - 1 ; break ; case VK_PRIOR: yCaret = 0 ; break ; case VK_NEXT: yCaret = cyBuffer - 1 ; break ; case VK_LEFT: xCaret = max (xCaret - 1, 0) ; break ; case VK_RIGHT: xCaret = min (xCaret + 1, cxBuffer - 1) ; break ; case VK_UP: yCaret = max (yCaret - 1, 0) ; break ; case VK_DOWN: yCaret = min (yCaret + 1, cyBuffer - 1) ; break ; case VK_DELETE: for (x = xCaret ; x cxBuffer - 1 ; x+) BUFFER (x, yCaret) = BUFFER (x + 1, yCaret) ; BUFFER (cxBuffer - 1, yCaret) = ; HideCaret (hwnd) ; hdc = GetDC (hwnd) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; TextOut (hdc, xCaret * cxChar, yCaret * cyChar, & BUFFER (xCaret, yCaret), cxBuffer - xCaret) ; DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; ReleaseDC (hwnd, hdc) ; ShowCaret (hwnd) ; break ; SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; return 0 ; case WM_CHAR: for (i = 0 ; i 0) xCaret- ; SendMessage (hwnd, WM_KEYDOWN, VK_DELETE, 1) ; break ; case t: / tab do SendMessage (hwnd, WM_CHAR, , 1) ; while (xCaret % 8 != 0) ; break ; case n: / line feed if (+yCaret = cyBuffer) yCaret = 0 ; break ; case r: / carriage return xCaret = 0 ; if (+yCaret = cyBuffer) yCaret = 0 ; break ; case x1B: / escape for (y = 0 ; y cyBuffer ; y+) for (x = 0 ; x cxBuffer ; x+) BUFFER (x, y) = ; xCaret = 0 ; yCaret = 0 ; InvalidateRect (hwnd, NULL, FALSE) ; break ; default: / character codes BUFFER (xCaret, yCaret) = (TCHAR) wParam ; HideCaret (hwnd) ; hdc = GetDC (hwnd) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; TextOut (hdc, xCaret * cxChar, yCaret * cyChar, & BUFFER (xCaret, yCaret), 1) ; DeleteObject ( SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; ReleaseDC (hwnd, hdc) ; ShowCaret (hwnd) ; if (+xCaret = cxBuffer) xCaret = 0 ; if (+yCaret = cyBuffer) yCaret = 0 ; break ; SetCaretPos (xCaret * cxChar, yCaret * cyChar) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; SelectObject (hdc, CreateFont (0, 0, 0, 0, 0, 0, 0, 0, dwCharSet, 0, 0, 0, FIXED_PITCH, NULL) ; for (y = 0 ; y cyBuffer ; y+) TextOut (hdc, 0, y * cyChar, & BUFFER(0,y), cxBuffer) ; DeleteObject (SelectObject (hdc, GetStockObject (SYSTEM_FONT) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; return DefWindowProc (hwnd, message, wParam, lParam) ;运行结果截图:上机实验报告IV课程名称:程序设计II班级:实验日期:姓名:学号:指导教师:实验序号:04实验成绩:一、实验名称:重现基本调色板二、实验目的及要求1.掌握VS的使用2.了解程序窗口的设计3.了解系统颜色设置函数使用3、 实验环境: VS2012四、实验内容创建一个简单的程序窗口,上面具有调色板功能的各种按扭(可适当简单化)5、 算法描述及实验步骤(1)移动滚动条模块主要是可以通过移动滚动条改变RGB的值来实现想要得到的颜色。(2)输入比例值模块主要是可以通过输入比例值改变RGB的值来实现想要得到的颜色。(3)选取图片模块主要是可以选取图片,点击图片的某个位置会返回点击图片位置的颜色和RGB值。(4)记录刚才调制好的颜色 六、调试过程及实验结果 。刚开始对整体的设计没有想法,后来由于自己能力有限,所以设置个拖动条的用来改变颜色,虽然对Windows程序还是不理解,但是勉强接受了它的想法。拖动条运动时对于颜色的调整有问题,不知道怎么实现,后来进过复杂的过程,成功地运行了七、总结通过这次程序设计让我对vs有了进一步的了解。通过慢慢学习,查阅课本,不断的练习操作,让我进一步掌握所学过的知识。通过这次设计让我得到了很多锻炼,比如:如何去查阅自己所需要的资料,如何去解决所遇到的问题。让我的能力得到了进一步的提升。八、附录LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) static COLORREF crPrim3 = RGB (255, 0, 0), RGB (0, 255, 0), RGB (0, 0, 255) ; static HBRUSH hBrush3, hBrushStatic ; static HWND hwndScroll3, hwndLabel3, hwndValue3, hwndRect ; static int color3, cyChar ; static RECT rcColor ; static TCHAR * szColorLabel = TEXT (Red), TEXT (Green), TEXT (Blue) ; HINSTANCE hInstance ; int i, cxClient, cyClient ; TCHAR szBuffer10 ; switch (message) case WM_CREATE : hInstance = (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE) ; hwndRect = CreateWindow (TEXT (static), NULL, WS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生活垃圾转运分拣工安全防护竞赛考核试卷含答案
- 2026年新科教版初中七年级道德与法治下册第三单元集体利益个人利益卷含答案
- 印后制作员岗前竞争考核试卷含答案
- 光敏电阻器制造工岗前技能认知考核试卷含答案
- 果蔬汁加工工岗前工作技巧考核试卷含答案
- 2026年新科教版初中八年级科学下册第三单元光合作用实验卷含答案
- 焊接专机装配工岗前设备性能考核试卷含答案
- 实验动物养殖员岗前变更管理考核试卷含答案
- 玻璃配料工安全知识竞赛考核试卷含答案
- 飞机供氧系统调试工变更管理模拟考核试卷含答案
- 员工行政规范培训课件
- 水平定向钻施工方案
- 2026年流动式起重机司机理论考题及答案(500题)
- 2025年空军专业技能类文职人员考试物资器材保管员练习题及答案
- 直播公司制度管理制度范本(3篇)
- 2025年菏泽一中自主招生题库及答案
- 酒店服务团队介绍
- 出口管制介绍课件
- PLC密码锁控制设计
- 《特种行业许可证》旅馆业各项安全管理制度
- 建模基础动画讲解
评论
0/150
提交评论