通用控件

控件操作接口

控件系统初始化

TWidget *TwAppInit (void);

功能:应用程序所创建的控件关系可以看做是一个树型结构,所有的控件都会有父控件,此函数返回程序所有控件的祖控件。

参数:无

返回值:root窗口

注解:根窗口的子控件必须是窗口控件

控件系统的事件循环

void TTaskLoopOnce(void);

功能:在应用程序创建任务和做好其他初始化工作之后,必须进入一个循环处理过程。在这个过程中,应用程序等待各种事件来触发预先设定好的任务运行,在没有事件发生时,用户进程是休眠的,不占用 CPU。任务被触发后,也是在事件循环过程中执行的。

参数:

返回值:

示例:

while(1)TTaskLoopOnce(0);

刷新界面显示

void TwUpdateShow(void);

功能:当调用某些函数导致控件外观发生变化时,界面并不会立即更新,而是等到一轮事件都处理完毕后才一起自动刷新,这样可以提高系统的性能。

用户如果想要主动刷新界面则可以调用 TwUpdateShow() 来立即更新界面显示。

参数:

返回值:

创建控件

TWidget *TwCreate(T_ID type, TWidget *parent, int x, int y, int w, int h, char *style, int flags);

功能:用 TWidget 来表示控件的结构,函数内部是调用 TObjectCreate()函数来创建控件对象。

参数:

参数 说明
type 控件类型,如创建窗口控件用 TW_WINDOW
parent 父控件
x、y 控件相对于父控件的坐标
w、h 控件的大小
style 控件的风格名
flags 控件的标记

返回值:控件对象指针

示例:

TWidget *mainWin = TObjectGetFromName("mainWin");
TWidget *button = TwCreate(TW_BUTTON, mainWin, 100, 100, 113, 53, NULL, 0);

销毁控件

void TwDestroy(TWidget *widget);

功能:将控件销毁

参数

参数 说明
widget 被销毁控件

返回值:

设置控件得到焦点

void TwSetFocus(TWidget *widget);

功能:在系统中同一时间只能有一个控件获得焦点,好的焦点的控件才可以俘获非主动出发的系统事件,比如:键盘事件

参数:

参数 说明
widget 控件

返回值:

示例:

TWidget *button = TwCreate(TW_BUTTON, mainWin, 100, 100, 113, 53, NULL, 0);
TwSetFocus(button);

设置控件不可获得焦点

void TwSetFocusFlags(TWidget *widget, Tuint32 flags);

功能:设置控件不可获得焦点

参数:

参数 说明
widget 控件
flags 标记,取值:TW_CHILD_NO_FOCUS 和 TW_NO_FOCUS

返回值:

获取当前得到焦点的控件

TWidget *TwGetFocus(void);

功能:获取当前得到焦点的控件

参数:

返回值:当前得到焦点的控件

通知系统显示控件

void TwShow(TWidget *widget);

功能:通知系统显示控件

参数:

参数 说明
widget 控件

返回值:

通知系统显示控件并等待返回

void TwWaitShow(TWidget *widget);

功能:通知系统显示控件,并等待返回。

参数:

参数 说明
widget 控件

返回值:

注解:与 TwShow 的区别为:TwShow 为异步处理,TwWaitShow为同步处理。

隐藏控件

void TwHide(TWidget *widget);

功能:隐藏控件

参数:

参数 说明
widget 控件

返回值:

修改控件的宽度和高度

void TwResize(TWidget *widget, Tint32 w, Tint32 h);

功能:修改控件的宽高

参数:

参数 说明
widget 控件
w、h 控件修改后的宽度和高度

返回值:

示例:

TWidget *mainWin = TObjectGetFromName("mainWin");
TwResize(mainWin, 1024, 600);

设置控件的位置坐标

void TwMove(TWidget *widget, Tint32 x, Tint32 y);

功能:设置控件的坐标

参数:

参数 说明
widget 控件
x、y 控件相对于父控件的坐标

返回值:

示例:

TWidget *mainWin = TObjectGetFromName("mainWin");
TwMove(mainWin, 100, 50);

设置控件的位置坐标偏移量

void TwMoveOffset(TWidget *widget, Tint32 offx, Tint32 offy);

功能:新坐标以当前坐标偏移得到。

参数:

参数 说明
widget 控件
offx、offy 新坐标相对于当前坐标的偏移量

返回值:

示例:

TWidget *mainWin = TObjectGetFromName("mainWin");
TwMoveOffset(mainWin, 100, 50);

