VC++实验五-MFC-鼠标和键盘编程实验_第1页
VC++实验五-MFC-鼠标和键盘编程实验_第2页
VC++实验五-MFC-鼠标和键盘编程实验_第3页
VC++实验五-MFC-鼠标和键盘编程实验_第4页
VC++实验五-MFC-鼠标和键盘编程实验_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

--可编辑-感谢下载支持试验五 MFC鼠标和键盘编程试验一、预备学问1键盘消息按键消息:按下或松开一个键时就产生了一按键消息。字符消息:一个按键的组合产生了一个可以显示的字符时,就产生了一个字符消息。消息消息WM_KEYDOWNWM_KEYUPWM_SYSKEYUP类型含义非系统按下了非系统键消息非系统按下了非系统键消息系统按下了系统键消息系统松开了系统键消息按键消息的两个参数wParam:包含了识别按下的键的虚键码。lParam〔32位的变量〔0~15位、OEM〔16~23位〔24位、保存位2~28位、关联码29位、键的从前状态〔位3、转换状态31位。字符消息系统字符消息:WM_SYSKEYDOWN和WM_SYSKEYUP按键消息只能产生系统消息。非系统字符消息:WM_KEYDOWN和WM_KEYUP消息消息类型含义WM_CHAR非系统按下了非系统键消息非系统按下了非系统键消息WM_SYSCHAR系统按下了系统键消息系统松开了系统键消息2Windows图形界面的应用程序。代表预定义光标的常量光标属性描述IDC_ARROWIDC_CROSSIDC_ICONIDC_SIZEALL代表预定义光标的常量光标属性描述IDC_ARROWIDC_CROSSIDC_ICONIDC_SIZEALL箭头光标十字光标I形文本光标空图标十字箭头光标IDC_SIZENESWIDC_SIZENWSEIDC_SIZEWEIDC_WAIT

-可编辑-感谢下载支持带有指向东北方和西南方箭头的光标带有指向北方和南方箭头的光标带有指向西北方和东南方箭头的光标带有指向东方和西方箭头的光标垂直箭头光标计时间标(也称沙漏光标)鼠标消息鼠标消息的长字参数lParam〔相当于窗口的左上角为原点的坐标值。低位包含鼠标位置的x坐标值,高位包含鼠标位置的y坐标。字参数wParam值 含义MK_CONTROLMK_LBUTTONMK_RBUTTONMK_SHIFT

