C++程序中如何使用DT_WORDBREAK、DT_WORDBREAK、DT_PATH_ELLIPSIS和DT_WORD_ELLIPSIS

本文介绍了DT_END_ELLIPSIS、DT_WORDBREAK、DT_WORD_ELLIPSIS和DT_PATH_ELLIPSIS在文本显示时如何处理过长字符串。DT_WORDBREAK自动换行避免字符超出矩形边界,DT_WORD_ELLIPSIS截断并添加省略号,DT_PATH_ELLIPSIS则用于路径字符串,保留最后一个反斜杠后的部分。通过示例展示了这两种效果的实现,包括路径省略和单行信息截断。

        先看一下相关标识符的相关说明:

        DT_END_ELLIPSIS:对于显示的字符串,如果结束的字符串的范围不在矩形内,它会被截断并以省略号标识。

        DT_WORDBREAK:当一行中的字符将会延伸到由lpRect指定的矩形的边框时,此行自动地在字之间换行。

        DT_WORD_ELLIPSIS:截短不符合矩形的正文,并增加省略号。

        DT_PATH_ELLIPSIS:对于显示的字符串,会用省略号替换字符串中间的字符,以确保结果能在矩形范围内。 如果该字符串包含反斜杠(\)字符,它会尽可能的保留最后一个反斜杠之后的正文。

        下面就来说说下面的两种效果是如何实现的。

1、当提示的字符串中包含的路径过长时,路径中部分文字会以省略号代替

         参考QQ的效果,如下所示:

     

这是一个“普通文本型”问题”。 --- ### 代码解释: ```cpp messageName.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); ``` 这行代码用于设置一个文本控件(如 `UILabel`)的**换行模式**,具体表示当文本内容超出控件宽度时,将以“**省略号(...)**”的方式显示。 --- ### 🔍 逐部分解释: - `messageName`:通常是一个 UI 控件对象,类型为 `UILabel` 或其子类,用于显示文本内容。 - `SetLineBreakMode(...)`:设置文本的换行模式。 - `UILabel::LINE_BREAK_ELLIPSIS`:换行模式的一种,表示如果文本过长,则在末尾显示省略号(`...`)而不是换行或裁剪。 --- ### 📌 常见换行模式(枚举值): | 模式 | 含义 | |------|------| | `LINE_BREAK_NONE` | 不换行,内容超出控件范围时被裁剪 | | `LINE_BREAK_WORD_WRAP` | 按单词换行(适用于英文) | | `LINE_BREAK_CHAR_WRAP` | 按字符换行(适用于中文等无空格语言) | | `LINE_BREAK_ELLIPSIS` | 超出部分显示省略号(`...`) | | `LINE_BREAK_MARQUEE` | 跑马灯效果(内容滚动显示) | --- ### ✅ 示例效果: 假设 `messageName` 显示的文本是: ``` "这是一条非常非常长的消息标题" ``` 如果控件宽度不足以显示全部内容,启用 `LINE_BREAK_ELLIPSIS` 后会显示为: ``` "这是一条非常非常长的..." ``` --- ### ⚙️ 适用场景: - 消息列表中的标题显示 - 设置项中的说明文字 - 所有需要**节省空间并提示内容被截断**的文本显示场景 --- ### 💡 小提示: - 该设置只在控件宽度受限时才生效。 - 有些 UI 框架还需要配合 `SetLines(1)` 或类似函数限制显示行数。 --- 如果你能提供所使用的 UI 框架名称(如 HarmonyOS、AWTK、LiteGUI 等),我可以给出更具体的配置说明。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值