Windows应用程序对键盘与鼠标的响应(I)

Windows应用程序对键盘与鼠标的响应(I)

ID:39339361

大小:912.10 KB

页数:44页

时间:2019-07-01

Windows应用程序对键盘与鼠标的响应(I)_第1页
Windows应用程序对键盘与鼠标的响应(I)_第2页
Windows应用程序对键盘与鼠标的响应(I)_第3页
Windows应用程序对键盘与鼠标的响应(I)_第4页
Windows应用程序对键盘与鼠标的响应(I)_第5页
资源描述:

《Windows应用程序对键盘与鼠标的响应(I)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章Windows应用程序对键盘与鼠标的响应1Windows应用程序对键盘的响应本节实现在应用程序中响应键盘操作。俄罗斯方块游戏对键盘的响应:方向键←、→、↓:向左、右、下移动当前方块;方向键↑:旋转当前方块;空格键:当前方块一步到位;回车键:暂停/启动游戏。扫描码是依赖于具体设备的,为达到设备无关性的要求,往往使用与具体设备无关的虚拟码,虚拟码是由Windows系统定义的与设备无关的按键的标识。键盘上的键对应一个唯一的标识值(扫描码)按下或释放某键时产生6.1键盘在应用程序中的应用扫描码键盘消息处理过程由于键盘的输入产生一条消息扫描码、虚拟码以及其

2、他与击键有关的信息设备驱动程序截取键的扫描码翻译虚拟码它含取出键盘消息进行处理消息设备驱动程序把消息放到系统的消息队列中Windows从系统消息队列中取出消息发送到相应的线程消息队列中窗口过程虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的wParam参数中,用以标识哪一个键被按下或释放,最常用的虚拟码已经在Windows.h中定义,操作系统在接收到键盘输入后,还要决定哪一个应用程序将响应输入Windows系统把消息发送给具有“输入焦点(inputfocus)的窗口应用程序一般有几个窗口,但当按下某一个键时,只有一个窗口能接收到该键盘消息,接收

3、这个键盘消息的窗口称为有“输入焦点”的窗口有“输入焦点”的窗口应是活动窗口或者活动窗口的子窗口窗口具有输入焦点窗口函数通过捕获WM_SETFOCUS和WM_KILLFOCUS消息确定当前窗口是否具有输入焦点。窗口失去输入焦点输入焦点在画图应用程序中,当打开“编辑颜色”对话框时,该窗口具有输入焦点。键盘消息分为两类按键消息字符消息按下或松开一个键时就产生了一按键消息一个按键的组合产生了一个可以显示的字符时,就产生了一个字符消息系统按键消息非系统按键消息Alt键与相关输入键的组合产生的消息,这些键一般由Windows系统内部直接处理,应用程序不处理若应用程

4、序处理了这些系统键消息,还要调用DefWindowsProc()函数,以便不影响系统对它们的处理不使用Alt键组合的按键消息键盘消息按键消息的两个变量wParamlParam32位的变量重复计数位(0~15位)OEM扫描码(16~23位)扩展键标志(24位)保留位(25~28位)关联码(29位)键的先前状态(位30)转换状态(31位)包含了识别按下的键的虚拟码在WinMain函数的消息循环中包含了TranslateMessage函数,其功能是把按键消息转化为字符消息,但只有当键盘驱动程序把键盘字符映射成ASCII码后才能产生WM_CHAR消息字符消息系

5、统非系统WM_KEYDOWN和WM_KEYUP的按键消息只能产生非系统字符消息WM_SYSKEYDOWN和WM_SYSKEYUP按键消息只能产生系统字符消息【例6-1】本例演示键盘输入时所产生的消息序列并在窗口的客户区显示对应的字符。6.2键盘操作应用举例用户窗口区输入“这是一个有关键盘操作的示例程序”的字符串程序中缓冲区大小只设30个字符,当缓冲区满时若再输入任何字符,就出现(1)号错误提示用户按下左箭头键直至光标到达本行起始位置时,就无法再往左移动,则出现(2)号错误信息若此时您按下Esc键,就出现(3)号错误提示信息若当前光标位置处于本行的起始位

6、置,此时按下回退键(BackSpace),则出现编号为(4)的错误提示信息若字符缓冲区中已没有任何字符,此时按下了Delete键,则出现(5)号错误提示信息当按下Home键或End键时,当前输入位置为本行起始位置或末尾longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam){#defineBufSize30//设置存放字符的缓冲区大小//设置静态字符数组,存放输入的字符,字符个数不能超出缓冲区大小staticcharcCharBuf[BufSize];staticintnNumChar

7、=0;//现有字符个数staticintnArrayPos=0;//字符的位置staticintnLnHeight;staticintnCharWidth;intx;//循环变量HDChDC;TEXTMETRICtm;PAINTSTRUCTPtStr;//定义指向包含绘图信息的结构体变量switch(iMessage)//处理消息{caseWM_CHAR://遇到非系统字符所作的处理if(wParam==VK_BACK)//处理“遇到回退键的消息”{//若已在一行文字的开始处,则提示用户"不能回退"if(nArrayPos==0)MessageBox(

8、hWnd,"当前位置是文本的起始位置,不能回退",NULL,MB_OK);else{//每按一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。