完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我的问题如下:我需要响应对话框中的外部按键消息,但是我发现在回调函数中截获WM_KEY消息,得到的结果各不相同,具体实验如下:
STemwin版本:emWin version 5.32 为了避免外部按键驱动可能引起的疑问,我使用的是PC仿真实现实验。 step1:使用GUI_Builder生成一个对话框; step2:在对话框的回调函数static void _cbDialog(WM_MESSAGE * pMsg) 中增加以下代码: [C] 纯文本查看 复制代码 const WM_KEY_INFO* psKey;...case WM_KEY: psKey = (const WM_KEY_INFO*)(pMsg->Data.p); printf("rn> Key = %d, PressedCnt = %d", psKey->Key, psKey->PressedCnt); break;... step3:运行,在case WM_KEY中打断点,按下键盘上下箭头,查看断点处psKey ->Key和psKey->PressedCnt的值; 第一个实验:对话框中不放置任何子控件 [C] 纯文本查看 复制代码 static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { WINDOW_CreateIndirect, "Test3", ID_WINDOW_0, 0, 0, 480, 272, 0, 0x0, 0 }, // USER START (Optionally insert additional widgets) // USER END}; 结果:无法捕捉到断点,也就是未产生WM_KEY... 第二个实验:对话框中只放置一个BUTTON子控件 [C] 纯文本查看 复制代码 static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { WINDOW_CreateIndirect, "Test2", ID_WINDOW_0, 0, 0, 480, 272, 0, 0x0, 0 }, { BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 31, 37, 80, 20, 0, 0x0, 0 }, // USER START (Optionally insert additional widgets) // USER END}; 结果:可以捕捉到断点,也就是产生了WM_KEY,此时: psKey ->Key = 0x00000013 psKey->PressedCnt = 0x00000001 第三个实验:对话框中只放置一个EDIT子控件 [C] 纯文本查看 复制代码 static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { WINDOW_CreateIndirect, "Test2", ID_WINDOW_0, 0, 0, 480, 272, 0, 0x0, 0 }, { EDIT_CreateIndirect, "Edit", ID_EDIT_0, 73, 55, 80, 20, 0, 0x64, 0 }, // USER START (Optionally insert additional widgets) // USER END}; 结果:可以捕捉到断点,也就是产生了WM_KEY,此时: psKey ->Key = 0x00000013 psKey->PressedCnt = 0x00000000 查阅STemWin的参考手册 Key代表被按下的键值;PressedCnt > 0表示按键被按下,0表示按键被释放 理论上说,无论何种情况,一次按键操作(按下、抬起),我应该先后截获到两次WM_KEY消息才对,为什么会出现以上的结果? 如果我硬件上有一个【返回】键,每一个界面均为一个Dialog,那我如何操作才能在每个Dialog(有可能个别Dialog像第一实验那样,没有子控件,而是在WM_PAINT中自行绘制)中都捕捉并响应到有效的WM_KEY消息(抬起动作) |
|
相关推荐
2个回答
|
|
|
EMWIN不熟,帮不了你啊,不好意思
|
|
|
|
|
|
EMWIN不熟,帮不了你啊,不好意思
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1025浏览 1评论
1852浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1362浏览 1评论
1855浏览 0评论
1180浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:18 , Processed in 0.691693 second(s), Total 76, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1768