按下键按上的Ctrl键按下了鼠标左键,等同与WM_LBUTTONDOWN按下了鼠标中键,等同与WM_MBUTTONDOWN按下了鼠标右键,等同与WM_RBUTTONDOWNShift键对于鼠标消息的处理监测Shift和Ctrl键caseWM_LBUTTONDOWN//按下鼠标左键if((wParam&MK_CONTROL)&&(wParam&MK_SHIFT))… //ShiftCtrl键都被按下break;caseWM_LBUTTONUP//释放鼠标左键…break;…二、试验目的把握在VisualStudio的程序调试方法。把握MFC消息映射的操作步骤;把握在MFC程序中处理键盘和鼠标消息的方法;三、试验内容请编写程序,要求如下:在屏幕上绘制一个矩形,并将进展内部划分成4个矩形区域;4个区域中显示不同的光标,并在屏幕左上角显示光标坐标;当用户按下SHIFT和CTRL键时,显示一个消息框,提示用户按下的是哪个键。四、试验结果列出消息处理程序代码清单Demo.h:#include#include“afxwin.h“--可编辑-感谢下载支持classclassCDemoWnd:publicCFrameWnd{public:CDemoWnd;~CDemoWnd;public:public:LRESULTOnPaint(WPARAMwParam,LPARAMlParam);LRESULTOnMouseMove(WPARAMwParam,LPARAMlParam);LRESULTOnKeyDown(WPARAMwParam,LPARAMlParam);DECLARE_MESSAGE_MAPpublic:////定义两个整形变量,用来记录鼠标的位置intm_nX0;intm_nY0;};classclassCDemoApp:publicCWinApp{public:BOOLInitInstance;};CDemoAppCDemoApptheApp;Demo.cpp:#include#include“Demo.h“////构造函数CDemoWnd::CDemoWndCDemoWnd::CDemoWnd{intm_nX0=0;intm_nY0=0;}////析构函数CDemoWnd::~CDemoWndCDemoWnd::~CDemoWnd{}////消息映射宏声明要处理的消息BEGIN_MESSAGE_MAP(CDemoWnd,CFrameWnd)ON_MESSAGE(WM_PAINT,OnPaint)BEGIN_MESSAGE_MAP(CDemoWnd,CFrameWnd)ON_MESSAGE(WM_PAINT,OnPaint)OnMouseMove)ON_MESSAGE(WM_KEYDOWN,OnKeyDown)END_MESSAGE_MAP//OnPaint//OnPaint消息函数用来处理刷消息WM_PAINT//绘制一个矩形,并将其分为四块LRESULTLRESULTCDemoWnd::OnPaint(WPARAMwParam,LPARAMlParam){CPaintDCdc(this);dc.Rectangle(100,100,400,400);dc.MoveTo(100,250);dc.LineTo(400,250);dc.MoveTo(250,100);dc.LineTo(250,400);returnreturn0;}//OnMouseMove//OnMouseMove消息函数用来处理WM_MOUSEMOVE消息//实现鼠标在矩形的不同区域,显示不同的光标//并在左上角显示鼠标的位置坐标LRESULTLRESULTCDemoWnd::OnMouseMove(WPARAMwParam,LPARAMlParam){CClientDCdc(this);HCURSORhCursor;CStringstr;m_nX0m_nX0=LOWORD(lParam);m_nY0=HIWORD(lParam);////显示鼠标的位置坐标str.Format(_T(“(%d,%d)“),str.Format(_T(“(%d,%d)“),m_nX0,m_nY0);dc.TextOutW(10,10,str);////在矩形的不同区域内鼠标以不同的光标显示ifif(m_nX0>100&&m_nX0<250&&m_nY0>100&&m_nY0<250){hCursor=theApp.LoadStandardCursor(IDC_WAIT);SetCursor(hCursor);}elseif(m_nX0>250&&m_nX0<400&&m_nY0>100&&m_nY0<250){hCursor={hCursor=theApp.LoadStandardCursor(IDC_CROSS);SetCursor(hCursor);}elseif(m_nX0>100&&m_nX0<250&&m_nY0>250&&m_nY0<400){hCursor=theApp.LoadStandardCursor(IDC_SIZEALL);SetCursor(hCursor);}elseif(m_nX0>250&&m_nX0<400&&m_nY0>250&&m_nY0<400){hCursor=theApp.LoadStandardCursor(IDC_IBEAM);SetCursor(hCursor);}returnreturn0;}//OnKeyDown函数用来处理键盘消息////OnKeyDown函数用来处理键盘消息//实现按下SHIFT和CTRL键时,显示一个消息框,提示用户按下的是哪个键LRESULTCDemoWnd::OnKeyDown(WPARAMwParam,LPARAMlParam){if(wParam==VK_CONTROL){MessageBox(_T(“按下CTRL键_T(“消息框MB_OK);}ifif(wParam==VK_SHIFT){MessageBox(_T(“按下SHIFT键“),_T(“消息框“),MB_OK);}returnTRUE;}BOOLBOOLCDemoApp::InitInstance{CDemoWnd*pMainWnd=newCDemoWnd;pMainWnd->Create(NULLpMainWnd->Create(NULL_T(“MFC鼠标键盘编程“));pMainWnd->UpdateWindow;m_pMainWnd=pMainWnd;returnTRUE;}--可编辑-感谢下载支持试验结果:试验结果:〔1〕.4个矩形区域,在矩形内移动鼠标时,在上面划分的4个区域中显示不同的光标,并在屏幕左上角显示光标坐标。〔2〕.当按下SHIFT和CTRL键时,显示一个消息框,提示用户按下的是哪个键。总结鼠标消息、按键消息和字符消息的字参数和长字参数包含信息的意义以及处理方法。鼠标消息:wParam:包含了指示各种虚键状态的值。lParam:x坐标值,高位包含鼠标位置的y位置按键消息:wParam:包含了识别按下的键的虚键码lParam〔0-15OEM〔16-32〔24〔25-28位、关联码〔29、键的从前状态〔30、转换状态〔31。字符消息:ASCII码。lParam〔0-15OEM〔16-32〔24〔25-28位、关联码〔29、键的从前状态〔30、转换状态〔31。总结试验的心得体会,试验中遇到的困难以及解决的方法等。通过本次编程试验,我学习和把握了键盘消息和鼠标消息的编程规章和方法,以及应用时的

温馨提示

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

最新文档

评论

0/150

提交评论