预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第六章 Windows应用程序中的键盘与鼠标扫描码是依赖于具体设备的,为达到设备无关性的要求,往往使用与具体设备无关的虚拟码,虚拟码是由Windows系统定义的与设备无关的键的标识虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的wParam参数中,用以标识哪一个键被按下或释放,最常用的虚拟码已经在Windows.h中定义,操作系统在接收到键盘输入后键盘消息按键消息的两个变量在WinMain函数的消息循环中包含了TranslateMessage函数,其功能是把按键消息转化为字符消息,但只有当键盘驱动程序把键盘字符映射成ASCII码后才能产生WM_CHAR消息【6-1】设计一个窗口,在该窗口中练习键盘的响应,要求如下: (1)单击键盘上的向上箭头时,窗口中显示“Youhadhittedtheupkey” (2)单击<Shift>键时,窗口中显示“YouhadhittedtheSHIFTkey” (3)单击<Ctrl>键时,窗口中显示“YouhadhittedtheCTRLkey” (4)单击<Ctrl+A>键时,窗口中显示“YouhadhittedtheCTRLAkey” (5)单击<Shift+B>键时,窗口中显示“YouhadhittedtheSHIFTBkey”longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam) {HDChDC; //定义设备环境句柄. PAINTSTRUCTps; //定义包含绘图信息的结构体变量 HPENhPen; //定义画笔句柄。 HBRUSHhBrush; //定义画刷句柄switch(iMessage) {caseWM_KEYDOWN: {switch(wParam) {caseVK_UP: //当按上箭头键时,变量置为真。 nUpKeyDown=TRUE; break; caseVK_SHIFT: //当按shift键时,变量置为真。 nShiftKeyDown=TRUE;break; caseVK_CONTROL: //当按control键时,变量置为真 nCtrlKeyDown=TRUE; break; default: break; } } break; caseWM_KEYUP: InvalidateRect(hWnd,NULL,FALSE); break;caseWM_CHAR: if(wParam==(65&VK_CONTROL)) {if(nCtrlKeyDown==TRUE) {nCtrlAKeyDown=TRUE; nCtrlKeyDown=FALSE;} } elseif(wParam==98||wParam==66) //当按下b键时 {if(nShiftKeyDown==TRUE) //检查shift键是否处于按下状态。 {nShiftBKeyDown=TRUE; //当SHIFT键按下时,变量置为真 nShiftKeyDown=FALSE;} } break;//输出信息。 if(nUpKeyDown==TRUE) { Rectangle(hDC,0,0,300,200); TextOut(hDC,0,0,cUp,strlen(cUp)); nUpKeyDown=FALSE; }elseif(nShiftBKeyDown==TRUE) { Rectangle(hDC,0,0,300,200); TextOut(hDC,0,0,cShift_B,strlen(cShift_B)); nShiftBKeyDown=FALSE; nShiftKeyDown=FALSE; }用户窗口区输入“这是一个有关键盘操作的示例程序”的字符串longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam) { #defineBufSize15 //设置存放字符的缓冲区大小 staticcharcCharBuf[BufSize]; //设置静态字符数组,存放输入的字符,字符个数不能超出缓冲区大小 staticintnNumChar=0; //现有字符个数 staticintnArrayPos=0; //字符的位置 staticintnLnHeight; staticintnCharWidth; intx; HDChDC; TEXTMETRICtm; PAINTSTRUCTPtStr; //定义指向包含绘图信息的结构体变量switch(iMessage) //处理消息 {caseWM_CHAR: //遇到非系统字符所作的处理 {if