硬汉嵌入式论坛

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

[emWin] 根据文本长度动态创建text控件并显示+换行

[复制链接]

26

主题

71

回帖

149

积分

初级会员

积分
149
发表于 7 天前 | 显示全部楼层 |阅读模式

现在放了一个text控件获取到对话内容设置并显示,这样就只是一条显示
请问如何用text控件做出像AI对话框那样一问一答,显示在屏幕上?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 7 天前 | 显示全部楼层
这种的推荐用multiedti控件。
回复

使用道具 举报

26

主题

71

回帖

149

积分

初级会员

积分
149
 楼主| 发表于 7 天前 | 显示全部楼层
eric2013 发表于 2025-5-7 15:50
这种的推荐用multiedti控件。

用multiedti控件应该怎么做啊,有没有实现这种对话的例子看看
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 7 天前 | 显示全部楼层
ZYG_GYZ 发表于 2025-5-7 16:35
用multiedti控件应该怎么做啊,有没有实现这种对话的例子看看


有个mutiedit的文本阅读功能,可以参考

https://www.armbbs.cn/forum.php? ... &extra=page%3D1


回复

使用道具 举报

26

主题

71

回帖

149

积分

初级会员

积分
149
 楼主| 发表于 6 天前 | 显示全部楼层
eric2013 发表于 2025-5-7 18:06
有个mutiedit的文本阅读功能,可以参考

https://www.armbbs.cn/forum.php?mod=viewthread&tid=17330 ...


text_count=MULTIEDIT_GetTextSize(hItem);
if (text_count >= 1024)
{
    MULTIEDIT_SetText(hItem, " ");
}
MULTIEDIT_AddText(hItem,(const char *)rx_buff+3 );

在定时器消息里每次判断当前文本大小和 MULTIEDIT_SetMaxNumChars(hItem,1024)设置的最大字符数1024比较,超过就用 MULTIEDIT_SetText(hItem, " ");清空旧文本,然后继续添加新文本。
这样重复多次后就会进入硬件异常是为什么啊?

还有MULTIEDIT控件API:
MULTIEDIT_ShowCursor(hItem,1);MULTIEDIT_EnableBlink(hItem,300,1);显示光标不起作用是吧
MULTIEDIT_SetCursorOffset();MULTIEDIT_SetCursorCharPos();MULTIEDIT_SetCursorPixelPos();好像也没作用

MULTIEDIT_SetWrapWord(hItem);是设置一行写满自动换行,上面几个API不起作用那怎么才能做到人为换行,有时候一行没写满但是想控制换行
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 5 天前 | 显示全部楼层
ZYG_GYZ 发表于 2025-5-8 16:26
text_count=MULTIEDIT_GetTextSize(hItem);
if (text_count >= 1024)
{

1、看下emWin的动态内存剩余是不是一直在减小。
2、光标闪烁是起作用了,估计是操作姿势不对。
3、自动换行也是起作用的,看看是不是你的字体问题。
回复

使用道具 举报

26

主题

71

回帖

149

积分

初级会员

积分
149
 楼主| 发表于 5 天前 | 显示全部楼层
eric2013 发表于 2025-5-9 01:49
1、看下emWin的动态内存剩余是不是一直在减小。
2、光标闪烁是起作用了,估计是操作姿势不对。
3、自动 ...

你好:
1.GUI_ALLOC_GetNumFreeBytes()的值开始不变随着文本添加的增多内存是会减少一点,上下变化二十左右,超过显示范围自动加垂直滚动条后再添加几句文本值减少了快100,这算正常吗
2.看不到光标在哪,不知道闪烁与否
3.MULTIEDIT_SetWrapWord(hItem)会设置一行写满自动换行,确实有作用会换行
MULTIEDIT_SetCursorOffset();MULTIEDIT_SetCursorCharPos();MULTIEDIT_SetCursorPixelPos();这几个好像设置不了光标位置
想用这三个API自定义设置光标位置后再从设置好的光标位置处添加文本,有时候一行没写满但是想要控制换行。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115723
QQ
发表于 4 天前 | 显示全部楼层
ZYG_GYZ 发表于 2025-5-9 10:00
你好:
1.GUI_ALLOC_GetNumFreeBytes()的值开始不变随着文本添加的增多内存是会减少一点,上下变化二十 ...

考虑跑下官方模拟器里面的这个multiedit例子,这个例子几乎是大部分API的完整展示。

在这个例子里面看下这些API的测试变化

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-14 12:28 , Processed in 0.234434 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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