- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象编程技术
实验三 实验报告
班 级:电子二班
学 号:
姓 名:
时 间:
TOC \o 2-3 \t 标题 1,1,附录 1,1 1 实验要求 1
2 实验过程及结果 1
2.1调试示例程序Childwin 1
2.2改进ChildWin示例程序 1
2.3跟踪消息传递过程 4
2.4设计、实现一个软键盘4
2.5增加新的资源5
2.6增加菜单6
2.7增加快捷菜单处理7
3 实验总结 8
附录 关键代码 8
1实验要求
理解、窗口之间的消息传送、调用栈;掌握光标、图标、菜单的制作和使用方式;掌握菜单的响应方式、快捷菜单的载入及使用方式;理解GetWindowLong/SetWindowLong, GetClassLong/SetClassLong函数的用法。
2 实验过程及结果
2.1调试示例程序Childwin,查找程序中的UnderstandCallStack函数,跟踪调试。
在UnderstandCallStack函数中加断点,在一步一步进行调试,看每一步函数的取值,看函数取值是否正确,以及每一步是否出现错误。
2.2改进ChildWin示例程序,在子窗口内显示出窗口特定信息(窗口ID号);尝试在每个子窗口中绘制特定颜色的矩形。
在子窗口添加函数利用GetWindowLong函数取出子窗口的id值,在将id值赋值给已经定义的数组,再用wsprintf函数打印出来。再利用Rectangle函数绘制特定颜色的矩形。
绘制出如图的小矩形。
2.3跟踪消息传递过程
在Childwin的主窗口和子窗口过程函数设置断点,运行程序,查看各断点的响应过程。
利用switch-case结构来确定窗口过程收到的消息的类型以及相应的处理方法。当窗口过程函数对消息进行处理后,应返回0,所有窗口过程不进行处理的消息都必须传给DefWindowProc的函数。DefWindowProc的返回值必须从窗口过程返回。
2.4设计、实现一个软键盘
用子窗口实现一个软键盘,鼠标点击每个子窗口,可输入不同的字符。将输入的字符显示到屏幕上。
本实验在ChildWin示例程序的基础上加以改编,首先创建好子窗口,在子窗口上打印上键盘的字母定义一个数组,利用 GetWindowLong(hWnd, GWL_ID)+65,再将取出的值赋值给定义好的数组,之后在利用wsprintf 打印出键盘上的字符。再在父窗口中添加WM-PAINT消息,当子窗口传来消息时父窗口将获得此时的子窗口是哪一个,这个时候再定义一个数组将传递来的赋值给数组,再用wsprintf函数将它打印在主窗口上。
可以是这样
如果取值足够大可以同时显示大小写,如下图。
2.5增加新的资源
2.5.1用资源编辑器编辑一个光标,在资源编辑器增添新的资源,选择新建光标在自己绘制完成后保存检查resource.h的文件中是否以及定义了新建的光标,如果已经定义完成,在注册窗口类的时候包含该光标即可。wc.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR3));
2.5.2用资源编辑器编辑一个图标
在资源管理器中添加ICON资源,在自定义完成之后,注意查看自己头文件是否已经定义该图标,如果已经成功在注册窗口类的时候包含该图标名,再在下面程序中添加程序,完成添加图标实验,结果显示如下。
2.6增加菜单
在资源中添加一个新的菜单,在菜单中编写,“欢迎进入”,“编辑”,“退出”。
保存,在自定义完成之后,注意查看自己头文件是否已经定义该菜单,如果已经成功在注册窗口类的时候包含该菜单名。本次实验近加入了退出的菜单相应代码。
case WM_COMMAND: // 响应编辑控件通知消息
if (lParam == 0)
switch (LOWORD(wParam))
{
case IDM_FILE_EXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
return 0;
}
2.7增加快捷菜单处理
具体的处理下
ase WM_CREATE: //获取快捷菜单句柄
hPopMenu = LoadMenu (((LPCREATESTRUCT)lParam)-hInstance,
TEXT (“PopMenu”)); //再获取 hPopMenu 标识的快捷菜单的唯一的菜单便笺句柄 hPopMenu = GetSubMenu (hPopMenu, 0); return 0;
case WM_RBUTTONUP:
pt.x = LOWORD (lParam);
pt.y = HIWORD
您可能关注的文档
最近下载
- 企业工会助推企业高质量发展.docx VIP
- 细说通电直导线附近的场摘要:一无限长通电直导线,周围没有电场.DOC
- 昆山联江发纸业有限公司扩建项目.pdf
- 基于bp神经网络的引线键合模型 wire bonding model based on bp neural network.pdf VIP
- 透过“人车家”战略,看小米加码大家电对白电行业影响几何.pdf VIP
- 华师大版科学九年级上册 1-4章化学模块练习(含答案).doc VIP
- 绘本《小鹿历险记》.ppt VIP
- 八年级地理中国海洋资源.ppt VIP
- 纪念与象征——空间中的实体艺术.pptx VIP
- rca医疗案例分析ppt.pptx VIP
文档评论(0)