硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5386|回复: 16
收起左侧

[emWin] 请问各位大神,emwin怎么用按键上下左右在平面内随意切换聚焦

  [复制链接]

12

主题

33

回帖

69

积分

初级会员

积分
69
发表于 2018-10-9 16:59:17 | 显示全部楼层 |阅读模式
请问各位大神,emwin怎么用按键上下左右在平面内随意切换聚焦,我的项目只有按键,想用上下左右直接切换聚焦,但是emwin只有tab和backtab可以切换聚焦,请问各位大神这个按键怎么映射啊

回复

使用道具 举报

0

主题

138

回帖

138

积分

初级会员

积分
138
QQ
发表于 2018-10-9 17:00:27 | 显示全部楼层
自定义消息 加 setfocus
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
 楼主| 发表于 2018-10-9 17:03:58 | 显示全部楼层
wx_D4tOZzZO 发表于 2018-10-9 17:00
自定义消息 加 setfocus

这位大神,难道切换聚焦的时候每次都要判断现在聚焦的位置吗,我一个页面有十多个控件,这样写是不是代码量太大了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115892
QQ
发表于 2018-10-9 17:15:27 | 显示全部楼层
wx_ZvqJUIdV 发表于 2018-10-9 17:03
这位大神,难道切换聚焦的时候每次都要判断现在聚焦的位置吗,我一个页面有十多个控件,这样写是不是代码 ...

将界面每个支持聚焦的控件,赋值给一个句柄数组,专门记录控件的句柄,然后发自定义消息切换就行,这样比较省事了。
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
 楼主| 发表于 2018-10-9 17:25:11 | 显示全部楼层
eric2013 发表于 2018-10-9 17:15
将界面每个支持聚焦的控件,赋值给一个句柄数组,专门记录控件的句柄,然后发自定义消息切换就行,这样比 ...

这位大神,这样是不是太占内存了,GUI_ALLOC_AssignMemory我已经分配到外置sdram了,请问是不是emwin所有的变量都在sdram啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115892
QQ
发表于 2018-10-9 17:33:23 | 显示全部楼层
wx_ZvqJUIdV 发表于 2018-10-9 17:25
这位大神,这样是不是太占内存了,GUI_ALLOC_AssignMemory我已经分配到外置sdram了,请问是不是emwin所有 ...

没事,搞几个百个控件还是不怎么占用内存的。不想用内部SRAM,就emWin动态内存申请一个大数组即可。
回复

使用道具 举报

354

主题

2168

回帖

3235

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3235
发表于 2018-10-10 09:00:29 | 显示全部楼层
这个要求确实比较费事。 首先,需要把全部控件的名字和位置定义在一个数组,每次上下左右的按键都要重新计算是哪个控件,然后在设定焦点到那个控件上。 某些控件会自己响应上下左右键,还需要做判断,是控件响应,还是焦点切换响应。
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2018-11-13 09:06:09 | 显示全部楼层
我也比较倾向于自己管控。emWin有些隐晦规则玩不溜,完全交给emWin容易出现不明不白的失控。
回复

使用道具 举报

0

主题

138

回帖

138

积分

初级会员

积分
138
QQ
发表于 2018-11-13 17:44:44 | 显示全部楼层
我的方法是用一个变量来标记到底是哪一个控件 或者页面 或者窗口 在回调函数中switch 非常简单
回复

使用道具 举报

12

主题

33

回帖

69

积分

初级会员

积分
69
 楼主| 发表于 2018-11-23 14:25:36 | 显示全部楼层
wx_D4tOZzZO 发表于 2018-11-13 17:44
我的方法是用一个变量来标记到底是哪一个控件 或者页面 或者窗口 在回调函数中switch 非常简单

你说的回调函数是指每个控件的回调函数吗,每个空间都写回调是不是很麻烦,而且上下左右怎么switch啊
回复

使用道具 举报

0

主题

138

回帖

138

积分

初级会员

积分
138
QQ
发表于 2018-11-23 17:54:30 | 显示全部楼层
wx_ZvqJUIdV 发表于 2018-11-23 14:25
你说的回调函数是指每个控件的回调函数吗,每个空间都写回调是不是很麻烦,而且上下左右怎么switch啊

控件不都是在窗口之上吗 给窗口发消息就行了
回复

使用道具 举报

35

主题

116

回帖

221

积分

高级会员

程序小白

积分
221
QQ
发表于 2020-3-23 09:51:03 | 显示全部楼层
eric2013 发表于 2018-10-9 17:15
将界面每个支持聚焦的控件,赋值给一个句柄数组,专门记录控件的句柄,然后发自定义消息切换就行,这样比 ...

请问下,有这样的例子可以参考不?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115892
QQ
发表于 2020-3-23 10:20:52 | 显示全部楼层
清风徐来 发表于 2020-3-23 09:51
请问下,有这样的例子可以参考不?

没有。
回复

使用道具 举报

35

主题

116

回帖

221

积分

高级会员

程序小白

积分
221
QQ
发表于 2020-3-23 16:15:30 | 显示全部楼层

疑问:定义一个数组,数组当中的元素,可以同时有窗口句柄,编辑框句柄等其他控件句柄吗?那么数组的类型是什么 uint_32t?
比如:在一个文件中按以下定义 有问题不?  谢谢
static WM_HWIN hWin1;
static EDIT_Handler hEDIT[12];

staic uint32_t hFocus[] = {hWin1 , hEDIT[0],  hEDIT[1], ..... , hEDIT[11]};
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115892
QQ
发表于 2020-3-23 19:01:35 | 显示全部楼层
清风徐来 发表于 2020-3-23 16:15
疑问:定义一个数组,数组当中的元素,可以同时有窗口句柄,编辑框句柄等其他控件句柄吗?那么数组的类型 ...

控件的本质也是窗口,你同意使用WM_HWIN定义应该就可以,你试试。

具体类型,go to def看下,这个应该是可以看到的。
回复

使用道具 举报

7

主题

38

回帖

59

积分

初级会员

积分
59
发表于 2024-5-29 10:50:30 | 显示全部楼层
eric2013 发表于 2018-10-9 17:15
将界面每个支持聚焦的控件,赋值给一个句柄数组,专门记录控件的句柄,然后发自定义消息切换就行,这样比 ...

硬汉哥,
1.发送自定义消息切换是不使用聚焦的功能吗?那我现在有十几个窗口,几十个按钮,是不是每个按钮都要设置回调函数来接收自定义消息,每个按钮都写一个回调函数,感觉又产生了很多重复代码?
2.看您其他帖子说WIDGET_SetFocusable很好用,没看明白怎么用起来比较省代码?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115892
QQ
发表于 2024-5-30 09:07:40 | 显示全部楼层
putin 发表于 2024-5-29 10:50
硬汉哥,
1.发送自定义消息切换是不使用聚焦的功能吗?那我现在有十几个窗口,几十个按钮,是不是每个按 ...

1、这个可以做个关联,给每个支持按键消息的窗口,配个按键自定义消息映射,切换到对应窗口了,就使用对应的映射关系。
2、使用这个也不怎么省事。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-25 11:47 , Processed in 0.913285 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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