windows sdk编程系列文章04 ---- 处理键盘输入消息

windows sdk编程系列文章04 ---- 处理键盘输入消息

ID:41037405

大小:35.00 KB

页数:6页

时间:2019-08-14

windows sdk编程系列文章04 ---- 处理键盘输入消息_第1页
windows sdk编程系列文章04 ---- 处理键盘输入消息_第2页
windows sdk编程系列文章04 ---- 处理键盘输入消息_第3页
windows sdk编程系列文章04 ---- 处理键盘输入消息_第4页
windows sdk编程系列文章04 ---- 处理键盘输入消息_第5页
资源描述:

《windows sdk编程系列文章04 ---- 处理键盘输入消息》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、windowssdk编程系列文章----处理键盘输入消息2008-04-0820:22在本课中,我们将要学习WINDOWS程序是如何处理键盘消息的。理论:因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它。WINDOWS将负责把击键消息送到具有输入焦点的那个应用程序中去。尽管屏幕上可能同时有几个应用程序窗口,但一个时刻仅有一个窗口有输入焦点。有输入焦点的那个应用程序的标题条总是高亮度显示的。实际上您可以从两个角度来看键盘消息:一是您可以把它看成是一大堆的按键消息的集合,在这种情况下,当您按下一个键时,WINDOWS就会发送一个WM_KE

2、YDOWN给有输入焦点的那个应用程序,提醒它有一个键被按下。当您释放键时,WINDOWS又会发送一个WM_KYEUP消息,告诉有一个键被释放。您把每一个键当成是一个按钮;另一种情况是:您可以把键盘看成是字符输入设备。当您按下“a”键时,WINDOWS发送一个WM_CHAR消息给有输入焦点的应用程序,告诉它“a”键被按下。实际上WINDOWS内部发送WM_KEYDOWN和WWM_KEYUP消息给有输入焦点的应用程序,而这些消息将通过调用TranslateMessage翻译成WM_CHAR消息。WINDOWS窗口过程函数将决定是否处理所收到的消息,一般说来您不大会

3、去处理WM_KEYDOWN、WM_KEYUP消息,在消息循环中TranslateMessage函数会把上述消息转换成WM_CHAR消息。在我们的课程中将只处理WM_CHAR。例子:(见光盘FirstWindow4)#include"Windows.h"#include"tchar.h"HWNDhWinMain;TCHARszClassName[]=_T("MyClass");TCHARszCaptionMain[]=_T("MyFirstWindow!");TCHARFontName[]=_T("script");WNDCLASSEXstdWndClass;W

4、PARAMkeyChar=0x20;//0x20是空格的ascii码,保证没有按键的时候程序正常显示。LRESULTCALLBACKProcWinMain(  HWNDhWnd,                      UINTMsg,                      WPARAMwParam,                      LPARAMlParam){   PAINTSTRUCTstPs;   HDChDC;   HFONThFont,hOldFont;   switch(Msg)   {      caseWM_PAINT:    

5、  {         hDC=BeginPaint(hWnd,&stPs);         hFont=CreateFont(24,16,0,0,400,0,0,0,OEM_CHARSET,OUT_DEFAULT_PRECIS,            CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH

6、FF_SCRIPT,FontName);         hOldFont=(HFONT)SelectObject(hDC,hFont);         SetTextColor(hDC,RGB(200,20

7、0,50));         SetBkColor(hDC,RGB(0,0,255));         TextOut(hDC,0,0,(char*)&keyChar,1);         SelectObject(hDC,hOldFont);         EndPaint(hWnd,&stPs);      }      break;      caseWM_CHAR:         {            keyChar=wParam;            InvalidateRect(hWnd,NULL,TRUE);         } 

8、        break;      caseWM_DESTROY:      {         PostQuitMessage(NULL);      }      break;      default:         returnDefWindowProc(hWnd,Msg,wParam,lParam);   }   return0;}intWINAPIWinMain(    HINSTANCEhInstance,                       HINSTANCEhPrevInstance,                      

9、 LPSTRlpCmdLine,   

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

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

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