获取控件的宽度和高度

void TwGetSize(TWidget *widget, Tint *w, Tint *h);

功能:获取控件的宽和高

参数:

参数 说明
widget 控件
w、h 保存控件的宽度和高度

返回值:

示例:

TWidget *mainWin = TObjectGetFromName("mainWin");
int w,h;
TwGetSize(mainWin, &w, &h);

获取控件相对父控件的坐标

void TwGetPos(TWidget *widget, Tint *x, Tint *y);

功能:获取控件相对于父控件的坐标

参数:

参数 说明
widget 控件
x、y 保存控件相对父控件的坐标

返回值:

示例:

TWidget *button_1 = TObjectGetFromName("button_1");
int x,y;
TwGetPos(button_1, &x, &y);

获取控件相对坐标原点的绝对坐标

void TwGetAbsolutePos(TWidget *widget, int *px, int *py);

功能:获取控件相对坐标原点的绝对坐标

参数:

参数 说明
widget 控件
px、py 保存控件相对坐标原点的绝对坐标

返回值:

示例:

TWidget *button_1 = TObjectGetFromName("button_1");
int x,y;
TwGetAbsolutePos(button_1, &x, &y);

设置控件上附加的用户数据

void *TwAttachData(TWidget * widget, void *data);

功能:设置控件上附加的用户数据

参数:

参数 说明
widget 控件
data 用户数据

返回值:

示例:

TWidget *button_1 = TObjectGetFromName("button_1");
TTable *t = TTableCreate();
TTableAddInt(t, TStringID("val"), 1);
TwAttachData(button_1, t);

获取控件上附加的用户数据

void *TwGetAttachedData(TWidget *widget);

功能:获取控件上附加的用户数据

参数:

参数 说明
widget 控件

返回值:控件上附加的数据,可以是任意类型

示例:

TTable *t = TwGetAttachedData(button_1);
TTableDump(t);

设置控件状态为有效

void TwEnable(TWidget *widget);

功能:设置控件状态为有效

参数:

参数 说明
widget 控件

返回值:

示例:

TWidget *button_1 = TObjectGetFromName("button_1");
TwEnable(button_1);

设置控件状态为无效

void TwDisable(TWidget *widget);

功能:设置控件状态为无效

参数:

参数 说明
widget 控件

返回值:

示例:

TWidget *button_1 = TObjectGetFromName("button_1");
TwDisable(button);

注解:控件无效则不会响应任何事件消息

检测控件是否处于显示状态

Tbool TwCheckShow(TWidget *widget);

功能:检测控件是否处于显示状态

参数

参数 说明
widget 控件

返回值:TRUE 控件处于显示状态

​ FALSE 控件处于隐藏状态

示例:

if(TwCheckShow(button_1) == TRUE)
{
    TWHide(button_1);
}

检测控件是否获得焦点

Tbool TwCheckFocus(TWidget *widget);

功能:检测控件是否获得焦点

参数:

参数 说明
widget 控件

返回值:TRUE 控件获得焦点

​ FALSE 控件失去焦点

示例:

if(TwCheckFocus(button_1) == FALSE)
{
    TwSetFocus(button_1);
}

检测控件状态是否为有效

Tbool TwCheckEnable(TWidget *widget);

功能:检测控件状态是否为有效

参数:

参数 说明
widget 控件

返回值:TRUE 控件状态有效

​ FALSE 控件状态无效

示例:

if(TwCheckEnable(button_1) == FALSE)
{
    TwDisable(button_1);
}

设置控件的value值

Tbool TwSetValue(TWidget *widget, Tintp value);

功能:设置控件的value值

参数:

参数 说明
widget 控件
value 整数值

返回值:TRUE 设置成功

​ FALSE 设置失败

示例:

TwSetValue(boolbutton_1, 1);

注解:

对于某些控件来说value值具有特殊意义。 如:布尔按钮的value值表示是否选中;进度条的value值表示当前进度;列表控件的value值为节点指针,表示当前节点获得焦点。

设置控件的标题

void TwSetCaption(TWidget *widget, const char *string);

功能:设置控件的标题

参数:

参数 说明
widget 控件
string 标题内容

返回值:

示例:

TwSetCaption(button_1, "hello");

获取控件的value值

Tintp TwGetValue(TWidget *widget);

功能:获取控件的value值

参数:

参数 说明
widget 控件

返回值:控件的value值

示例:

int val = TwGetValue(button_1);

获取控件的标题

