一个最小的应用

按常规套路,第一个程序从输出 "Hello, World!" 开始,那么首先,你需要新建一个 helloworld.c 文件,写好 main() 函数,然后引入 LCUI 的基础头文件:

  1. #include <LCUI_Build.h>
  2. #include <LCUI/LCUI.h>
  3. int main(void)
  4. {
  5. return 0;
  6. }

LCUI_Build.h 中主要包含 LCUI 在编译时的相关宏定义,而 LCUI.h 中主要包含 LCUI 应用程序必要的数据结构定义以及常用函数声明。

接下来,需要一个容器能够装载 "Hello, World!" 字符串并将它呈现在屏幕上。为了实现这一功能,我们可以使用 LCUI 自带的文本显示(TextView)部件来扮演容器这一角色,但在此之前,我们需要引入依赖的头文件:

  1. #include <LCUI/gui/widget.h>
  2. #include <LCUI/gui/widget/textview.h>

在使用 LCUI 的功能前,我们需要调用 LCUI_Init() 对各个功能进行初始化:

  1. ...
  2. int main(void)
  3. {
  4. LCUI_Init();
  5. return 0;
  6. }

之后,定义一个名为 txt 的 LCUI_Widget 对象,然后调用 LCUIWidget_New() 创建一个类型为 textview 部件对象,并用 txt 保存该对象的引用:

  1. ...
  2. int main(void)
  3. {
  4. LCUI_Widget txt;
  5. LCUI_Init();
  6. txt = LCUIWidget_New("textview");
  7. return 0;
  8. }

得到 TextView 部件后,调用该类型部件提供的 TextView_SetText() 函数来设置它呈现的文本:

  1. ...
  2. int main(void)
  3. {
  4. LCUI_Widget txt;
  5. LCUI_Init();
  6. root = LCUIWidget_GetRoot();
  7. txt = LCUIWidget_New("textview");
  8. TextView_SetText(txt, "Hello, World!");
  9. return 0;
  10. }

至此,"Hello, World!" 的容器已经准备好了,但它并不会显示在屏幕上,因为 LCUI 只渲染根(Root)部件中的内容,我们需要先调用 LCUIWidget_GetRoot() 获取根部件,然后调用 Widget_Append() 将 TextView 部件追加到根部件里:

  1. ...
  2. int main(void)
  3. {
  4. LCUI_Widget root, txt;
  5. LCUI_Init();
  6. root = LCUIWidget_GetRoot();
  7. txt = LCUIWidget_New("textview");
  8. TextView_SetText(txt, "Hello, World!");
  9. Widget_Append(root, txt);
  10. return 0;
  11. }

最后,我们需要调用 LCUI_Main() 让此应用程序进入主循环以执行后续产生的各种任务,其中包括键盘、鼠标等输入事件处理,以及图形界面的更新与渲染工作,顺便让程序保持运行。

  1. #include <LCUI_Build.h>
  2. #include <LCUI/LCUI.h>
  3. #include <LCUI/gui/widget.h>
  4. #include <LCUI/gui/widget/textview.h>
  5. int main(void)
  6. {
  7. LCUI_Widget root, txt;
  8. LCUI_Init();
  9. root = LCUIWidget_GetRoot();
  10. txt = LCUIWidget_New("textview");
  11. TextView_SetText(txt, "Hello, World!");
  12. Widget_Append(root, txt);
  13. return LCUI_Main();
  14. }

编译并运行这个程序,你会看到如下效果:

运行效果

原文: https://docs.lcui.lc-soft.io/zh-cn/getting_started/step1.html