layout_object_setvalue 子例程
用途
设置 LayoutObject 结构的布局值。
库
布局库 (libi18n.a)
语法
#include <sys/lc_layout.h> int layout_object_setvalue( layout_object, values, index)
LayoutObject layout_object;
LayoutValues values;
int *index;描述
layout_object_setvalue 子例程更改 LayoutObject 结构的当前布局值。 layout_object 参数指定由 layout_object_create 子例程创建的 LayoutObject 结构。 这些值将写入 LayoutObject 结构中,并可能影响后续布局函数的行为。
注: 某些布局值确实会改变由 LayoutObject 结构维护的内部状态。
LayoutValueRec结构的 name 字段包含要设置的布局值的名称。 值字段包含要设置的实际值。 值字段足够大,可以支持所有类型的布局值。 有关布局值类型的更多信息,请参阅 常规编程概念: 编写和调试程序 中的 布局库的布局值 。
注: 如果要开发可能支持多字节语言环境的国际化应用程序,请参阅 常规编程概念: 编写和调试程序 中的 使用 libcur 包
参数
| 项 | 描述 |
|---|---|
| layout_object | 指定 layout_object_create 子例程返回的 LayoutObject 结构。 |
| 值 | 指定子程序要设置的LayoutValueRec类型布局值数组。 数组的结尾由以下各项指示:name=0. |
| INDEX | 指定要查询的布局值。 如果无法查询该值,那么将返回导致错误的索引参数,并且子例程将返回非零值。 如果生成了错误,那么可能先前已设置了值的子集。 |
返回值
成功完成时, layout_object_setvalue 子例程返回值 0。 已成功设置所有布局值。
错误代码
如果 layout_object_setvalue 子例程失败,它将返回以下值:
| 项 | 描述 |
|---|---|
| LAYOUT_EINVAL | index 参数指定的布局值未知,其值无效,或者 layout_object 参数无效。 |
| LAYOUT_EMFILE | (OPEN_MAX) 文件描述符当前在调用进程中打开。 |
| LAYOUT_ENOMEM | 存储空间不足。 |
示例
以下示例将 TypeofText 值设置为隐式值,将 out 值设置为 Visual。
#include <sys/lc_layout.h>
#include <locale.h>
main()
{
LayoutObject plh;
int RC=0;
LayoutValues layout;
LayoutTextDescriptor Descr;
int index;
RC=layout_object_create(setlocale(LC_CTYPE,""),&plh); /* create object */
if (RC) {printf("Create error !!\n"); exit(0);}
layout=malloc(2*sizeof(LayoutValueRec)); /*allocate layout array*/
Descr=malloc(sizeof(LayoutTextDescriptorRec)); /* allocate text descriptor */
layout[0].name=TypeOfText; /* set name */
layout[0].value=(caddr_t)Descr; /* set value */
layout[1].name=0; /* indicate end of array */
Descr->in=TEXT_IMPLICIT;
Descr->out=TEXT_VISUAL; RC=layout_object_setvalue(plh,layout,&index);
if (RC) printf("SetValue error at %d!!\n",index); /* check return code */
free(layout); /* free allocated memory */
free (Descr);
RC=layout_object_free(plh); /* free layout object */
if (RC) printf("Free error !!\n");
}