lxpbuaa,这段代码的意思不是很明白

waiwailao 2004-07-20 07:08:04
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);
...全文
49 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
benjiamen 2004-07-20
  • 打赏
  • 举报
回复
if wParam in [96..105] then
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 开关键的状态.





5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