如何判断键盘上的键一直出于按着的状态

xianyz2012 2012-08-30 06:01:13
如题,我想当一直按着的时候可以一直做同一件事,而不是得按一次做一次
...全文
520 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
缘中人 2012-08-31
  • 打赏
  • 举报
回复
是不是没有理解对啊
1、下方向键,本来就可以下跳一行记录。不用写任何代码
2、要自己实现,直接写

void __fastcall TForm2::StringGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if( Key == VK_DOWN && StringGrid1->Row<StringGrid1->RowCount-1 )
{

this->StringGrid1->Row++;
Key = 0;//如果没有这句话,就会下跳2条
}
}
xianyz2012 2012-08-31
  • 打赏
  • 举报
回复
解决了 吧while(GetAsyncKeyState(VK_DOWN)&0x8000)
换成if(GetAsyncKeyState(VK_DOWN)&0x8000)
就行了
谢谢妖哥,K老大
xianyz2012 2012-08-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

GetKeyState
[/Quote]
GetKeyboardState,GetKeyState 因为不能实时得到键盘的键按下的状态,所以我用了
GetAsyncKeyState(VK_DOWN)&0x8000来判断VK_DOWN键的实时状态,

我想实现的效果时当向下方向键只按一下就放的时候,每次只向下跳一跳记录,当长按这不放的时候,就会自动的快速往下翻记录

我在StringGrid的Keydown事件里
while(GetAsyncKeyState(VK_DOWN)&0x8000)
{
//code
}
现在问题是:按着不放快速翻是没问题了,可如果只按一下就放的时候,他也会一次跳很多,怎么办才能一次只跳一跳记录呢
缘中人 2012-08-30
  • 打赏
  • 举报
回复
GetKeyState
hong_qi 2012-08-30
  • 打赏
  • 举报
回复
也可以用Timer,OnKeyDown启动定时器,OnKeyUp停止定时器。
ccrun.com 2012-08-30
  • 打赏
  • 举报
回复
Windows API: GetKeyboardState

604

社区成员

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

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