OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 83|回复: 2

WM_SetFocus的焦点设置问题

[复制链接]

  离线 

12

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-18
在线时间
22 小时
发表于 2017-11-8 14:11:56 | 显示全部楼层 |阅读模式
5金钱
最近做项目的时候,使用了物理的机械按键来处理界面,每次开一个窗口使用WM_SetFocus来设定焦点,这样之后就可以响应驱动来的按键消息了。但是第一个窗口是可以接受到WM_KEY的消息的。当我进入第二个窗口的时候,我先销毁第一个窗口,再打开第二个窗口,设定焦点。但是按键消息整个GUI都不响应了。于是我查了WM_SetFocus的API。说返回是0的话,是可以设置焦点的。返回是非0的话,就是焦点设置失败。但是问题又来了。就是我调试发现,第一个窗口是可以响应按键消息!但是返回值是1.就是焦点设置失败的。第二个窗口不可以响应消息,但是返回也是1.

//------------------------------第一个窗口是这么设置的
               BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);                           
                m_HListBox.hFrame = GUI_CreateDialogBox(_Measure_DialogCreate, GUI_COUNTOF(_Measure_DialogCreate), _cb_Measure_Dialog,WM_HBKWIN, 0, 0);
                acoff = WM_SetFocus(m_HListBox.hFrame);

//---------------------------第二个窗口是这么设置的
                BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);                           

                 m_HEditIn.hFrame = GUI_CreateDialogBox(_AdsorbedCreate,
                                GUI_COUNTOF(_AdsorbedCreate),
                                _cbAdsorbedDose_Dialog, WM_HBKWIN, 0, 0);
                 acof = WM_SetFocus(m_HEditIn.hFrame);

//基本是一样的。为什么第二个窗口回调无法响应按钮消息啊?

回复

使用道具 举报

  离线 

482

主题

8万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
117144
金钱
117144
注册时间
2010-12-1
在线时间
898 小时
发表于 2017-11-10 01:40:51 | 显示全部楼层
回复

使用道具 举报

  离线 

12

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-9-18
在线时间
22 小时
 楼主| 发表于 2017-11-12 16:52:38 | 显示全部楼层
我又来在每个资源列表框,加了一个button之后,设置焦点就有效了。不知道这是为什么?但是用这种当时的确解决了问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-20 21:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */