虽然从字面理解, 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则都可以有反应
KeyDown和KeyPress的区别,布布扣,bubuko.com
原文:http://www.cnblogs.com/spiritofcloud/p/3898379.html