# window_base_t

# 概述

image
image

窗口。

本类把窗口相关的公共行为进行抽象,放到一起方便重用。目前已知的具体实现如下图:

image
image

本类是一个抽象类,不能进行实例化。请在应用程序中使用具体的类,如window_t。

# 函数

函数名称 说明
window_base_auto_scale_children 根据参数自动缩放子控件。
window_base_cast 转换为window_base对象(供脚本语言使用)。
window_base_create 创建window base对象。
window_base_get_prop 窗口get_prop函数的缺省实现。
window_base_get_widget_vtable 获取 window_base 虚表。
window_base_invalidate 窗口on_invalidate函数的缺省实现。
window_base_on_copy 默认拷贝函数。
window_base_on_destroy 窗口on_destroy函数的缺省实现。
window_base_on_event 窗口on_event函数的缺省实现。
window_base_on_paint_begin 窗口on_paint_begin函数的缺省实现。
window_base_on_paint_end 窗口on_paint_end函数的缺省实现。
window_base_on_paint_self 窗口on_paint_self函数的缺省实现。
window_base_set_need_relayout 设置是否需要relayout
window_base_set_prop 窗口set_prop函数的缺省实现。

# 属性

属性名称 类型 说明
applet_name char* 小应用程序(applet)的名称。
assets_manager assets_manager_t* 获取资源管理器对象。
auto_scale_children_h bool_t 窗口大小与设计时大小不同时,是否自动调整子控件的高度。
auto_scale_children_w bool_t 窗口大小与设计时大小不同时,是否自动调整子控件的宽度。
auto_scale_children_x bool_t 窗口大小与设计时大小不同时,是否自动调整子控件的x坐标。
auto_scale_children_y bool_t 窗口大小与设计时大小不同时,是否自动调整子控件的y坐标。
closable window_closable_t 收到EVT_REQUEST_CLOSE_WINDOW是否自动关闭窗口。
close_anim_hint char* 关闭窗口动画的名称。
design_h uint16_t 设计时高度。
design_w uint16_t 设计时宽度。
disable_anim bool_t 禁用窗口动画。
font_manager font_manager_t* 获取字体管理器对象。
image_manager image_manager_t* 获取图片管理器对象。
locale_info locale_info_t* 获取多国语言字符串管理器对象。
move_focus_down_key char* 向下移动焦点的键值。
move_focus_left_key char* 向左移动焦点的键值。
move_focus_next_key char* 向后移动焦点的键值。
move_focus_prev_key char* 向前移动焦点的键值。
move_focus_right_key char* 向右移动焦点的键值。
move_focus_up_key char* 向上移动焦点的键值。
open_anim_hint char* 打开窗口动画的名称。
single_instance bool_t 单例。如果窗口存在,先关闭再打开。
stage window_stage_t 窗口当前处于的状态。
strongly_focus bool_t 点击非focusable控件时,是否让当前焦点控件失去焦点。比如点击窗口空白区域,是否让编辑器失去焦点。
theme char* 窗体样式资源的名称。
theme_obj theme_t* 窗口的常量窗体样式数据。

# 事件

事件名称 类型 说明
EVT_WINDOW_WILL_OPEN event_t 窗口即将打开事件。 如果有窗口动画,在窗口动画开始前触发。如果没有窗口动画,在窗口被加载后的下一次循环中触发。
EVT_WINDOW_OPEN event_t 窗口打开事件。 如果有窗口动画,在窗口动画完成时触发。如果没有窗口动画,在窗口被加载后的下一次循环中触发。
EVT_WINDOW_TO_BACKGROUND event_t 窗口被切换到后台事件。 打开新窗口时,当前窗口被切换到后台时,对当前窗口触发本事件。
EVT_WINDOW_TO_FOREGROUND event_t 窗口被切换到前台事件。 关闭当前窗口时,前一个窗口被切换到前台时,对前一个窗口触发本事件。
EVT_WINDOW_CLOSE event_t 窗口关闭事件。
EVT_WINDOW_LOAD event_t 窗口加载完成事件。
EVT_REQUEST_CLOSE_WINDOW event_t 请求关闭窗口的事件。
EVT_LOCALE_CHANGED event_t locale改变的事件。

