14.1.2转换字符串列表

许多文本属性允许多种类型和格式。因为存储在这些属性中的数据不是简单的以null结尾的字符串XText属性结构用于描述文本的编码、类型和长度以及它的价值。这个XText属性结构包含:
typedef结构{无符号字符*值;/*属性数据*/原子编码;/*属性类型*/int格式;/*8、16或32*/无符号长nitems;/*有价值的项目数量*/}XTextProperty;

Xlib提供了将本地化文本转换为编码或从编码转换为本地化文本的函数支持文本的客户端间通信约定。此外,还提供了在指针列表之间进行转换的函数字符串和STRING编码中的文本属性。

本地化文本的函数返回有符号整数错误状态编码成功作为零,特定错误条件作为负数,以及部分转换作为不可转换字符的计数。

#定义XNo内存-1#定义XLocale不受支持-2#定义找不到X转换器-3typedef枚举{XStringStyle,/*字符串*/XCompoundTextStyle,/*COMPUND_TEXT*/XTextStyle,/*所有者编码中的文本(当前区域设置)*/XStdICCTextStyle/*字符串,否则为COMPUND_TEXT*/}XICC编码样式;

将文本字符串列表转换为XText属性结构,使用XmbTextListToTextProperty()XwcTextListToTextProperty().

要从XText属性结构,使用XmbTextPropertyToTextList()XwcTextPropertyToTextList().

释放与指定宽字符串列表,使用XwcFreeStringList().

要获取当前区域设置中用于文本转换的默认字符串,使用XDefaultString().

要将STRING编码中指定的字符串列表设置为XText属性结构,使用XStringListToTextProperty().

从指定的XText属性结构,使用XTextPropertyToStringList().

要释放与指定字符串列表关联的内存中数据,请使用XFreeStringList().

下一步:设置和读取文本属性

克里斯托夫·特朗奇,ch@tronche.com(中文)