为什么加入一个button控件后,消息截获没反应!!!

wangming24 2009-03-12 11:41:11
void _fastcall Dispatch(&Message);
void _fastcall MyKeyDown(TMessage &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_KEYDOWN,TMessage,MyKeyDown);
END_MESSAGE_MAP(TForm);



void _fastcall TForm1::MyKeyDown(TMessage &Message){
if (Message.WParam =='A')
Label1->Caption ='6';

TForm::Dispatch(&Message);
}

往Form1加入Button1后,截获消息出问题,是不是跟焦点有关系,怎么解决问题???
...全文
91 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmf41013 2009-03-19
  • 打赏
  • 举报
回复
很显然你截获的是Form1的keydown,如果你加入一个Button1后,运行起来Button1就会获得焦点,所以运行不了MyKeyDown。
办法一。撤销Button1焦点,使form1接受按键消息。好像设置tabstop为false可以实现。
办法二,设置form的keypreview=true

你要了解消息,还是系统的看下windows程序设计。
wangming24 2009-03-13
  • 打赏
  • 举报
回复
自己顶下
wesleyluo 2009-03-12
  • 打赏
  • 举报
回复
要设置form的keypreview==true
vkjsimde 2009-03-12
  • 打赏
  • 举报
回复
帮顶。。。
fairchild811 2009-03-12
  • 打赏
  • 举报
回复
帮顶,和keypreview没什么关系吧
wangming24 2009-03-12
  • 打赏
  • 举报
回复
我编写俄罗斯方块,想截获键盘光标键,ONKEYDOWN ,ONKEYUP我知道可以,只是想乘这个机会对Message了解一番,因为终究

程序都是消息传来传去,所以想下点工夫好好学学.借编写一个程序漫漫扩展自己的知识.

xjq2003 2009-03-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangming24 的帖子:]
void _fastcall Dispatch(&Message);
void _fastcall MyKeyDown(TMessage &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_KEYDOWN,TMessage,MyKeyDown);
END_MESSAGE_MAP(TForm);


void _fastcall TForm1::MyKeyDown(TMessage &Message){
if (Message.WParam =='A')
Label1->Caption ='6';

TForm::Dispatch(&Message);
}

往F…
[/Quote]
你截获键盘消息要实现什么功能?
不一定非得消息才能实现你的功能吧?
ONKEYDOWN
ONKEYUP
这些事件中也都可以实现的
wangming24 2009-03-12
  • 打赏
  • 举报
回复
什么意思,不太明白
wesleyluo 2009-03-12
  • 打赏
  • 举报
回复
那你把上面的代码写到button的keydown事件里面试下
wangming24 2009-03-12
  • 打赏
  • 举报
回复
不是form keypreview原因

13,824

社区成员

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

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