Linux项目实战——UI系统、页面系统(后附百问网课程视频链接)

UI系统

一、数据结构抽象

  1. 按钮的名字

  2. 按钮的区域

3.按钮的绘制

4.按钮的事件

cpp 复制代码
typedef struct Button {
	char *name;
    int status;
	Region tRegion;
	int (*OnDraw)(struct Button *ptButton);
	int (*OnPressed)(struct Button *ptButton,PDispBuff ptDispBuff,PInputEvent ptInputEvent);
}Button, *PButton;

二、按键编程

对按键进行初始化,实现抽象出来的结构体。

2.1 实现OnDraw()

需要先实现:

1. 绘制底色

cpp 复制代码
void DrawRegion(PRegion ptRegion, unsigned int dwcolor)

2. 居中绘制文字

cpp 复制代码
void DrawTextInButtonCenter(char *name, PRegion ptRegion, unsigned int dwColor)

①确定每一个字符的大小

② 确定第一个字符的起点

然后就可以将绘制出来的按钮刷到LCD上。

cpp 复制代码
int FlushDisplayRegion(PRegion ptRegion, PDispBuff ptDispBuff)

2.2 实现OnPressed()

通过标志位status判断按键当前的状态,从而选颜色的显示。


页面系统

一、数据结构抽象

cpp 复制代码
typedef struct PageAction {
    char *name;
    void (*Run)(void *pParams);
    struct PageAction *ptNext;
}PageAction,*PPageAction;

二、页面管理器

页面管理器用来管理页面,只需要实现2个函数:

1.PageRegister:把多个页面注册进链表

2.Page(name):取出某个页面

相关推荐
资深流水灯工程师5 分钟前
STM32 SAI 通讯原理与 TDM 应用
stm32·单片机·嵌入式硬件
AI行业学习13 分钟前
CC-Switch 下载、安装windows\macOS \Linux 安装
linux·运维·macos
mosaic_born25 分钟前
systemctl restart reload enable 重启服务时的区别
linux
Deitymoon39 分钟前
FreeRTOS——任务信息查询API
stm32·单片机·嵌入式硬件
文青小兵43 分钟前
Linux云计算——docker compose haibor elfk (四)
linux·服务器·docker·云计算
思麟呀1 小时前
C++11并发编程:互斥锁
linux·开发语言·c++·windows
顺风尿一寸1 小时前
深度解析 Linux touch 命令:从用户输入到磁盘 Inode 的完整旅程
linux
踏着七彩祥云的小丑1 小时前
嵌入式测试学习第 24 天:串口通信详细流程、收发数据原理
单片机·嵌入式硬件
j_xxx404_1 小时前
Linux 线程日志系统设计:从策略模式、RAII 到 pthread 线程安全与内核写入路径|附源码
linux·运维·服务器·开发语言·c++·人工智能·策略模式
明天…ling1 小时前
CentOS 7 安装 Docker 踩坑全记录(含 sudo 权限、yum 源失效、命令报错解决方案)
linux·docker·centos