VC++键盘与鼠标的消息处理_第1页
VC++键盘与鼠标的消息处理_第2页
VC++键盘与鼠标的消息处理_第3页
VC++键盘与鼠标的消息处理_第4页
VC++键盘与鼠标的消息处理_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

教 案2007 ~2008 学年第一学期主讲教师课程名称面对对象程序设计〔VC++〕课程类别专业根底课学80、4授课班级VC++的使用及面对对象软件工使用教材程实例分析系()教研室(试验室) 计算机应用教研室课时授课计划课次序号:一、课 题: ch7键盘与鼠标的消息处理〔2〕二、课 型:讲授三、目的要求:1、生疏键盘消息及常见的虚拟键码。、把握键盘消息的处理方法。四、重点、难点:重点:键盘消息处理技术。。难点:按键消息〔WM_KEYDOWN〕的处理技巧。五、教学方法及手段:依据提出问题、解决问题的思路开展教学。六、参考资料:《VC++的使用及面对对象软件工程实例分析》贺怀清编,电子工业出版社8章七、作业:试验题1,3八、授课记录:班 九、授课效果分析:十、教学进程〔教学内容、教学环节准时间安排等〕1、复习鼠标的消息处理:关键是确定使用哪个消息、如何编写消息处理函数。2、导入课题利用键盘消息猎取用户的输入信息,在消息处理函数中完成用户的功能需求。3、教学内容键盘消息分类:系统键消息和非系统键消息系统键:输入键与Alt键组合,一般有Windows内部处理。Alt键盘消息:系统键消息:WM_SYSKEYDOWN WM_SYSKEYUP非系统键消息:WM_KEYDOWN WM_KEYUP WM_CHAR(可见字符的按键消息)说明:WindowsGetFocus猎取拥有输入焦点的窗口。二、键盘消息的处理即键盘消息处理函数,全部键盘消息处理函数的参数一样,比方:voidOnChar(UINTnChar,UINTnRepCnt,UINTnFlags)nRepCntnFlags扫描码和标志位。键盘按键名称或鼠标键鼠标左键钮键值1符号常量名VK_LBUTTON键盘按键名称或鼠标键LeftArrow键值37符号常量名VK_LEFT鼠标右键钮1VK_RBUTTONUpArrow38VK_UPControl-break执行3VK_CANCELRightArrow键39VK_RIGHTBackspace8VK_BACKDownArrow40VK_DOWNTab9VK_TABPrintScreen44VK_SNAPSHOTClear12VK_CLEARIns45VK_INSERTEnter13VK_RETURNDel46VK_DELETEShift16VK_SHIFTHelp47VK_HELPCtrl17VK_CONTROL0~948~57VK0~VK9Alt18VK_MENU字母键A~Z65~90VK_A~VK_Z19 VK_PAUSE 96~105VK_NUMPAD0~PauseCapsLock20VK_CAPITAL小键盘数字0键*乘号键106VK_NUMPAD9VK_MULTIPLYEsc27VK_ESCAPE+加号键107VK_ADDSpaceBar32VK_SPACE-减号键109VK_SUBTRACTUp33VK_PRIOR.小数点键110VK_DECIMALDown34VK_NEXT/除号键111VK_DIVIDEEnd35VK_ENDF1~F12键112~123VK_F1~VK_F12Home36VK_HOMENumLock144VK_NUMLOCKScrollLock键145VK_SCROLLWM_KEYDOWNWM_KEYUP三、键盘消息处理应用举例:1:利用上下左右箭头键在一个对话框中移动字符“A实现过程:第一步,创立对话框应用程序ex_key_movem_xPosm_yPos,表示字符的位置。intm_xPos,m_yPos;第三步,在对话框类的构造函数中对数据成员初始化为0。M_xPos=m_yPos=0;OnPaintelseCPaintDCdc2(this);dc2.TextOut(m_xPos,m_yPos,“A“); //显示字符A]第五步,添加对话框类的键盘消息WM_KEYUP的响应函数,依据按键修改坐标变量m_xPosm_yPos。voidCEx_keyDlg::OnKeyUp(UINTnChar,UINTnRepCnt,UINTnFlags){ //TODO:Addyourmessagehandlercodehereand/orcalldefaultif(nChar==VK_RIGHT)m_xPos+=10;elseif(nChar==VK_LEFT)m_xPos-=10;elseif(nChar==VK_UP)m_yPos-=10;elseif(nChar==VK_DOWN)m_yPos+=10;Invalidate;CDialog::OnKeyUp(nChar,nRepCnt,nFlags);*/}[运行:每当按下并释放箭头键时,字符移动。单独按下箭头键时,字符不动]何处理按键消息?缘由:按键消息发给了对话框类的父窗口。PreTranslateMessageBOOLCEx_keyDlg::PreTranslateMessage(MSG*pMsg){//TODO:Addyourspecializedcodehereand/orcallthebaseclassif(pMsg->message==WM_KEYDOWN){if(pMsg->wParam==VK_RIGHT)m_xPos+=10;elseif(pMsg->wParam==VK_LEFT)m_xPos-=10;elseif(pMsg->wParam==VK_UP)m_yPos-=10;elseif(pMsg->wParam==VK_DOWN)m_yPos+=10;}Invalidate;returnCDialog::PreTranslateMessage(pMsg);}运行:当箭头键按下时,字符随按键移动。问题:当字符移到窗口右边缘或窗口下边缘时,连续移动则移出了对话框窗口。其限定在窗口内。//限制字符坐标在窗口内if(m_xPos<0)m_xPos=0;if(m_yPos<0)m_yPos=0;CRectrect;GetClientRect(&rect);//取得窗口客户区intwidth=rect.Width;intheight=rect.Height;if(m_yPos>height)m_yPos=height-20;if(m_xPos>width)m_xPos=width-20;总结:键盘消息的响应在响应的消息映射函数中实现,其中按键消息WM_KEYDOWNPreTranslateMessage中实现。1:光标插入符的一般使用步骤如下:〔即计算的光标位置、设置的光标位置、显示光标。相关函数如下:CreateSolidCaret(intnWidth,intnHeight):创立矩形插入符CreateSolidCaret(intnWidth,intnHeight):创立灰色矩形插入符CreateCaret(HBITMAPpBitmap):创立一个图片插入符HideCaret:隐蔽插入符SetCaretPos(CPointm_posShowCaret:在当前位置显示插入符学问点2:插入符随输入内容移动的实现:相关函数如下:GetTextMetrics获得当前文本的字符属性〔大小等,保存在参数变量中。GetTextExtentCSize类的值。cxcy实现过程:第一步,创立单文档程序ex_Insert_其次步,文档设计:首先在文档类中添加成员变量m_strText保存输入的字符:CStringm_strText;然后在构造函数中初始化为空: m_strText.Empty;第三步,视图设计:*WM_CHARvoidCEx_Insert_CursorView::OnChar(UINTnChar,UINTnRepCnt,UINTnFlags){//TODO:Addyourmessagehandlercodehereand/orcalldefaultCEx_Insert_CursorDoc*pDoc=GetDocument;ASSERT_VALID(pDoc);pDoc->m_strText+=nChar;Invalidate;CView::OnChar(nChar,nRepCnt,nFlags);}private:CPointm_CaretPos;在视图类的构造函数中初始化m_CaretPos:m_CaretPos.x=m_CaretPos.y=0; 置0OnDraw,依据输入的字符长度移动插入符:voidCEx_Insert_CursorView::OnDraw(CDC*pDC){CEx_Insert_CursorDoc*pDoc=GetDocument;ASSERT_VALID(pDoc);//TODO:adddrawcodefornativedatahereTEXTMETRICsTextMetric;pDC->GetTextMetrics(&sTextMetric); //获得当前文本的文字属性CreateSolidCaret(sTextMetric.tmAveCharWidth/8,sTextMetric.tmHeight); //创立插入符pDC->TextOut(0,0,pDoc->m_strText);CSizeoSize=pDC->GetTextExtent(pDoc->m_strText);

温馨提示

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

评论

0/150

提交评论