awtk/docs/awtk_main.md
2022-10-20 18:16:14 +08:00

2.4 KiB
Raw Blame History

AWTK 应用程序的入口

一、背景

虽然 main 函数是 C 语言的标准入口,但是不同平台的入口函数仍然有多种不同的形式。比如:

  • 嵌入式系统用 gui_app_start
  • ios/android 用 SDL_main
  • Linux/MacOS 用 main
  • Windows 用 wWinMain

如果希望开发的程序要在多个平台上运行就需要处理多种入口函数。为了简化这个过程AWTK 把入口函数的处理封装到 awtk_main.inc 中,开发者只需要 include 进来即可。

二、基本用法

  • 实现 application_init 函数
ret_t application_init() {
  /*do sth.*/
  return RET_OK;
}
  • 实现 application_exit 函数
ret_t application_exit() {
  log_debug("application_exit\n");
  return RET_OK;
}
  • 包含 awtk_main.inc
#include "awtk_main.inc"

请参考完整的例子

三、高级用法

  • 指定APP TYPE和窗口大小
#define LCD_WIDTH 800
#define LCD_HEGHT 600
#define AWTK_APP_TYPE APP_DESKTOP

#include "awtk_main.inc"

请参考完整的例子

  • 处理命令行参数
static ret_t on_cmd_line(int argc, char* argv[]) {
  script_file = argc == 2 ? argv[1] : "./demos/demoui.js";

  return RET_OK;
}

#define ON_CMD_LINE on_cmd_line

#include "awtk_main.inc"

请参考完整的例子

  • 指定应用程序的名称

#define APP_NAME "AWTK-JS"

#include "awtk_main.inc"
  • 指定缺省字体

#define APP_DEFAULT_FONT "default_full"

#include "awtk_main.inc"
  • 指定资源路径

#define APP_RES_ROOT "./"

#include "awtk_main.inc"
  • 从zip文件加载资源

#define ASSETS_ZIP "./assets.zip"

#include "awtk_main.inc"
  • 旋转屏幕

//横屏当竖屏
#define WITH_LCD_PORTRAIT 1

//竖屏当横屏
#define WITH_LCD_LANDSCAPE 1

#include "awtk_main.inc"
  • 启用鼠标指针
#define ENABLE_CURSOR 1

#include "awtk_main.inc"
  • 指定默认语言

#define APP_DEFAULT_LANGUAGE "zh"
#define APP_DEFAULT_COUNTRY "CN"

#include "awtk_main.inc"
  • 关闭命令行窗口
#define APP_ENABLE_CONSOLE FALSE

#include "awtk_main.inc"

请参考完整的例子