# window_base_auto_scale_children 函数

  • 函数功能:

根据参数自动缩放子控件。

  • 函数原型:
ret_t window_base_auto_scale_children (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。

# window_base_cast 函数

  • 函数功能:

转换为window_base对象(供脚本语言使用)。

  • 函数原型:
widget_t* window_base_cast (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 widget_t* window_base对象。
widget widget_t* window_base对象。

# window_base_create 函数

  • 函数功能:

创建window base对象。

  • 函数原型:
widget_t* window_base_create (widget_t* parent, const widget_vtable_t* vt, xy_t x, xy_t y, wh_t w, wh_t h);
  • 参数说明:
参数 类型 说明
返回值 widget_t* 窗口对象。
parent widget_t* 父控件
vt const widget_vtable_t* vtable对象。
x xy_t x坐标
y xy_t y坐标
w wh_t 宽度
h wh_t 高度

# window_base_get_prop 函数

  • 函数功能:

窗口get_prop函数的缺省实现。

  • 函数原型:
ret_t window_base_get_prop (widget_t* widget, const char* name, value_t* v);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。。
widget widget_t* window_base对象。g
name const char* 属性名。
v value_t* value对象

# window_base_get_widget_vtable 函数

  • 函数功能:

获取 window_base 虚表。

  • 函数原型:
const widget_vtable_t* window_base_get_widget_vtable ();
  • 参数说明:
参数 类型 说明
返回值 const widget_vtable_t* 成功返回 window_base 虚表。

# window_base_invalidate 函数

  • 函数功能:

窗口on_invalidate函数的缺省实现。

  • 函数原型:
ret_t window_base_invalidate (widget_t* widget, const rect_t* rect);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。
rect const rect_t* rect对象。

# window_base_on_copy 函数

  • 函数功能:

默认拷贝函数。

  • 函数原型:
ret_t window_base_on_copy (widget_t* widget, widget_t* other);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。。
widget widget_t* window_base对象。
other widget_t* other window_base对象。

# window_base_on_destroy 函数

  • 函数功能:

窗口on_destroy函数的缺省实现。

  • 函数原型:
ret_t window_base_on_destroy (widget_t* widget);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。

# window_base_on_event 函数

  • 函数功能:

窗口on_event函数的缺省实现。

  • 函数原型:
ret_t window_base_on_event (widget_t* widget, event_t* e);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。
e event_t* event对象。

# window_base_on_paint_begin 函数

  • 函数功能:

窗口on_paint_begin函数的缺省实现。

  • 函数原型:
ret_t window_base_on_paint_begin (widget_t* widget, canvas_t* c);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。
c canvas_t* canvas对象。

# window_base_on_paint_end 函数

  • 函数功能:

窗口on_paint_end函数的缺省实现。

  • 函数原型:
ret_t window_base_on_paint_end (widget_t* widget, canvas_t* c);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。1
widget widget_t* window_base对象。
c canvas_t* canvas对象。

# window_base_on_paint_self 函数

  • 函数功能:

窗口on_paint_self函数的缺省实现。

  • 函数原型:
ret_t window_base_on_paint_self (widget_t* widget, canvas_t* c);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。
c canvas_t* canvas对象。

# window_base_set_need_relayout 函数

  • 函数功能:

设置是否需要relayout

  • 函数原型:
ret_t window_base_set_need_relayout (widget_t* widget, bool_t need_relayout);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。
need_relayout bool_t 是否需要relayout。

# window_base_set_prop 函数

  • 函数功能:

窗口set_prop函数的缺省实现。

  • 函数原型:
ret_t window_base_set_prop (widget_t* widget, const char* name, const value_t* v);
  • 参数说明:
参数 类型 说明
返回值 ret_t 返回RET_OK表示成功,否则表示失败。
widget widget_t* window_base对象。
name const char* 属性名。
v const value_t* value对象

# applet_name 属性

小应用程序(applet)的名称。

如果该窗口属于某个独立的小程序应用(applet),需要指定它的名称,以便到对应的资源目录查找资源。

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# assets_manager 属性

获取资源管理器对象。

把资源管理器对象与窗口关联起来,是为了解决UI设计器与被设计的窗口需要从不同的位置加载资源资源的问题。

  • 类型:assets_manager_t*
特性 是否支持
可直接读取
可直接修改
可通过widget_get_prop读取

# auto_scale_children_h 属性

窗口大小与设计时大小不同时,是否自动调整子控件的高度。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# auto_scale_children_w 属性

窗口大小与设计时大小不同时,是否自动调整子控件的宽度。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# auto_scale_children_x 属性

窗口大小与设计时大小不同时,是否自动调整子控件的x坐标。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# auto_scale_children_y 属性

窗口大小与设计时大小不同时,是否自动调整子控件的y坐标。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# closable 属性

收到EVT_REQUEST_CLOSE_WINDOW是否自动关闭窗口。

如果关闭窗口时,需要用户确认:

  • 1.将closable设置为WINDOW_CLOSABLE_CONFIRM

  • 2.处理窗口的EVT_REQUEST_CLOSE_WINDOW事件

closable在XML中取值为:yes/no/confirm,缺省为yes。

  • 类型:window_closable_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# close_anim_hint 属性

关闭窗口动画的名称。 请参考窗口动画 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# design_h 属性

设计时高度。

  • 类型:uint16_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# design_w 属性

设计时宽度。

  • 类型:uint16_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# disable_anim 属性

禁用窗口动画。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# font_manager 属性

获取字体管理器对象。

把字体管理器对象与窗口关联起来,是为了解决UI设计器与被设计的窗口需要从不同的位置加载字体资源的问题。

  • 类型:font_manager_t*
特性 是否支持
可直接读取
可直接修改
可通过widget_get_prop读取

# image_manager 属性

获取图片管理器对象。

把图片管理器对象与窗口关联起来,是为了解决UI设计器与被设计的窗口需要从不同的位置加载图片资源的问题。

  • 类型:image_manager_t*
特性 是否支持
可直接读取
可直接修改
可通过widget_get_prop读取

# locale_info 属性

获取多国语言字符串管理器对象。

把多国语言字符串管理器对象与窗口关联起来,是为了解决UI设计器与被设计的窗口需要从不同的位置加载资源资源的问题。

  • 类型:locale_info_t*
特性 是否支持
可直接读取
可直接修改
可通过widget_get_prop读取

# move_focus_down_key 属性

向下移动焦点的键值。

请参考控件焦点 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# move_focus_left_key 属性

向左移动焦点的键值。

请参考控件焦点 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# move_focus_next_key 属性

向后移动焦点的键值。

请参考控件焦点 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# move_focus_prev_key 属性

向前移动焦点的键值。

请参考控件焦点 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# move_focus_right_key 属性

向右移动焦点的键值。

请参考控件焦点 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# move_focus_up_key 属性

向上移动焦点的键值。

请参考控件焦点 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# open_anim_hint 属性

打开窗口动画的名称。 请参考窗口动画 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# single_instance 属性

单例。如果窗口存在,先关闭再打开。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# stage 属性

窗口当前处于的状态。

  • 类型:window_stage_t
特性 是否支持
可直接读取
可直接修改
可通过widget_get_prop读取

# strongly_focus 属性

点击非focusable控件时,是否让当前焦点控件失去焦点。比如点击窗口空白区域,是否让编辑器失去焦点。

  • 类型:bool_t
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# theme 属性

窗体样式资源的名称。 每个窗口都可以有独立的窗体样式文件,如果没指定,则使用系统缺省的窗体样式文件。 窗体样式是一个XML文件,放在assets/raw/styles目录下。 请参考窗体样式 (opens new window)

  • 类型:char*
特性 是否支持
可直接读取
可直接修改
可持久化
可脚本化
可在IDE中设置
可在XML中设置
可通过widget_get_prop读取
可通过widget_set_prop修改

# theme_obj 属性

窗口的常量窗体样式数据。

把窗体样式管理器对象与窗口关联起来,是为了解决UI设计器与被设计的窗口需要从不同的位置加载窗体样式资源的问题。

  • 类型:theme_t*
特性 是否支持
可直接读取
可直接修改
可通过widget_get_prop读取