首页 > 解决方案 > 如何通过自动换行和使用 ncurses 推进光标在屏幕上放置带有属性的字符串?

问题描述

如此处所述,add_wchstr 函数不会推进当前光标位置或进行自动换行。

但是,如果我想像addwstr那样输出文本,但带有格式属性,我应该怎么称呼?

如果 ncurses 愚蠢地缺少这样的功能,我考虑手动实现它(只需为每个字符调用 add_wch 并推进光标位置)。但关键问题是:

如何指示是否需要自动换行?

如何指示字符是否显示在 2 个单元格(全角字符)上,以便我应该正确调用 add_wch 两次(或任何其他正确显示全角字符的替代解决方案)?

如何指示当前光标位置应该前进到哪里?

标签: ncurses

解决方案


你可以设置

  • 具有wattrset/wattr_set的窗口属性,

    这些例程操纵命名窗口的当前属性,然后将其应用于使用 waddch、waddstr 和 wprintw 写入窗口的所有字符。属性是字符的属性,通过任何滚动和插入/删除行/字符操作随字符移动。在可能的范围内,它们被显示为对屏幕上字符图形再现的适当修改。

或者

  • 带有wkbgdset / wbkgdset的背景字符。
      The bkgdset and wbkgdset routines  manipulate  the  background  of  the
    

    命名窗口。窗口背景是一个 chtype,由属性(即再现)和字符的任意组合组成。背景的属性部分与使用 waddch 写入窗口的所有非空白字符组合(或)。背景的字符和属性部分都与空白字符组合在一起。背景成为角色的属性,并通过任何滚动和插入/删除行/字符操作随角色移动。


推荐阅读