awtk/docs/awtk_main.md

147 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

2020-02-27 17:21:43 +08:00
# AWTK 应用程序的入口
## 一、背景
虽然 main 函数是 C 语言的标准入口,但是不同平台的入口函数仍然有多种不同的形式。比如:
* 嵌入式系统用 gui\_app\_start
* ios/android 用 SDL\_main
* Linux/MacOS 用 main
* Windows 用 wWinMain
如果希望开发的程序要在多个平台上运行就需要处理多种入口函数。为了简化这个过程AWTK 把入口函数的处理封装到 awtk_main.inc 中,开发者只需要 include 进来即可。
## 二、基本用法
* 实现 application_init 函数
```c
ret_t application_init() {
/*do sth.*/
return RET_OK;
}
```
* 实现 application_exit 函数
```c
ret_t application_exit() {
log_debug("application_exit\n");
return RET_OK;
}
```
* 包含 awtk_main.inc
```c
#include "awtk_main.inc"
```
> 请参考[完整的例子](https://github.com/zlgopen/awtk-c-demos/blob/master/demos/button.c)
## 三、高级用法
* 指定APP TYPE和窗口大小
```c
#define LCD_WIDTH 800
#define LCD_HEGHT 600
#define AWTK_APP_TYPE APP_DESKTOP
#include "awtk_main.inc"
```
> 请参考[完整的例子](https://github.com/zlgopen/awtk/blob/master/demos/demo_desktop.c)
* 处理命令行参数
```c
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"
```
> 请参考[完整的例子](https://github.com/zlgopen/awtk-jerryscript/blob/master/src/c/main.c)
* 指定应用程序的名称
```c
#define APP_NAME "AWTK-JS"
#include "awtk_main.inc"
```
2020-03-13 07:54:15 +08:00
* 指定缺省字体
```c
#define APP_DEFAULT_FONT "default_full"
#include "awtk_main.inc"
```
2022-01-12 09:52:56 +08:00
* 指定资源路径
```c
#define APP_RES_ROOT "./"
#include "awtk_main.inc"
```
* 从zip文件加载资源
```c
#define ASSETS_ZIP "./assets.zip"
#include "awtk_main.inc"
```
* 旋转屏幕
```c
//横屏当竖屏
#define WITH_LCD_PORTRAIT 1
//竖屏当横屏
#define WITH_LCD_LANDSCAPE 1
#include "awtk_main.inc"
```
* 启用鼠标指针
```c
#define ENABLE_CURSOR 1
#include "awtk_main.inc"
```
* 指定默认语言
```c
#define APP_DEFAULT_LANGUAGE "zh"
#define APP_DEFAULT_COUNTRY "CN"
#include "awtk_main.inc"
```
2022-10-20 18:16:14 +08:00
* 关闭命令行窗口
```c
#define APP_ENABLE_CONSOLE FALSE
#include "awtk_main.inc"
```
2020-03-13 07:54:15 +08:00
> 请参考[完整的例子](https://github.com/zlgopen/awtk-jerryscript/blob/master/src/c/main.c)