版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验五 MFC 鼠标和键盘编程实验一、实验目的(1) 掌握在Visual Studio 的程序调试方法。(2) 掌握MFC 消息映射的操作步骤;(3) 掌握在MFC 程序中处理键盘和鼠标消息的方法;二、实验内容请编写程序,要求如下:(1) 在屏幕上绘制一个矩形,并将举行内部划分成4 个矩形区域;(2) 在矩形内移动鼠标时,在上面划分的4 个区域中显示不同的光标,并在屏幕左上角显示光标坐标;(3) 当用户按下SHIFT 和CTRL 键时,显示一个消息框,提示用户按下的是哪个键。三、消息处理程序代码清单1.头文件#include "afxwin.h"class CDemoWnd
2、 :public CFrameWndpublic:CDemoWnd();CDemoWnd();public:LRESULT OnPaint(WPARAM wParam, LPARAM lParam);LRESULT OnMouseMove(WPARAM wParam, LPARAM lParam);LRESULT OnKeyDown(WPARAM wParam, LPARAM lParam);DECLARE_MESSAGE_MAP();class CDemoApp :public CWinApppublic:BOOL InitInstance();CDemoApp theApp;2.源文件#i
3、nclude "Demo.h" CDemoWnd:CDemoWnd() / 构造函数 CDemoWnd:CDemoWnd() / 析构函数BEGIN_MESSAGE_MAP(CDemoWnd, CFrameWnd)ON_MESSAGE(WM_PAINT, OnPaint)ON_MESSAGE(WM_MOUSEMOVE, OnMouseMove)ON_MESSAGE(WM_KEYDOWN, OnKeyDown)END_MESSAGE_MAP()LRESULT CDemoWnd:OnPaint(WPARAM wParam, LPARAM lParam)CPaintDC dc(t
4、his);dc.Rectangle(50, 50, 450, 450);dc.MoveTo(50, 250);dc.LineTo(450, 250);dc.MoveTo(250, 50);dc.LineTo(250, 450);return 0;LRESULT CDemoWnd:OnMouseMove(WPARAM wParam, LPARAM lParam)int x = 0;int y = 0;x = LOWORD(lParam);y = HIWORD(lParam);HCURSOR hCursor;CString Buffer0, Buffer1;Buffer0.Format("
5、;( %d,%d ", x, y);Buffer1.Format("( %d,%d ) ", x, y);CClientDC dc(this);dc.TextOut(50, 20, Buffer0);dc.TextOut(50, 20, Buffer1);if (x>50 && x<250 && y>50 && y<250)hCursor = theApp.LoadStandardCursor(IDC_IBEAM);SetCursor(hCursor);else if (x>250 &a
6、mp;& x<450 && y>50 && y<250)hCursor = theApp.LoadStandardCursor(IDC_SIZENS);SetCursor(hCursor);else if (x>50 && x<250 && y>250 && y<450)hCursor = theApp.LoadStandardCursor(IDC_SIZENWSE);SetCursor(hCursor);else if (x>250 && x
7、<450 && y>250 && y<450)hCursor = theApp.LoadStandardCursor(IDC_ARROW);SetCursor(hCursor);return 0;LRESULT CDemoWnd:OnKeyDown(WPARAM wParam, LPARAM lParam)CString a1 = "按下CTRL"CString a2 = "按下SHIFT"switch (wParam) case VK_CONTROL:AfxMessageBox(a1, MB_OK, 0
8、);break;case VK_SHIFT:AfxMessageBox(a2, MB_OK, 0);break;return 0;BOOL CDemoApp:InitInstance()CDemoWnd *pMainWnd = new CDemoWnd();pMainWnd->Create(NULL, "Demo Mini-MFC");pMainWnd->ShowWindow(m_nCmdShow);pMainWnd->UpdateWindow();m_pMainWnd = pMainWnd;return TRUE;四、运行结果1.在屏幕上绘制一个矩形,并
9、将举行内部划分成4 个矩形区域,在屏幕左上角显示光标坐标;2. 在矩形内移动鼠标时,在上面划分的4 个区域中显示不同的光标,并在屏幕左上角显示光标坐标;a.鼠标在第一个区域时,显示I型文本光标b. 鼠标在第二个区域时,显示带有指向北方和南方箭头的光标 c. 鼠标在第三个区域时,显示带有指向西北方和东南方箭头的光标d. 鼠标在第四个区域时,显示箭头光标3.按下CTRL 键4.按下SHIFT键五、总结鼠标消息、按键消息和字符消息的字参数和长字参数包含信息的意义以及处理方法按键消息:按下或松开一个键时就产生了一按键消息。字符消息:一个按键的组合产生了一个可以显示的字符时,就产生了一个字符消息。1.
10、鼠标消息长字参数lParam:包含了鼠标位置(相当于窗口的左上角为原点的坐标值)。 低位包含鼠标位置的x 坐标值,高位包含鼠标位置的y 坐标。字参数wParam:包含了指示各种虚键状态的值对于鼠标消息的处理:监测Shift 和Ctrl 键case WM_LBUTTONDOWN: / 按下鼠标左键if(wParam&MK_CONTROL)&&(wParam&MK_SHIFT) / Shift 和Ctrl 键都被按下break;case WM_LBUTTONUP: / 释放鼠标左键break; 2. 按键消息字参数wParam:包含了识别按下的键的虚键码。长字参数l
11、Param(32 位的变量):重复计数位(015 位)、OEM 扫描码(1623 位)、扩展键标志(24 位)、保留位(2528 位)、关联码(29 位)、键的先前状态(位30)、转换状态(31 位)。3. 字符消息系统字符消息:WM_SYSKEYDOWN 和WM_SYSKEYUP 按键消息只能产生系统消息。非系统字符消息:WM_KEYDOWN 和WM_KEYUP 的按键消息只能产生非系统消息。六、实验总结通过本次实验,我进一步的熟悉了Visual Studio 软件的开发环境,对这个软件有了更深的了解。熟悉了 Visual Studio开发环境, 学习和掌握了 MFC消息映射的操作步骤,并且
12、掌握在MFC 程序中处理键盘和鼠标消息的方法,进一步掌握了在Visual Studio中调试程序的方法。在本次实验中,我理解了按键消息、字符消息、鼠标消息的概念,掌握了它们的字参数和长字参数包含信息的意义以及处理方法。也学习了几种预定义光标常量的用法,如箭头光标、十字光标、I 形文本光标、空图标、十字箭头光标、带有指向东北方和西南方箭头的光标、带有指向北方和南方箭头的光标、带有指向西北方和东南方箭头的光标、带有指向东方和西方箭头的光标、垂直箭头光标、计时光标(也称沙漏光标)。在实验中我也复习了以前的实验中学到的在Visual Studio 开发环境调试程序的方法,并且可以更加熟练的应用其来修改程序。在实验过程中,我也遇到了一些困难,比如不够
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年社区居家养老服务网络组网运营管理方案
- 2026年农村冷链物流共同配送大数据平台建设方案
- 2026年入境数字化综合服务平台建设与外卡数据对接
- 2026年山东省青岛市崂山区重点中学初三适应性月考(八)化学试题试卷含解析
- 广东省中学山市杨仙逸中学2025-2026学年初三5月考试化学试题试卷含解析
- 2026年航空器称重与重心控制持续适航管理要求
- 2026年中国出口集装箱运价指数编制方法与市场应用
- 湖北省团风县达标名校2025-2026学年中考模拟最后十套:化学试题(八)考前提分仿真卷含解析
- 江苏省泰州市海陵区重点名校2026届初三毕业班模拟考试(五)生物试题含解析
- 2026届山东省日照莒县联考初三4月适应性训练(一)生物试题含解析
- 银发经济创业项目计划书
- 湿热条件下大丝束碳纤维复合材料的力学性能分析及失效机制
- 2025年03月通榆县委统一战线工作部民族宗教事务服务中心公开选调事业编制工作人员笔试历年参考题库考点剖析附解题思路及答案详解
- 2025年上饶幼儿师范高等专科学校单招职业技能测试题库汇编
- T-CNITA 05103-2018 袋式除尘用水刺非织造滤料
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 《光的本质之争》课件
- 《任务型教学法在初中历史教学中的应用研究》
- 学校食堂员工培训
- 中药灌肠疗法课件
- 西门子S7-1500 PLC技术及应用 课件 第5章 S7-1500 PLC 的通信及其应用
评论
0/150
提交评论