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 小时前
【IO多路转接】高并发服务器实战:Reactor 框架与 Epoll 机制的封装与设计逻辑
linux·运维·服务器·c++·io
HABuo6 小时前
【linux文件系统】磁盘结构&文件系统详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
Howrun7776 小时前
关于Linux服务器的协作问题
linux·运维·服务器
小白同学_C7 小时前
Lab3-page tables && MIT6.1810操作系统工程【持续更新】
linux·c/c++·操作系统os
失忆爆表症7 小时前
05_UI 组件库集成指南:Shadcn/ui + Tailwind CSS v4
前端·css·ui
十年磨一剑~8 小时前
Linux程序接收到sigpipe信号崩溃处理
linux
不能跑的代码不是好代码8 小时前
STM32窗口看门狗(WWDG)知识点及标准库使用指南
stm32·单片机·嵌入式硬件
geshifei8 小时前
Sched ext回调3——select_cpu(linux 6.15.7)
linux·ebpf
bingquan33338 小时前
在 Ghidra 中分析STM32裸机固件
stm32·单片机·嵌入式硬件
羽获飞8 小时前
从零开始学嵌入式之STM32——11.STM32---USART串行通讯
stm32·单片机·嵌入式硬件