TEdit的KeyDown不能捕获到printscreen键

Z27149 2010-12-15 09:27:25
Alt和Ctrl都能显示,就是printscreen键显示不了

void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
ShowMessage(Key);
}
...全文
157 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Z27149 2010-12-16
  • 打赏
  • 举报
回复
怎样让EditKeyDown也能接受printscreen键啊?
ccrun.com 2010-12-16
  • 打赏
  • 举报
回复
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
Caption = Key;

if (Key == VK_SNAPSHOT)
ShowMessage("按了屏幕打印键");
}
ccrun.com 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 z27149 的回复:]
还是一样啊,估计第一下被windows的剪贴板给拦截了。
[/Quote]

我已经说过了,屏幕打印键不响应WM_KEYDOWN消息。

推荐你用THotKey只是因为可以代替TEdit来解决你的需求。至于这个特殊的键,用键盘钩子吧。
luo_riser 2010-12-16
  • 打赏
  • 举报
回复
keyUp的时候能够获取到printscreen键值,
void __fastcall TForm1::edt1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
ShowMessage(IntToStr(Key));
}
Z27149 2010-12-16
  • 打赏
  • 举报
回复
还是一样啊,估计第一下被windows的剪贴板给拦截了。
算了,单独做个钩子吧。。。
gucunlin 2010-12-16
  • 打赏
  • 举报
回复
不是还有一个KeyPress事件吗
tigerlhp 2010-12-16
  • 打赏
  • 举报
回复
THotKey, 又发现一个好控件
ccrun.com 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 z27149 的回复:]
让用户自定义快捷键。
[/Quote]

那就不用那么麻烦了,直接用THotKey控件就行了,在Win32选项卡下。

不过需要提醒一下的就是:屏幕打印键是一个特殊的键,由于不响应WM_KEYDOWN,对THotKey也是没有作用的。
Z27149 2010-12-16
  • 打赏
  • 举报
回复
让用户自定义快捷键。
我已经写好了,按下ctrl/alt等,在Edit->Text时实显示"ctrl+xxx"
换成keyup的话,就不能实时显示了。
ccrun.com 2010-12-16
  • 打赏
  • 举报
回复
我刚才测试了一下,屏幕打印键不响应WM_KEYDOWN消息。

你想实现什么呢?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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