硬汉嵌入式论坛

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

[emWin] emWin EDTI控件输入聚焦问题请教

[复制链接]

57

主题

655

回帖

831

积分

金牌会员

积分
831
发表于 2024-10-10 09:44:53 | 显示全部楼层 |阅读模式
emWin EDTI控件输入聚焦问题请教,外部实体按键通过自定义消息WM_SendMessage发送的页面。edit控件设置为十进制模式,通过左右移位进行数字编辑。
现在的问题是,必须通过WM_SetFocus这个函数设置edit控件为聚焦,edit才闪烁。EDIT_SetFocusable(edit, 1)这个函数不行,但是WM_SetFocus聚焦后,又没有让edit控件失去聚焦的API函数,edit没有失去聚焦就一直闪烁。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-10-10 10:15:59 | 显示全部楼层
有个EDIT_EnableBlink() API,可以设置闪烁,你看看用在你这里好使不
回复

使用道具 举报

57

主题

655

回帖

831

积分

金牌会员

积分
831
 楼主| 发表于 2024-10-10 10:42:53 | 显示全部楼层
eric2013 发表于 2024-10-10 10:15
有个EDIT_EnableBlink() API,可以设置闪烁,你看看用在你这里好使不

这个也都是试过,EDIT_EnableBlink是可以停止闪烁,不能开启闪烁。目前调试发现只有WM_SetFocus聚焦才能启动闪烁。其他的操作都是正常的,就是闪烁问题暂时没有解决方案。
但是用EDIT_EnableBlink停止闪烁,闪烁的位置没有被清除,ESC按键按下后,进行如下操作
EDIT_EnableBlink(edit, 200, 0);   
EDIT_SetSel(edit, -1, 0);    //清除所以字符,实际退出并没有清除


退出后就定格这样,(退出时刻如果是正常不反显就是正常的,如果正好是反显就是如图)
111.png

手册描述
2222.png

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-10-11 09:23:07 | 显示全部楼层
ou513 发表于 2024-10-10 10:42
这个也都是试过,EDIT_EnableBlink是可以停止闪烁,不能开启闪烁。目前调试发现只有WM_SetFocus聚焦才能 ...

1、这个闪烁问题,应该和Windows端一样的,一个界面上有个多个支持聚焦的控件,只有点击到这个控件上,也就是SetFocus到这个控件上,光标才会闪烁。
2、如果有反显的话,可以考虑退出这个EDIT编辑时,SetFocus到一个窗口上,看看能恢复正常不。
回复

使用道具 举报

57

主题

655

回帖

831

积分

金牌会员

积分
831
 楼主| 发表于 2024-10-11 13:53:06 | 显示全部楼层
eric2013 发表于 2024-10-11 09:23
1、这个闪烁问题,应该和Windows端一样的,一个界面上有个多个支持聚焦的控件,只有点击到这个控件上,也 ...

只能SetFocus到一个隐藏的button控件上,反显才正常。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-10-11 15:02:58 | 显示全部楼层
ou513 发表于 2024-10-11 13:53
只能SetFocus到一个隐藏的button控件上,反显才正常。

对,这种方式有时候也可以解决问题。
回复

使用道具 举报

4

主题

20

回帖

32

积分

新手上路

积分
32
发表于 2024-10-18 13:38:52 | 显示全部楼层
楼主解决问题了吗,我现在是想让eidt控件在点击控件之外的区域时光标消失,目前没有好的方法
回复

使用道具 举报

57

主题

655

回帖

831

积分

金牌会员

积分
831
 楼主| 发表于 2024-10-18 14:55:09 | 显示全部楼层
bxinxin 发表于 2024-10-18 13:38
楼主解决问题了吗,我现在是想让eidt控件在点击控件之外的区域时光标消失,目前没有好的方法

你是触摸屏啊,触摸屏应该就比较简单了吧,直接让背景获取隐形焦点是否可行。
回复

使用道具 举报

4

主题

20

回帖

32

积分

新手上路

积分
32
发表于 2024-10-22 14:58:21 | 显示全部楼层
ou513 发表于 2024-10-18 14:55
你是触摸屏啊,触摸屏应该就比较简单了吧,直接让背景获取隐形焦点是否可行。

没有背景图片,背景用的Window。我目前方法是做一个很小的edit凡在另一个window里,然后每次按完enter后将焦点设置到这个小edit上,这样光标就没了
回复

使用道具 举报

8

主题

25

回帖

49

积分

初级会员

积分
49
发表于 2024-10-31 08:43:12 | 显示全部楼层
bxinxin 发表于 2024-10-18 13:38
楼主解决问题了吗,我现在是想让eidt控件在点击控件之外的区域时光标消失,目前没有好的方法

MULTIEDIT_ShowCursor(hItem, 0);使用多行文本可以直接隐藏光标,比EDIT方便.
回复

使用道具 举报

57

主题

655

回帖

831

积分

金牌会员

积分
831
 楼主| 发表于 2024-12-23 18:35:08 | 显示全部楼层
dirty_data 发表于 2024-10-31 08:43
MULTIEDIT_ShowCursor(hItem, 0);使用多行文本可以直接隐藏光标,比EDIT方便.

这个还没有看过,研究一下来
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 21:39 , Processed in 0.570358 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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