完善资料让更多小伙伴认识你,还能领取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不熟,帮不了你啊,不好意思
|
|
|
|
只有小组成员才能发言,加入小组>>
698 浏览 0 评论
1109 浏览 1 评论
2476 浏览 5 评论
2810 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2653 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
656浏览 9评论
651浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
784浏览 6评论
632浏览 5评论
672浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 00:30 , Processed in 1.327540 second(s), Total 83, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号