const char *TwGetCaption(TWidget *widget, Tint *rlen);

功能:获取控件的标题

参数:

参数 说明
widget 控件
rlen 保存标题内容长度

返回值:标题内容

示例:

TwGetCaption(button_1, 0);

设置控件背景图片

void TwSetBackgroundPixmap(TWidget *widget, Tuint  pixmap);

功能:设置控件背景图片

参数:

参数 说明
widget 控件
pixmap 背景图片

返回值:

示例:

Pixmap map = TwLoadImage(TGetExecutePath("../style/img.png"));
TwSetBackgroundPixmap(button_1, map);

设置控件的背景颜色

void TwSetBackgroundColor(TWidget *widget, TColor color);

功能:设置控件的背景颜色

参数:

参数 说明
widget 控件
color RGB值

返回值:

注解:

RGB值需要用函数 T_BGR 来转换

示例:

TwSetBackgroundColor(myBtn, T_BGR(255,255,255)); //设置按钮myBtn的背景颜色为白色

改变控件风格

void TwChangeStyle(TWidget *widget, const char * style);

功能:改变控件风格

参数:

参数 说明
widget 控件
style 风格名

返回值:

示例:

TwChangeStyle(widget, "style");

判断 Ancestor 是否为 child 的祖控件

Tbool TwIsAncestor(TWidget * Ancestor, TWidget * child);

功能:判断 Ancestor 是否为 child 的祖控件

参数:

参数 说明
Ancestor 祖控件
child 子控件

返回值:TRUE Ancestor 是 child 的祖控件

​ FALSE Ancestor 不是 child 的祖控件

示例:

if(TwIsAncestor(main_win, button_1))
{
    printf("yes");
}

获取控件的父控件

TWidget *TwGetParent(TWidget *widget);

功能:获取控件的父控件

参数:

参数 说明
widget 控件

返回值:widget的父控件

TWidget *parent = TwGetParent(button_1);

获取控件的子控件

TWidget *TwGetChild(TWidget *widget, Tbool if_first);

功能:获取控件的子控件

参数:

参数 说明
widget 控件
if_first 为 TRUE 返回第一个子控件,为 FALSE 返回最后一个子控件

返回值:子控件

示例:

TWidget *first_son = TwGetChild(mainWin, TRUE);

注解:子控件顺序默认为创建顺序

获取控件的兄弟控件

TWidget *TwGetSibling(TWidget *widget, Tbool if_next);

功能:获取控件的兄弟控件

参数:

参数 说明
widget 控件
if_next 为 TRUE 返回后一个兄弟控件,为 FALSE 返回前一个兄弟控件

返回值:返回兄弟控件,没有兄弟控件返回 NULL

示例:

TWidget *sibling_widget = TwGetSibling(button_1, TRUE);

注解:兄弟控件顺序为创建的顺序。

通过窗口 ID 找到对应窗口控件

TWidget *TwFindFromXWindow(Window wid);

功能:通过窗口 ID 找到对应窗口控件

参数:

参数 说明
wid 窗口 ID

返回值:窗口控件

示例:

// in窗口事件回调函数中传入的表
TWidget *w=TwFindFromXWindow(TTableGetInt(in, TW_STRING(subwid)));

获取窗口控件的 ID

Window TwGetXWindow(TWidget *widget);

功能:获取窗口控件的 ID

参数:

参数 说明
widget 控件

返回值:窗口 ID

示例:

subwid=TwGetXWindow(TObjectGetFromName("info_style"));

创建光标样式

Cursor TwCreateCursor(const char *file, int hotx, int hoty);

功能:创建光标样式

参数

参数 说明
file 光标图片路径
hotx、hoty 光标热点坐标

返回值:光标样式对象

示例:

cursor = TwCreateCursor(TGetExecutePath("./cursor.png"), 7, 8);

注解:

光标热点就是光标引起动作的点

获取最后一次 CLICKED 事件的类型

TwClickTypeEnum TwGetLastClickType(void);

功能:获取最后一次 CLICKED 事件的类型

参数:

返回值:事件类型

示例:

TwClickTypeEnum click_type = TwGetLastClickType();

切换当前的主题

void TwStyleSwitchTheme(const char * theme);

功能:切换当前的主题

参数:

参数 说明
theme 主题名

返回值:

示例:

// config.ini中[style]下存在hello={"../style/xx.rc"}
TwStyleSwitchTheme("hello");

获取程序当前使用的主题名

T_ID TwStyleGetTheme(void);

