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):取出某个页面

相关推荐
橘子真甜~7 分钟前
C/C++ Linux网络编程5 - 网络IO模型与select解决客户端并发连接问题
linux·运维·服务器·c语言·开发语言·网络·c++
oushaojun233 分钟前
Linux内核KGDB进阶:源码级调试实战演练(转)
linux·运维·kgdb
船长㉿1 小时前
vim常用命令
linux·编辑器·vim
大聪明-PLUS1 小时前
Linux 系统中的 CPU。文章 2:平均负载
linux·嵌入式·arm·smarc
listhi5201 小时前
使用SCP命令在CentOS 7上向目标服务器传输文件
linux·服务器·centos
wangjialelele1 小时前
详解mysql命令行操作与语言链接
c语言·数据库·c++·mysql·oracle
天一生水water2 小时前
什么是调压器的P2s
linux·服务器·网络
风中凌乱2 小时前
ftp服务的安装与部署
linux·服务器
赖small强2 小时前
【Linux驱动开发】Linux Input子系统架构深度解析
linux·驱动开发·input·按键驱动·libinput
cs麦子3 小时前
C语言--详解--冒泡排序(Bubble Sort)
c语言·算法·排序算法