lxpbuaa:
你好:
《Delphi精要》一书关于设置挂钩判断按键的一段程序我有点不理解。下面这段程序只为了检测出数字键和字母键而不检测其他键吗?
if (lParam and _KeyPressmask)=0 //delphi帮助好象说应为1表示keydown状态then
begin
ShiftDown:=(GetKeyState($10)and _KeyPressMask)=_keyPressMask;
CapsDown:=(GetKeyState($14) and 1)=1;
if wParam<65 then
begin
if ShiftDown then
C:=Chr(wParam-16)
else
C:=Chr(wParam);//程序到这里只是说明可能是字母0-9吗? end else
begin
if wParam in [96..105] then
C:=Chr(wParam-48)//为什么wParam in [96..105]要减48呢?我对下面的部分不是很理解。希望你能给点说明。
else if ShiftDown XOR CapsDown then
C:=Chr(wParam)
else
C:=Chr(wParam+32);
你好:
《Delphi精要》一书关于设置挂钩判断按键的一段程序我有点不理解。下面这段程序只为了检测出数字键和字母键而不检测其他键吗?
if (lParam and _KeyPressmask)=0 //delphi帮助好象说应为1表示keydown状态then
begin
ShiftDown:=(GetKeyState($10)and _KeyPressMask)=_keyPressMask;
CapsDown:=(GetKeyState($14) and 1)=1;
if wParam<65 then
begin
if ShiftDown then
C:=Chr(wParam-16)
else
C:=Chr(wParam);//程序到这里只是说明可能是字母0-9吗? end else
begin
if wParam in [96..105] then
C:=Chr(wParam-48)//为什么wParam in [96..105]要减48呢?我对下面的部分不是很理解。希望你能给点说明。
else if ShiftDown XOR CapsDown then
C:=Chr(wParam)
else
C:=Chr(wParam+32);
解决方案 »
- 救命,接到一个二维码项目,事关生死存亡,求大家高抬贵手帮帮小弟
- 怎么知道 某个窗口是否是 QQ的窗口?
- 性欲被扣,郁闷散分
- quickreport打印设置,为什么设置好以后,它还是按默认的设置执行?
- 发一片垃圾小说《地产泡泡》,看完了我才觉得程序员的世界才是最清静和最可爱的地方
- 怎么把一篇文章里的单词一个个读出按理(急!!!!)
- 求从数据库读取图片的例子!
- 这是不是D6的一个BUG??
- 我想知道x.25 帧的具体格式,谁知道哪里有?或者是ccitt的网站?
- 哪位大虾能给出Is Express Delphi 4 Beta的详细用法?分数没问题!!!!
- 存放一系列byte数组,除了用TList还有别的好办法吗?
- 怎样用程序修改winXp的外观?
C:=Chr(wParam-48)//为什么wParam in [96..105]要减48呢?
因为按键是在小键盘中[0..9],所以要减去48然后转成ASCII码就是CHR[48..57]
你可以测试一下就明了.if ShiftDown XOR CapsDown then
C:=Chr(wParam)
else
C:=Chr(wParam+32);这条代码是进行异或运算,主要是来判断有没有同时按来SHIFT键和CAPS LOCK 开关键的状态.