第 6 章:GUIX Studio 生成的代码

在你完成对屏幕和资源的编辑后,GUIX Studio 就会生成一组输出文件,这些文件可以合并到嵌入式应用程序中。 输出文件是通过选择“项目”菜单项中的“生成资源文件”和“生成规范”而生成的。 由 GUIX Studio 生成的“C”语言源代码文件用于编译以及链接到嵌入式应用程序源代码。 如果生成了二进制格式的资源文件,则应将此文件编程到目标上的非易失存储区,并且应使用 GUIX API 函数 gx_binres_theme_install 在运行时安装二进制资源。

用户的嵌入式应用程序代码引用由 GUIX Studio 生成的代码。 此外,GUIX Studio 生成的代码需要在用户的嵌入式应用程序代码中定义项目中指定的所有自定义小组件绘图、事件处理和内存分配函数。 如果没有,那么在生成应用程序时就会出现链接错误。

注意

用户永远不得修改由 GUIX Studio 生成的代码,并且应该抵制这样做。 所有的 UI 修改都应在关联的 GUIX Studio 项目中进行。 这样,项目可以与嵌入式应用程序保持同步。

生成资源文件

GUIX Studio 生成的资源文件包含预设的数据结构,这些数据结构定义了所有 GUIX Studio 资源(颜色、字体、像素图和字符串),这实际上是项目的“资源视图”中定义的所有资源。 这些资源文件可以源代码或二进制格式生成。

默认生成两个文件:一个文件是标准 C 源代码文件;另一个文件是 C 头文件,它提供了应用程序代码访问项目中定义的 GUIX 资源所需的外部引用和常量。 文件名的格式如下:

{project-name}_resources.h

{project-name}_resources.c

例如,为“simple”GUIX Studio 项目创建的资源文件的文件名是:

simple_resources.h

simple_resources.c

资源文件是通过选择“项目”菜单选项中的“生成资源文件”选项而生成的。 资源文件的目标是在“配置项目”对话框中指定的,可通过“配置”菜单项中的“配置项目/显示”选项来访问此对话框。

对于像素图和字体资源,可以在关联的资源编辑对话框中为每个像素图和字体指定自定义输出文件名。 借助此功能,可以将非常大的资源放在不同的文件中,而不是将所有资源都放在一个公用的输出文件中。 如果没有为字体或像素图资源指定重写的文件名,那么这些资源会被写入到公用的资源文件中。

如果喜欢使用二进制资源,则可以指定原始或标准的 s-record 输出格式。 二进制资源既无法编译,也无法链接到应用程序代码,而是在运行时使用 gx_binres_them_load() API 进行加载。 此 API 服务生成指向存储在非易失内存中的资源的资源表。 然后,可以使用 gx_display_theme_install() 来安装这些具有特定显示的资源。

生成规范代码

GUIX Studio 生成的规范文件包含用于创建在 GUIX Studio 中设计的 UI 的所有 C 代码。 此代码还引用 GUIX Studio 为此项目生成的资源文件。 用户的应用程序代码会调用此代码,以实际创建在项目中定义的 UI 对象。 此外,用户的应用程序代码包含在项目中指定的所有自定义小组件绘图、事件处理和内存分配函数。 默认生成两个文件:一个文件是标准 C 源代码文件;另一个文件是 C 头文件,它提供了应用程序代码访问 GUIX Studio 规范所需的外部引用和常量。 文件名的格式如下:

{project-name}_specifications.h

{project-name}_specifications.c

例如,为“simple”GUIX Studio 项目创建的规范文件的文件名是:

simple_specifications.h

simple_specifications.c

规范文件是通过选择“项目”菜单选项中的“生成规范文件”选项而生成的。 规范文件的目标是在“配置项目”对话框中指定的,可通过“配置”菜单项中的“配置项目/显示”选项来访问此对话框。

与用户代码集成

集成由 GUIX Studio 生成的资源文件和规范文件很简单,只需执行以下步骤:

  1. 将资源文件和规范文件复制到嵌入式生成环境中,或让它们可通过路径设置被嵌入式生成环境访问
  2. 将所有资源文件和规范文件都添加到嵌入式 IDE 项目或生成文件中
  3. 确保应用程序嵌入式代码调用必要的函数来初始化和创建资源文件和规范文件中包含的 UI
  4. 确保应用程序嵌入式代码包含所有必要的自定义小组件绘图、事件处理和内存分配函数
  5. 生成应用程序(编译和链接)
  6. 执行应用程序!