首页 > 代码库 > KeyDown和KeyPress的区别

KeyDown和KeyPress的区别

    虽然从字面理解, KeyDown是按下一个键的意思, 但实际上二者的根本区别是, 系统由KeyDo
wn返回键盘的代码, 然后由TranslateMessage函数翻译成成字符, 由KeyPress返回字符值.
因此在KeyDown中返回的是键盘的代码, 而KeyPress返回的是ASCII字符. 所以根据你的目的
, 如果只想读取字符, 用KeyPress, 如果想读各键的状态, 用KeyDown.
说KeyDown是按下, KeyPress是按下并松开, 是不对的. 如果你一直按着键呢? 这时不断地产
生KeyDown和KeyPress.


  OnKeyPress   只能在单个键被按下才触发的,而且对于shift,   alt,   ctrl   和   这些
组合件,比如ctrl   +   f1是不会触发这个消息的。     他处理的消息可能是   WM_CHAR
  OnKeyDowm   就可以捕获这些全部的按键。  
  他实际是处理   WM_KEYDOWN消息。  
  可以理解为   OnKeyDown是OnKeyPress的超集。
 
  有一个区别是keypress是对简单字符的反应  
  不会对shift,F1的功能按钮有反应  
  keydown则都可以有反应