功能:获取程序当前使用的主题名

参数:

返回值:主题名

示例:

if(TwStyleGetTheme() == TStringID("hello"))
{

}

切换系统语言环境

void TwTransSwitchLanguage(const char *language);

功能:切换系统语言环境

参数:

参数 说明
language 语言名称

返回值:

示例:

// config.ini的[translate]下配置了zh_CN="../translate/tran.zh_CN"
TwTransSwitchLanguage("zh_CN");

加载风格文件

void TwStyleParseFile(const char *file);

功能:加载风格文件

参数:

参数 说明
file 风格文件路径

返回值:

示例:

TwStyleParseFile(TGetExecutePath("../style/style.rc"));

加载翻译文件

void TwTransParseFile(const char * file);

功能:加载翻译文件

参数:

参数 说明
file 翻译文件路径

返回值:

示例:

TwTransParseFile(TGetExecutePath("../translate/trans.zh_CN"));

加载控件布局文件

void TwLayoutParseFile(TWidget * parent, const char * file);

功能:加载控件布局文件

参数:

参数 说明
parent 父控件
file 布局文件路径

返回值:

示例:

TwLayoutParseFile(root, TGetExecutePath("../etc/layout.ini"));

加载配置文件

void TwConfigParseFile(const char *file);

功能:默认配置文件中所有控件的祖控件为根窗口,配置文件加完完毕后即可调用相关函数获取配置文件中的各类数据。

参数:

参数 说明
file 配置文件路径

返回值:

示例:

#config.ini内容:
[global]
max = 255
name = "china"
value = {
    123
    "abc"
}
// c 文件代码:
TwConfigParseFile(TGetExecutePath("../etc/config.ini"));
int iMax = TwConfigGetInt("global","max");
char *strName = TwConfigGetString("global","name");
TTable *tbArg = TwConfigGetTable("global","value");

printf("%d,%s\n",iMax,strName);
TTableDump(tbArg);

加载配置文件并指定配置文件中所有控件的祖控件

void TwConfigParseFile2(TWidget *parent, const char *file);

功能:加载配置文件并指定配置文件中所有控件的祖控件

参数:

参数 说明
parent 祖控件
file 配置文件路径

返回值:

示例:

TwConfigParseFile2(root, TGetExecutePath("../etc/layout.ini"));

获取配置文件中的整型数据

int TwConfigGetInt(char *section, char *name);

功能:获取配置文件中的整型数据

参数:

参数 说明
section 节点名
name 标识名称

返回值:

当指定的节点存在时返回一个整型值,否则返回 0

示例:

// config.ini的[global]下必须有name = n;
int val = TwConfigGetInt("global", "name");

获取配置文件中的字符串数据

char *TwConfigGetString(char *section, char *name);

功能:获取配置文件中的字符串数据

参数:

参数 说明
section 节点名
name 标识名称

返回值:当指定的节点存在时返回一个字符串,否则返回 NULL

示例:

// config.ini中[global]下存在str="xxx"
char *str = TwConfigGetString("global", "str");

获取配置文件中的 TTable 数据

TTable *TwConfigGetTable(char *section, char *name);

功能:获取配置文件中的 TTable 数据

参数:

参数 说明
section 节点名
name 标识名称

返回值:当指定的节点存在时返回一个 Table 结构指针,否则返回NULL。

示例:

// config.ini下[global]下存在tab
TTable *t = TwConfigGetTable("global", "tab");
TTableDump(t);

翻译字符串

const char *TwTrans(const char *string);

功能:翻译字符串

参数:

参数 说明
string 需翻译的字符串标识

返回值:翻译后的字符串

示例:

printf("%s\n",TwTrans("hello"));

注解:

该函数需要配合翻译文件使用,如果需要翻译的字符串标识在翻译文件中不存在则返回这个字符串标识。

将当前列表视图控件关联一个数据模型

void TwSetDataModel(TWidget *widget, TwDataNode *show_root, T_ID show_root_type);

功能:将当前列表视图控件关联一个数据模型

参数:

参数 说明
widget 列表视图控件
show_root 数据模型的根节点
show_root_type 数据模型根节点类型,和排版的配置相关

返回值:

示例:

TWidget *listview;
TwDataModel *dm;
dm = TwDMCreate(TStringID("test_root")); //创建一个根节点名为"test_root"的数据模型
TwSetDataModel(listview, TwDMGetRootNode(dm), None); //将列表视图控件 listview 与数据模型dm关联起来

results matching ""

    No results matching ""