社区
Delphi
帖子详情
请问大虾:KEYDOWN消息怎么捕捉不到四个方向按键呢??
newfang
2005-12-01 09:22:33
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
我想拦截按键消息,但按四个方向键时怎么没有反应呢??
...全文
271
10
打赏
收藏
请问大虾:KEYDOWN消息怎么捕捉不到四个方向按键呢??
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN; 我想拦截按键消息,但按四个方向键时怎么没有反应呢??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
newfang
2005-12-03
打赏
举报
回复
回楼上:标记,就是做上标记的意思!
baiduan
2005-12-02
打赏
举报
回复
mark 是什么意思?
newfang
2005-12-01
打赏
举报
回复
看了procedure TWinControl.CNKeyDown(var Message: TWMKeyDown);
的实现,好象明白了一点点……~~~~
晕~~~~希望高手给辟讲辟讲!!
newfang
2005-12-01
打赏
举报
回复
谢谢楼上!我用
procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN; 也可以实现,
但对WM……、CM……和CN……比较模糊,这三种有什么说法吗??
g961681
2005-12-01
打赏
举报
回复
也学习一把~~~~~
beyondtkl
2005-12-01
打赏
举报
回复
向剪刀兄 学习。
jinjazz
2005-12-01
打赏
举报
回复
Max Nilson 的回答:
想要你的构件能够处理方向键,你必须要拦截 CM_WANTSPECIALKEY 构件讯息。 CM_WANTSPECIALKEY
构件讯息提供你比拦截 WM_GETDLGCODE
窗口消息更容易且灵活的判断方法来决定是否需要某些特殊键的讯息。当控制项收到任何一个特殊键时就会送出CM_WANTSPECIALKEY
构件讯息给控制项。
特殊键包括:VK_TAB、VK_LEFT、VK_RIGHT、VK_UP、VK_DOWN、VK_RETURN、VK_EXECUTE
、VK_ESCAPE 及 VK_CANCEL。如果讯息传回值是非零值,这个键就会被送至 KeyPress
方法以供处理,否则这个键的讯息会被送至构件的父控制项,以预设方式来处理。
一个简单的范例:
type
TMyComponent = class (TWinControl)
...
protected
procedure CMWantSpecialKey(var Message: TCMWantSpecialKey); message
CM_WANTSPECIALKEY;
...
end;
procedure TMyComponent.CMWantSpecialKey(var Message: TCMWantSpecialKey);
begin
inherited;
// 我们只想处理向左方向键,其它的特殊键都给 Windows 处理
if Message.CharCode = VK_LEFT then
Message.Result := 1;
end;
CM_WANTSPECIALKEY 构件讯息比 WM_GETDLGCODE
讯息更具有弹性的地方在这儿。我们甚至可以根据是按下的是哪个特殊键才决定是否处理这个键。例如,你的控制项有三张图像,你可以让使用者利用左右方向键来回检视它们,如果翻到最後一张图像再按向右键时,焦点就让它离开构件,剩下的全部都让
Delphi 来处理。
阿三
2005-12-01
打赏
举报
回复
学习
xylegend
2005-12-01
打赏
举报
回复
mark
newfang
2005-12-01
打赏
举报
回复
顶!!
C 语言究竟能干什么
特别是几个好兄弟,有几个想学习编程,但又苦苦找
不到
门路的兄弟,所以想写点东西,希望对大家又点略微的帮助,以尽兄弟我的微薄之力。 很多同学学了C语言之后,可能难免会有所感叹:这就是C语言!总是感觉C语言...
C++学习,总结二(模拟鼠标键盘操作和进程之间的通信)
从一个进程到另外一个进程之间的通信,可以利用模拟键盘
按键
的方式,首先得到需要通信的进程,在此模拟向浏览器发送刷新
按键
(F5)。 获得进程的句柄通过FindWindow m_hWnd = ::FindWindow(NULL,L"进程的标题"); //...
c/c++界面编程
本帖计划从
四个
大的方面来讲 这
四个
方面是 窗口类、文件操作类、网络类、数据库类。都是时下流行的编程必备技术 也是软件开发者 必须掌握的技术。中间以实例讲解 逐步学习 相信大家看完后会有很大的提高的。第...
内容来至(http://blog.csdn.net/dadaadao/rss/list)
TranslateMessage是翻译需要翻译的
消息
DispatchMessage()则会把翻译好的
消息
发送到系统的
消息
处理函数中,而这个函数又会把这个
消息
传 递到注册窗体时用户指定的
消息
处理函数中翻译
消息
不是简单的转换,一个
消息
...
pb6.5技巧
试想若有两个用户都试图访问某个银行用户的记录并同时要求修改该用户的存款余额时,情况将会怎样呢?我们可以对PowerBuilder中的DataWindow进行设置来进行并发控制。所谓并发控制就是指在用户数据修改的过程中保...
Delphi
5,379
社区成员
262,722
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章