CN111488192B - 图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质 - Google Patents
图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质 Download PDFInfo
- Publication number
- CN111488192B CN111488192B CN202010302145.2A CN202010302145A CN111488192B CN 111488192 B CN111488192 B CN 111488192B CN 202010302145 A CN202010302145 A CN 202010302145A CN 111488192 B CN111488192 B CN 111488192B
- Authority
- CN
- China
- Prior art keywords
- key event
- peripheral key
- gui
- sub
- display area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及嵌入式开发领域,提供了图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质,以简单、高效的方式实现GUI的分区域显示。所述方法包括:创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;通过单线程机制,调用GUI各个分显区域所属处理接口显示各个分显区域的GUI;当外设按键事件发生时,外设按键事件读取线程读取发生的外设按键事件,并通过外设按键事件消息队列通知外设按键事件处理线程处理外设按键事件;外设按键事件处理线程判断发生外设按键事件的GUI分显区域;外设按键事件处理线程调用发生外设按键事件所属GUI分显区域对应处理接口处理外设按键事件。本发明的技术方案开发效率较高且占系统资源少。
Description
技术领域
本发明涉及嵌入式开发领域,特别涉及一种图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质。
背景技术
图形用户界面(Graphical User Interface,GUI)是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种图形界面元素。相对于命令行界面,GUI具有更强的直观性和可操作性,因而广泛应用于仪器仪表、工业控制和数字机床等嵌入式系统领域。
现有的一种实现GUI的方式是基于开源软件MiniGUI,采用多线程控制对窗口进行多区域的显示。然而,由于多线程的控制机制复杂,不仅增加了开发难度,而且接口复杂,使得软件开发人员实现一个GUI界面时,效率也比较低下,第三方面,在无需多线程控制的场景下,意味着采用多线程控制对窗口进行多区域的显示,将增加其代码移植的难度。
发明内容
本发明提供一种图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质,以简单、高效的方式实现GUI的分区域显示,并在无需多线程控制的场景下,减小其代码移植的难度。
一方面,本发明提供了一种图形用户界面实现方法,所述方法包括:
创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;
通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示所述各个分显区域的GUI;
当外设按键事件发生时,所述外设按键事件读取线程读取所述发生的外设按键事件,并通过所述外设按键事件消息队列通知所述外设按键事件处理线程处理所述外设按键事件;
所述外设按键事件处理线程判断发生所述外设按键事件的GUI分显区域;
所述外设按键事件处理线程调用发生所述外设按键事件所属GUI分显区域对应处理接口处理所述外设按键事件。
具体地,所述GUI各个分显区域中每一个分显区域都采用相同结构体来定义其成员属性,所述GUI各个分显区域的结构体构成结构体数组的一个元素,所述通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示所述各个分显区域的GUI,包括:
将所述GUI各个分显区域中的待显示分显区域初始化为一个空GUI;
销毁所述空GUI;
将所述待显示分显区域的结构体的地址赋值给指向所述待显示分显区域的指针;
调用所述待显示分显区域对应结构体中的处理接口获取GUI资源,在所述待显示分显区域绘制GUI。
具体地,所述外设按键事件消息队列保存外设按键事件类型和外设按键事件发生地的坐标值,所述当外设按键事件发生时,所述外设按键事件读取线程读取所述发生的外设按键事件,并通过所述外设按键事件消息队列通知所述外设按键事件处理线程处理所述外设按键事件,包括:
所述外设按键事件读取线程通过为应用层提供的外设驱动层接口,读取所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值;
所述外设按键事件读取线程将所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值传送到所述外设按键事件消息队列;
所述外设按键事件处理线程从所述外设按键事件消息队列获取到所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值。
具体地,所述外设按键事件处理线程判断发生所述外设按键事件的分显区域,包括:通过将所述外设按键事件发生地的坐标值与所述GUI各个分显区域的范围对比,确定所述外设按键事件发生的分显区域;
所述外设按键事件处理线程调用发生所述外设按键事件所属GUI分显区域对应处理接口处理所述外设按键事件,包括:
根据所述已经确定出的外设按键事件发生的GUI分显区域,取得发生所述外设按键事件所属GUI分显区域的地址;
将所述地址赋值给指向所述发生外设按键事件所属GUI分显区域的指针;
根据所述外设按键事件所属的外设按键事件类型,调用所述发生外设按键事件所属GUI分显区域对应结构体中与所述外设按键事件类型对应的处理接口处理所述外设按键事件。
具体地,所述方法还包括:
通过所述各个分显区域的指针,更新所述各个分显区域对应的GUI。
具体地,所述通过所述各个分显区域的指针,更新所述各个分显区域对应的GUI,包括:
销毁所述所述各个分显区域中待更新GUI分显区域的当前GUI;
将待更新GUI分显区域的结构体的地址赋值给指向所述待更新GUI分显区域的指针;
调用所述待更新GUI分显区域对应结构体中的处理接口获取GUI资源,在所述待更新GUI分显区域绘制GUI。
具体地,所述方法还包括:为应用层提供外设驱动层接口和显示驱动接口,所述外设驱动层接口包括触屏设备驱动接口和鼠标设备驱动接口。
另一方面,本发明提供了一种图形用户界面实现装置,包括:
创建模块,用于创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;
显示模块,用于通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示所述各个分显区域的GUI;
外设按键事件处理模块,用于当外设按键事件发生时,所述外设按键事件读取线程读取所述发生的外设按键事件,并通过所述外设按键事件消息队列通知所述外设按键事件处理线程处理所述外设按键事件;
判断模块,用于所述外设按键事件处理线程判断发生所述外设按键事件的GUI分显区域;
接口调用模块,用于所述外设按键事件处理线程调用发生所述外设按键事件所属GUI分显区域对应处理接口处理所述外设按键事件。
第三方面,本发明提供了一种终端,所述终端包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述技术方案的方法的步骤。
第四方面,本发明提供了一种非临时性计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述技术方案的方法的步骤。
不同于现有技术采用多线程控制对窗口进行多区域的显示而导致控制机制复杂、开发效率低的问题,本发明的技术方案一方面是通过单线程机制调用GUI各个分显区域所属处理接口显示各个分显区域的GUI,控制机制简单,不仅开发效率较高,而且不多占用系统资源(譬如,内存等);另一方面,GUI各个分显区域所属处理接口的数量并不多且不复杂,完全可以用C语言等高级编程语言全数编写,因而也能提高GUI的开发效率;第三方面,在无需多线程控制的场景下,减小了代码移植的难度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种图形用户界面实现方法的流程图;
图2是本发明实施例提供的GUI各个分显区域示意图;
图3是本发明实施例提供的图形用户界面实现装置结构示意图;
图4是本发明实施例提供的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。
在本说明书中,为了便于描述,附图中所示的各个部分的尺寸并不是按照实际的比例关系绘制的。
本发明提出了一种图形用户界面实现方法,所述方法如图1所示,主要包括步骤S101至S105,详述如下:
步骤S101:创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程。
在本发明实施例中,外设包括触摸屏以及与终端配套的鼠标和键盘等。由于GUI的实现要包括界面对鼠标点击、拖拽、触摸屏对屏幕触摸以及键盘键入进行反应,因此,需要外设按键事件读取线程和外设按键事件处理线程,而这两个线程在处理外设按键事件时,通常又需要外设按键事件消息队列作为中间沟通桥梁,因此,还需要创建外设按键事件消息队列。
需要说明的是,外设按键事件读取线程能够读取到外设按键事件,实质是应用层能够通过外设驱动层接口读取到这些外设的状态,同样地,GUI的显示实质也是应用层能够通过调用这些接口,获取到硬件(例如,显存、缓存等)上的资源。因此,在本发明实施例中,创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程之前,还可以为应用层提供外设驱动层接口和显示驱动接口,这些外设驱动层接口包括触屏设备驱动接口和鼠标设备驱动接口等,其中,触屏设备驱动接口主要是read()接口,通过该接口,应用层可以读取到触屏的状态值(例如,触屏被按下、在触屏上滑动或脱离触屏等)和用户触摸点的坐标值(x,y),鼠标设备驱动接口主要也是read()接口,通过该接口,应用层可以读取到鼠标的状态值(例如,移动或光标所在位置的坐标(x,y))和按键事件(例如,左键或右键按下等),而显示驱动接口主要包含Creat()、Fill()和Bilt()等接口,通过这些接口,应用层可以对surface(可以将此处的surface理解成图形系统中的“画布”,在surface上可以填充某种颜色或是图片)进行一系列操作,例如,通过接口Creat(),可以创建指定宽度和高度的surface,而通过接口Fill(),可以对创建的surface填充ARGB格式的颜色值,通过接口Blit(),用于在不同surface之间进行填充,例如,从缓存的surface填充到缓存的surface,或者从缓存的surface填充到显存的surface,等等。
步骤S102:通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示各个分显区域的GUI。
在本发明实施例中,是将整个显示区域分割成几个分显区域,例如,如附图2所示,是将整个显示区域分割为左上角分显区域、右上角分显区域、中间分显区域和底部分显区域等4个显示区域,GUI各个分显区域中每一个分显区域都采用相同结构体来定义其成员属性,而GUI各个分显区域的结构体构成结构体数组的一个元素,即该结构体数组中每个元素都是一个结构体,每一个结构体定义了一个GUI分显区域的成员属性,这些成员属性包括GUI私有属性信息和处理接口,其中,分显区域的GUI私有属性信息主要包括该分显区域对应界面的标识(ID)值、该分显区域的范围以及其他一些可根据具体需求添加的私有属性,分显区域对应界面的标识(ID)值用于区别于其他分显区域对应界面,分显区域的范围是一个矩形区域,其用该矩形一个直角顶点的坐标和该矩形区域的高和宽来表示,而一个分显区域的处理接口则主要包含如下10个接口,说明如下:
XXXLoad():用于加载解析一个分显区域的GUI的二进制文件;
XXXCreate():用于创建一个分显区域的GUI的缓存surface和显存surface;
XXXInit():用于创建一个分显区域的GUI的初始化参数,例如,多页显示参数;
XXXUp():用于处理一个分显区域的GUI的外设按键抬起事件;
XXXDown():用于处理一个分显区域的GUI的外设按键按下事件;
XXXMove():用于处理一个分显区域的GUI的外设上的滑动事件;
XXXDraw():用于操作一个分显区域的GUI的缓存surface;
XXXShow():用于操作一个分显区域的GUI的显存surface,通过调用该接口,该分显区域的GUI会在显示设备上绘制出来;
XXXDestroy():用于销毁一个分显区域的GUI;
XXXUnLoad():用于释放一个分显区域的GUI的资源。
上述各个接口名称中的“XXX”表示一个分显区域的GUI的标识(ID)
作为本发明一个实施例,通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示各个分显区域的GUI可通过如下步骤S1021至S1024实现:
步骤S1021:将各个分显区域中的待显示分显区域初始化为一个空GUI。
待显示分显区域初始化为空GUI后,该空GUI的ID值为0,其对应的一些接口也为空。
步骤S1022:销毁经步骤S1021初始化后得到的空GUI。
在本发明实施例中,销毁经步骤S1021初始化后得到的空GUI可通过调用上述列举的10个处理接口中该待显示分显区域对应的处理接口XXXDestroy()和XXXUnLoad(),分别销毁该待显示分显区域对应的GUI并释放GUI的资源。
步骤S1023:将待显示分显区域的结构体的地址赋值给指向待显示分显区域的指针。
在本发明实施例中,每个GUI分显区域都是一个结构体,例如,如附图2示例,整个GUI分为4个分显区域,则对应4个结构体。假设每个GUI分显区域的结构体用一个结构体数组的元素表示,例如,分别使用GUI[left]、GUI[right]、GUI[center]和GUI[bottom]对应表示左上角分显区域、右上角分显区域、中间分显区域和底部分显区域的结构体,&GUI[left]表示左上角分显区域这个结构体的地址,&GUI[right]表示右上角分显区域这个结构体的地址,&GUI[center]表示中间分显区域这个结构体的地址,&GUI[bottom]表示底部分显区域这个结构体的地址,若定义一个全局结构体指针数组,例如定义*pbArray[],则将待显示分显区域的结构体的地址赋值给指向待显示分显区域的指针,意味着待显示分显区域是左上角分显区域时,是执行*pbArray[left]=&GUI[left]这一操作,待显示分显区域是右上角分显区域时,是执行*pbArray[right]=&GUI[right]这一操作,待显示分显区域是中间分显区域时,是执行*pbArray[center]=&GUI[center]这一操作,待显示分显区域是底部分显区域时,是执行*pbArray[bottom]=&GUI[bottom]这一操作。
步骤S1024:调用待显示分显区域对应结构体中的处理接口获取GUI资源,在待显示分显区域绘制GUI。
需要说明的是,一个GUI的完整实现,除了前述实施例列举的10个处理接口之外,还需要显示一个GUI的各种GUI资源,包括图片等。在本发明实施例中,根据需求将GUI资源,例如,显示需要的png格式的图片的名称保存在一个文本文档(假设文档名称为picture.txt)中,每一文件名占一行,每张png格式的图片在GUI对应的坐标信息写在另一文本文档(假设文档名称为coordinate.txt)中,不同图片之间的坐标用一些特殊符号(例如#)分割,picture.txt、coordinate.txt和png格式的图片源文件存放在同一路径下;然后,使用工具先读取coordinate.txt文件第一张png格式的图片的坐标信息,转换成16个字节的二进制文件,保存到bin文件中;根据picture.txt中第一行png格式的图片的名称,读取当前目录下的第一张png格式的,将该png格式的图片和容量都转换成二进制数据,其中,容量数据占4个字节,存放在前述bin文件中第一张png格式的图片的坐标即16个字节的坐标后面,图片数据存放在占4个字节的容量数据之后;以此类推,直至读完当前路径下所有png格式的图片,最后,将整个二进制文件(bin文件)做一次CRC校验;每个GUI的资源(例如,png格式的图片)都生成其对应的二进制文件,文字信息是所有GUI共有的资源,保存在单独的文本文档中。在本发明实施例中,由于这些GUI资源最后都转换为二进制文件(bin文件),与开源软件使用控件生成的简陋界面(例如,工控界面、车床界面等)相比,由bin文件的GUI资源生成的GUI要美观许多。
由于在步骤S1023中,已经将待显示分显区域的结构体的地址赋值给指向待显示分显区域的指针,因此,当调用待显示分显区域对应结构体中的处理接口,例如XXXCreate()、XXXInit()、XXXDraw()和XXXShow()时,可以获取前述bin文件存储的各种GUI资源,在待显示分显区域绘制GUI。
步骤S103:当外设按键事件发生时,外设按键事件读取线程读取发生的外设按键事件,并通过外设按键事件消息队列通知外设按键事件处理线程处理发生的外设按键事件。
在本发明实施例中,外设按键事件消息队列负责保存外设按键事件类型和外设按键事件发生地的坐标值。步骤S103的实现方式可以是:外设按键事件读取线程通过为应用层提供的外设驱动层接口,读取外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值;外设按键事件读取线程将外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值传送到外设按键事件消息队列;外设按键事件处理线程从外设按键事件消息队列获取到外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值,其中,为应用层提供的外设驱动层接口即前述实施例提及的read(),通过read(),外设按键事件读取线程能够读取到外设按键事件类型和外设按键事件发生地的坐标值,例如,光标在屏幕上的位置或者手指在触摸屏上触控点的位置。
步骤S104:外设按键事件处理线程判断发生外设按键事件的GUI分显区域。
如前所述,GUI各个分显区域的范围是一个矩形区域,其采用该矩形一个直角顶点的坐标和该矩形区域的高和宽来表示,而外设按键事件处理线程从外设按键事件消息队列获取到外设按键事件发生地的坐标值,因此,外设按键事件处理线程判断发生外设按键事件的分显区域可以是通过将外设按键事件发生地的坐标值与GUI各个分显区域的范围对比,确定外设按键事件发生的分显区域。
步骤S105:外设按键事件处理线程调用发生外设按键事件所属GUI分显区域对应处理接口处理所发生的外设按键事件。
与现有技术需要用多个线程来对应处理多个GUI分显区域发生的外设按键事件不同,在本发明实施例中,可以使用一个单线程即外设按键事件处理线程,调用发生外设按键事件所属GUI分显区域对应处理接口处理所发生的外设按键事件,即,无论是哪个GUI分显区域发生外设按键事件,外设按键事件处理线程均可以调用发生外设按键事件的该GUI分显区域对应处理接口处理所发生的外设按键事件。作为本发明一个实施例,外设按键事件处理线程调用发生外设按键事件所属GUI分显区域对应处理接口处理所发生的外设按键事件可通过如下步骤S1051至步骤S1053实现:
步骤S1051,根据已经确定出的外设按键事件发生的GUI分显区域,取得发生外设按键事件所属GUI分显区域的地址。
如前所述,每个GUI分显区域以一个结构体来定义其成员属性,这些结构体都有一个地址。可以根据已经确定出的外设按键事件发生的GUI分显区域,取得发生外设按键事件所属GUI分显区域的地址。
步骤S1052,将发生外设按键事件所属GUI分显区域的地址赋值给指向发生外设按键事件所属GUI分显区域的指针。
例如,假设发生外设按键事件所属GUI分显区域是左上角分显区域,则执行*pbArray[left]=&GUI[left]这一赋值操作,即,将左上角分显区域的结构体的地址赋值给指向左上角分显区域的指针,假设待发生外设按键事件所属GUI分显区域是右上角分显区域时,则执行*pbArray[right]=&GUI[right]这一赋值操作,即,将右上角分显区域的结构体的地址赋值给指向右上角分显区域的指针,假设发生外设按键事件所属GUI分显区域是中间分显区域,则执行*pbArray[center]=&GUI[center]这一赋值操作,即,将中间分显区域的结构体的地址赋值给指向中间分显区域的指针,假设发生外设按键事件所属GUI分显区域是底部分显区域,则执行*pbArray[bottom]=&GUI[bottom]这一赋值操作,即,将底部分显区域的结构体的地址赋值给指向底部分显区域的指针。
步骤S1053,根据外设按键事件所属的外设按键事件类型,调用发生外设按键事件所属GUI分显区域对应结构体中与外设按键事件类型对应的处理接口处理外设按键事件。
发生外设按键事件所属GUI分显区域对应结构体中处理接口包括前述实施例提及的XXXDown()、XXXUp()和XXXMove()等,分别对应触屏被按下、脱离触屏和在触屏上滑动等外设按键事件类型。当调用这些处理接口时,处理发生外设按键事件所属GUI分显区域上发生的外设按键事件。
上述附图1示例的方法还包括通过GUI各个分显区域的指针,更新GUI各个分显区域对应的GUI,具体实现方式可以是:销毁GUI各个分显区域中待更新GUI分显区域的当前GUI;将待更新GUI分显区域的结构体的地址赋值给指向待更新GUI分显区域的指针;调用待更新GUI分显区域对应结构体中的处理接口获取GUI资源,在待更新GUI分显区域绘制GUI。
从上述附图1示例的图形用户界面实现方法可知,不同于现有技术采用多线程控制对窗口进行多区域的显示而导致控制机制复杂、开发效率低的问题,本发明的技术方案一方面是通过单线程机制调用GUI各个分显区域所属处理接口显示各个分显区域的GUI,控制机制简单,不仅开发效率较高,而且不多占用系统资源(譬如,内存等);另一方面,GUI各个分显区域所属处理接口的数量并不多且不复杂,完全可以用C语言等高级编程语言全数编写,因而也能提高GUI的开发效率;第三方面,在无需多线程控制的场景下,减小了代码移植的难度。
请参阅附图3,是本发明实施例提供的一种图形用户界面实现装置,该图形用户界面实现装置包括创建模块301、显示模块302、外设按键事件处理模块303、判断模块304和接口调用模块305,详述如下:
创建模块301,用于创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;
显示模块302,用于通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示各个分显区域的GUI;
外设按键事件处理模块303,用于当外设按键事件发生时,外设按键事件读取线程读取发生的外设按键事件,并通过外设按键事件消息队列通知外设按键事件处理线程处理外设按键事件;
判断模块304,用于外设按键事件处理线程判断发生外设按键事件的GUI分显区域;
接口调用模块305,用于外设按键事件处理线程调用发生外设按键事件所属GUI分显区域对应处理接口处理外设按键事件。
从以上技术方案的描述中可以看出,不同于现有技术采用多线程控制对窗口进行多区域的显示而导致控制机制复杂、开发效率低的问题,本发明的技术方案一方面是通过单线程机制调用GUI各个分显区域所属处理接口显示各个分显区域的GUI,控制机制简单,不仅开发效率较高,而且不多占用系统资源(譬如,内存等);另一方面,GUI各个分显区域所属处理接口的数量并不多且不复杂,完全可以用C语言等高级编程语言全数编写,因而也能提高GUI的开发效率。
图4是本发明一实施例提供的终端的结构示意图。图4示例的终端主要包括:处理器40、存储器41以及存储在存储器41中并可在处理器40上运行的计算机程序42,例如图形用户界面实现方法的程序。处理器40执行计算机程序42时实现上述图形用户界面实现方法实施例中的步骤,例如图1所示的步骤S101至S105,或者,处理器40执行计算机程序42时实现上述各装置实施例中各模块/单元的功能,例如图3所示创建模块301、显示模块302、外设按键事件处理模块303、判断模块304和接口调用模块305的功能。
示例性地,图形用户界面实现方法的计算机程序42主要包括:创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示各个分显区域的GUI;当外设按键事件发生时,外设按键事件读取线程读取发生的外设按键事件,并通过外设按键事件消息队列通知外设按键事件处理线程处理发生的外设按键事件;外设按键事件处理线程判断发生外设按键事件的GUI分显区域;外设按键事件处理线程调用发生外设按键事件所属GUI分显区域对应处理接口处理所发生的外设按键事件。计算机程序42可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器41中,并由处理器40执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序42在终端5中的执行过程。例如,计算机程序42可以被分割成创建模块301、显示模块302、外设按键事件处理模块303、判断模块304和接口调用模块305(虚拟装置中的模块)的功能,各模块具体功能如下:创建模块301,用于创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;显示模块302,用于通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示各个分显区域的GUI;外设按键事件处理模块303,用于当外设按键事件发生时,外设按键事件读取线程读取发生的外设按键事件,并通过外设按键事件消息队列通知外设按键事件处理线程处理外设按键事件;判断模块304,用于外设按键事件处理线程判断发生外设按键事件的GUI分显区域;接口调用模块305,用于外设按键事件处理线程调用发生外设按键事件所属GUI分显区域对应处理接口处理外设按键事件。
终端4可包括但不仅限于处理器40、存储器41。本领域技术人员可以理解,图4仅仅是终端4的示例,并不构成对终端4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器40可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器41可以是终端4的内部存储单元,例如终端4的硬盘或内存。存储器41也可以是终端4的外部存储设备,例如终端4上配备的插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器41还可以既包括终端4的内部存储单元也包括外部存储设备。存储器41用于存储计算机程序以及终端所需的其他程序和数据。存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即,将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非临时性计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,图形用户界面实现方法的计算机程序可存储于一非临时性计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤,即,创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示各个分显区域的GUI;当外设按键事件发生时,外设按键事件读取线程读取发生的外设按键事件,并通过外设按键事件消息队列通知外设按键事件处理线程处理发生的外设按键事件;外设按键事件处理线程判断发生外设按键事件的GUI分显区域;外设按键事件处理线程调用发生外设按键事件所属GUI分显区域对应处理接口处理所发生的外设按键事件。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。非临时性计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读内存(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,非临时性计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,非临时性计算机可读介质不包括电载波信号和电信信号。以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种图形用户界面实现方法,其特征在于,所述方法包括:
创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;
通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示所述各个分显区域的GUI;
当外设按键事件发生时,所述外设按键事件读取线程读取所述发生的外设按键事件,并通过所述外设按键事件消息队列通知所述外设按键事件处理线程处理所述外设按键事件;
所述外设按键事件处理线程判断发生所述外设按键事件的GUI分显区域;所述外设按键事件处理线程调用发生所述外设按键事件所属GUI分显区域对应处理接口处理所述外设按键事件;
所述GUI各个分显区域中每一个分显区域都采用相同结构体来定义其成员属性,所述GUI各个分显区域的结构体构成结构体数组的一个元素,所述通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示所述各个分显区域的GUI,包括:
将所述GUI各个分显区域中的待显示分显区域初始化为一个空GUI;
销毁所述空GUI;
将所述待显示分显区域的结构体的地址赋值给指向所述待显示分显区域的指针;
调用所述待显示分显区域对应结构体中的处理接口获取GUI资源,在所述待显示分显区域绘制GUI。
2.如权利要求1所述图形用户界面实现方法,其特征在于,所述外设按键事件消息队列保存外设按键事件类型和外设按键事件发生地的坐标值,所述当外设按键事件发生时,所述外设按键事件读取线程读取所述发生的外设按键事件,并通过所述外设按键事件消息队列通知所述外设按键事件处理线程处理所述外设按键事件,包括:
所述外设按键事件读取线程通过为应用层提供的外设驱动层接口,读取所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值;
所述外设按键事件读取线程将所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值传送到所述外设按键事件消息队列;
所述外设按键事件处理线程从所述外设按键事件消息队列获取到所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值。
3.如权利要求2所述图形用户界面实现方法,其特征在于,所述外设按键事件处理线程判断发生所述外设按键事件的分显区域,包括:通过将所述外设按键事件发生地的坐标值与所述GUI各个分显区域的范围对比,确定所述外设按键事件发生的分显区域;
所述外设按键事件处理线程调用发生所述外设按键事件所属GUI分显区域对应处理接口处理所述外设按键事件,包括:
根据已经确定出的外设按键事件发生的GUI分显区域,取得发生所述外设按键事件所属GUI分显区域的地址;
将所述地址赋值给指向发生外设按键事件所属GUI分显区域的指针;
根据所述外设按键事件所属的外设按键事件类型,调用所述发生外设按键事件所属GUI分显区域对应结构体中与所述外设按键事件类型对应的处理接口处理所述外设按键事件。
4.如权利要求1所述图形用户界面实现方法,其特征在于,所述方法还包括:
通过所述各个分显区域的指针,更新所述各个分显区域对应的GUI。
5.如权利要求4所述图形用户界面实现方法,其特征在于,所述通过所述各个分显区域的指针,更新所述各个分显区域对应的GUI,包括:
销毁所述各个分显区域中待更新GUI分显区域的当前GUI;
将待更新GUI分显区域的结构体的地址赋值给指向所述待更新GUI分显区域的指针;
调用所述待更新GUI分显区域对应结构体中的处理接口获取GUI资源,在所述待更新GUI分显区域绘制GUI。
6.如权利要求1至5任意一项所述图形用户界面实现方法,其特征在于,所述方法还包括:
为应用层提供外设驱动层接口和显示驱动接口,所述外设驱动层接口包括触屏设备驱动接口和鼠标设备驱动接口。
7.一种图形用户界面实现装置,其特征在于,所述装置包括:
创建模块,用于创建外设按键事件消息队列、外设按键事件读取线程和外设按键事件处理线程;
显示模块,用于通过单线程机制,调用图形用户界面GUI各个分显区域所属处理接口显示所述各个分显区域的GUI;
外设按键事件处理模块,用于当外设按键事件发生时,所述外设按键事件读取线程读取所述发生的外设按键事件,并通过所述外设按键事件消息队列通知所述外设按键事件处理线程处理所述外设按键事件;
判断模块,用于所述外设按键事件处理线程判断发生所述外设按键事件的GUI分显区域;
接口调用模块,用于所述外设按键事件处理线程调用发生所述外设按键事件所属GUI分显区域对应处理接口处理所述外设按键事件;
所述外设按键事件消息队列保存外设按键事件类型和外设按键事件发生地的坐标值,所述当外设按键事件发生时,所述外设按键事件读取线程读取所述发生的外设按键事件,并通过所述外设按键事件消息队列通知所述外设按键事件处理线程处理所述外设按键事件,包括:
所述外设按键事件读取线程通过为应用层提供的外设驱动层接口,读取所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值;
所述外设按键事件读取线程将所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值传送到所述外设按键事件消息队列;
所述外设按键事件处理线程从所述外设按键事件消息队列获取到所述外设按键事件的外设按键事件类型和外设按键事件发生地的坐标值。
8.一种终端,所述终端包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任意一项所述方法的步骤。
9.一种非临时性计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010302145.2A CN111488192B (zh) | 2020-04-16 | 2020-04-16 | 图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010302145.2A CN111488192B (zh) | 2020-04-16 | 2020-04-16 | 图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111488192A CN111488192A (zh) | 2020-08-04 |
CN111488192B true CN111488192B (zh) | 2023-07-04 |
Family
ID=71798424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010302145.2A Active CN111488192B (zh) | 2020-04-16 | 2020-04-16 | 图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488192B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692194A (zh) * | 2007-11-29 | 2010-04-07 | 索尼株式会社 | 包括滚动特征的图形用户界面、设计及方法 |
WO2014191332A1 (en) * | 2013-05-29 | 2014-12-04 | Here Global B.V. | Method, apparatus and computer program product for graphically enhancing the user interface of a device |
CN107924713A (zh) * | 2015-08-14 | 2018-04-17 | 费森尤斯医疗保健集团 | 医学治疗系统所用的非触摸界面 |
CN108509241A (zh) * | 2018-03-15 | 2018-09-07 | 广东欧珀移动通信有限公司 | 一种图像的全屏显示方法、全屏显示装置及移动终端 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140143004A1 (en) * | 2006-11-22 | 2014-05-22 | Raj Abhyanker | Event publication in a neighborhood social network |
-
2020
- 2020-04-16 CN CN202010302145.2A patent/CN111488192B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101692194A (zh) * | 2007-11-29 | 2010-04-07 | 索尼株式会社 | 包括滚动特征的图形用户界面、设计及方法 |
WO2014191332A1 (en) * | 2013-05-29 | 2014-12-04 | Here Global B.V. | Method, apparatus and computer program product for graphically enhancing the user interface of a device |
CN107924713A (zh) * | 2015-08-14 | 2018-04-17 | 费森尤斯医疗保健集团 | 医学治疗系统所用的非触摸界面 |
CN108509241A (zh) * | 2018-03-15 | 2018-09-07 | 广东欧珀移动通信有限公司 | 一种图像的全屏显示方法、全屏显示装置及移动终端 |
Also Published As
Publication number | Publication date |
---|---|
CN111488192A (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11868785B2 (en) | Application program page processing method and device | |
US20210303108A1 (en) | System and method for on-screen graphical user interface encapsulation and reproduction | |
CN109542399B (zh) | 软件开发方法、装置、终端设备及计算机可读存储介质 | |
CN107515759B (zh) | 截屏方法、装置、电子设备及可读存储介质 | |
WO2020048326A1 (zh) | 一种界面显示方法、系统及终端设备 | |
US20090019385A1 (en) | Management of Icons in a Display Interface | |
US10452231B2 (en) | Usability improvements for visual interfaces | |
US20210263644A1 (en) | Multipage display on a computing device | |
GB2574660A (en) | Graphics rendering | |
CN108536584B (zh) | 一种基于Sikuli的自动化测试方法 | |
CN110119299A (zh) | 信息显示方法及设备 | |
US8549493B2 (en) | Defining a MIDlet region space | |
CN110471700B (zh) | 图形处理方法、装置、存储介质及电子设备 | |
CN108021366B (zh) | 界面动画实现方法、装置、电子设备、存储介质 | |
CN111488192B (zh) | 图形用户界面实现方法、装置、终端和非临时性计算机可读存储介质 | |
CN108536864B (zh) | 页面数字显示方法、装置、计算机设备及存储介质 | |
CN111198735A (zh) | 一种图层信息获取方法、图层信息获取装置及终端设备 | |
CN115599484A (zh) | 一种截屏方法、截屏装置、截屏设备及计算机存储介质 | |
WO2019024507A1 (zh) | 一种触摸控制方法、装置及终端 | |
CN112052063A (zh) | 应用程序的水印填充方法、系统、终端及存储介质 | |
CN110609669A (zh) | 界面处理方法、装置、存储介质及电子设备 | |
Angebranndt et al. | Definition of the porting layer for the X v11 sample server | |
CN110795087B (zh) | 对uml设计图的图元处理方法、装置和计算机设备 | |
CN112486372B (zh) | 控件的触发方法和装置、存储介质、电子设备 | |
CN113703748B (zh) | 配置web应用程序中运行逻辑可视化方法、装置和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |