资源描述:
《面向对象编程技术实习报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、面向对象编程技术实验四实验报告班级:通信2班学号:201000800212姓名:王煜莹时间:2012-10-20目录1实验要求32实验过程及结果3A、对话框部分:3B、图形绘制函数的使用5C、定时器使用103问题及解决方案114实验总结11附件12关键程序代码12A、对话框部分:12B、自定义对话框:151实验要求掌握通用对话框和自定义对话框的使用;掌握图形绘制函数的使用;掌握定时器的设置和定时消息响应。2实验过程及结果A、对话框部分:1.研究第五章示例程序,理解通用对话框、自定义对话框的使用方式,为本次实验打基础。2.在自己的工作目录中建立新工程。从已有的示例程序中选取适当的代码,修改形成自
2、己的框架。代码整理过程中要特别注意代码的格式。〔源文件名后缀必须是.cpp,不可以是.c〕3.增加对WM_PAINT消息的处理,在窗口客户区输出文本。caseWM_PAINT:hdc=BeginPaint(hWnd,&ps);GetClientRect(hWnd,&rect);DrawText(hdc,TEXT("欢迎使用"),-1,&rect,DT_SINGLELINE
3、DT_CENTER
4、DT_VCENTER);EndPaint(hWnd,&ps);return0;4.增加菜单资源,要求至少包含“更改文本颜色”和“更改背景颜色”两个命令。5.自定义一个简单的对话框,该对话框内至少有一个“选
5、择背景色”按钮和一个静态文本框(或Edit框)以及确定、取消两个按钮。该简单对话框的处理逻辑为:点击“选择背景色”按钮,弹出通用对话框选择颜色,选择完颜色后,将颜色值显示到静态文本框(或Edit框)中。再点击该对话框的“确定”按钮,可将结果颜色值通过变量交接给外部程序使用。1.编写上述自定义对话框的处理函数。switch(LOWORD(wParam)){caseIDM_SET_BKColor:if(DialogBox((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),MAKEINTRESOURCE(IDD_DIALOG1),hWnd,ColorDlgPr
6、oc)==IDOK){if(change)hold=(HBRUSH)GetWindowLong(hWnd,GCL_HBRBACKGROUND);SetClassLong(hWnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBrush(g_Color));change=TRUE;if(change)DeleteObject(hold);InvalidateRect(hWnd,NULL,TRUE);}caseIDM_SET_SCRIPTColor:if(ChooseColor(&cc)){crText=cc.rgbResult;InvalidateRect(hWnd,N
7、ULL,TRUE);}2.增加响应菜单命令的代码。¨在“更改文本颜色”命令的响应中调用通用颜色对话框选择新的颜色。新选定的文本颜色用全局变量或静态变量保存,在主窗口刷新消息(WM_PAINT)处理中用该颜色显示原来输出的文本。caseIDC_BUT_SELCOLOR:SetDlgItemInt(hDlg,IDC_COLORVALUE,GetMyColor(hDlg),FALSE);returnTRUE;caseWM_PAINT:hdc=BeginPaint(hWnd,&ps);GetClientRect(hWnd,&rect);SetTextColor(hdc,crText);DrawText
8、(hdc,TEXT("欢迎使用"),-1,&rect,DT_SINGLELINE
9、DT_CENTER
10、DT_VCENTER);EndPaint(hWnd,&ps);return0;¨更改背景颜色命令响应中激活自定义对话框,对话框结束后,根据选择的颜色,结合SetClassLong和CreateSolidBrush函数,创建新的画刷,并替换原来主窗口类使用的画刷。{if(change)hold=(HBRUSH)GetWindowLong(hWnd,GCL_HBRBACKGROUND);SetClassLong(hWnd,GCL_HBRBACKGROUND,(LONG)CreateSolidBru
11、sh(g_Color));change=TRUE;if(change)DeleteObject(hold);InvalidateRect(hWnd,NULL,TRUE);}1.刷新窗口看显示结果是否符合要求(可在设置完颜色或画刷之后直接用InvalidateRect函数激发WM_PAINT消息)。B、图形绘制函数的使用1.研习EASYGDI示例程序。查看各个GDI绘制函数的使用方法。2.在自己的工