LVGL V8百问网学习笔记

添加例程

在这里插入图片描述
右键将把相应的文件,添加到对应的工程目录中
在这里插入图片描述
在这里插入图片描述
将menu_test_demo.c文件修改为如下

/*********************
 *      INCLUDES
 *********************/
#include "../../lv_100ask_teach_demos.h"
#if LV_USE_MENU_TEST_DEMO
#include "menu_test_demo.h"
/*********************
 *      DEFINES
 *********************/

/**********************
 *  STATIC VARIABLES
 **********************/
void MENU_TEST_GUI_APP(void)
{
    
    
    
}
#endif /* LV_USE_MENU_TEST_DEMO */

将menu_test_demo.h文件修改为如下

#ifndef MENU_TEST_DEMO_H
#define MENU_TEST_DEMO_H

#ifdef __cplusplus
extern "C" {
    
    
#endif

/*********************
 *      INCLUDES
 *********************/
#include "../lv_100ask_teach_demos.h"

/*********************
 *      DEFINES
 *********************/

/**********************
 *      TYPEDEFS
 **********************/

/**********************
 * GLOBAL PROTOTYPES
 **********************/
void MENU_TEST_GUI_APP(void);

/**********************
 *      MACROS
 **********************/

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* MENU_TEST_DEMO_H */

在lv_100ask_teach_demos.h包含例程的头文件menu_test_demo.h,使用相对路径
在这里插入图片描述
在头文件lv_100ask_teach_demos_conf.h中定义宏开关USE_MENU_TEST_DEMO
在这里插入图片描述
main函数中调用测试函数MENU_TEST_GUI_APP

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
{
    
    
    /*Initialize LittlevGL*/
    lv_init();

    /*Initialize the HAL for LittlevGL*/
    lv_win32_init(hInstance, SW_SHOWNORMAL, 320, 240, NULL);

    /*Output prompt information to the console, you can also use printf() to print directly*/
    LV_LOG_USER("LVGL initialization completed!");
    //printf("www.100ask.net: Lvgl initialization complete!\n");


    /*Run the demo*/
    //lv_100ask_demo_course_2_1_1();    // 基础对象(lv_obj),"Hello, LVGL!"
	//lv_100ask_demo_course_2_2_2();    // 基础对象的大小(size)
	//lv_100ask_demo_course_2_2_3();    // 基础对象的位置(position)
	//lv_100ask_demo_course_2_2_4();    // 基础对象的盒子模型(border-box)
	//lv_100ask_demo_course_2_2_5();    // 基础对象的样式(styles)
	//lv_100ask_demo_course_2_2_6();    // 基础对象的事件(events)、事件冒泡

	//lv_100ask_demo_course_3_1_1();    // 组件(widgets): 标签(label)的用法
	//lv_100ask_demo_course_3_1_2();    // 组件(widgets): 标签(label),显示中文
	//lv_100ask_demo_course_3_2_1();    // 组件(widgets): 按钮(lv_btn)的用法
	//lv_100ask_demo_course_3_3_1();    // 组件(widgets): 使用物理按键代替触摸(groups)
	//lv_100ask_demo_course_3_4_1();    // 组件(widgets): 开关(lv_switch)的用法
	//lv_100ask_demo_course_3_5_1();    // 组件(widgets): 复选框(lv_checkbox)的用法
	//lv_100ask_demo_course_3_6_1();    // 组件(widgets): 下拉列表(lv_dropdown))的用法
	//lv_100ask_demo_course_3_7_1();    // 组件(widgets): 滚轮(lv_roller)的用法
	//lv_100ask_demo_course_3_8_1();    // 组件(widgets): 进度条(lv_bar)的用法
	//lv_100ask_demo_course_3_9_1();    // 组件(widgets): 进度条(lv_slider)的用法
    //lv_100ask_page_manager_simple_test();
	MENU_TEST_GUI_APP();

    while(!lv_win32_quit_signal) {
    
    
        /* Periodically call the lv_task handler.
         * It could be done in a timer interrupt or an OS task too.*/
        lv_task_handler();

        usleep(10000);       /*Just to let the system breath*/
    }
    return 0;
}

页面管理器使用

配置

下载lv_lib_100ask_masterf放在图中所示文件夹,代码下载地址
在这里插入图片描述
该文件包含页面管理器的库函数

创建ccd_test_demo文件夹放在图中位置,ccd_test_demo.c需要使用lv_100ask_page_manager.c中的页面管理器。
在这里插入图片描述
ccd_test2_demo.c文件
在这里插入图片描述
ccd_test2_demo.h文件
在这里插入图片描述
lv_lib_100ask.h文件中#include “test/ccd_test2_demo/ccd_test2_demo.h”
在这里插入图片描述
lv_lib_100ask_conf.h文件中 #define CCD_TEST 1
在这里插入图片描述
最后在lv_lib_100ask_conf_internal.h文件中添加方框中的程序
在这里插入图片描述
经过以上步骤之后看就可以使用页面管理器中的接口函数了

程序修改

页面管理器库函数

修改函数lv_100ask_page_manager_set_open_page,不再调用返回按钮创建函数lv_page_back_btn_create,让用户自定义按钮样式

  if (lv_obj_get_child_cnt(obj) == 0)
  {
    
    
        page->init(obj);     //传入obj参数执行函数指针 page->init(obj);初始化页面,创建返回按钮
  }

用户自定义程序

主页面,不需要返回按键
void init_main_page(lv_obj_t * page)
{
    
    
}
子页面
void init_page1(lv_obj_t * page)
{
    
    
	lv_obj_t * cont = lv_obj_create(parent);
	
	//返回按钮
    lv_obj_t *back_btn=lv_btn_create(cont);

    lv_obj_set_size(back_btn, 60,40);
    lv_obj_set_pos(back_btn,250,30);

    lv_obj_t *label=lv_label_create(back_btn);
    lv_obj_set_style_text_font(label,&ch_word,0);       //设置ch_word为当前label字体
    lv_label_set_text(label, "返回");
    lv_obj_center(label);

    lv_obj_add_event_cb(back_btn, lv_page_back_event_cb, LV_EVENT_CLICKED, 		lv_obj_get_parent(parent));
}

注册按键事件回调函数lv_page_back_event_cb,功能为返回主页面

猜你喜欢

转载自blog.csdn.net/m0_37187962/article/details/125442493