CN110399186A - 消息处理方法、装置、电子设备及计算机可读存储介质 - Google Patents
消息处理方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110399186A CN110399186A CN201810374487.8A CN201810374487A CN110399186A CN 110399186 A CN110399186 A CN 110399186A CN 201810374487 A CN201810374487 A CN 201810374487A CN 110399186 A CN110399186 A CN 110399186A
- Authority
- CN
- China
- Prior art keywords
- interface
- control
- message
- bed boundary
- processing logic
- 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.)
- Granted
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种消息处理方法、装置、电子设备及计算机可读存储介质,其中,方法包括:获取界面消息;根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。本发明实施例实现了一种多层界面之间的松融合的机制,从而方便于对各层界面的界面引擎进行独立开发,实现嵌入界面的灵活定制。并且在整个消息的传递和处理的过程中,不涉及多线程间的协调同步的问题,避免了由于多线程的协调同步而带来的耗时或者卡顿等问题。
Description
技术领域
本发明实施例涉及一种消息处理方法、装置、电子设备及计算机可读存储介质,属于计算机技术领域。
背景技术
现有技术中,经常会存在多个界面嵌套的情形,每层界面都存在其独立的界面处理逻辑,在界面开发过程中,会形成独立的界面引擎。针对多界面引擎的情形,现有技术的一种处理方式为:采用多线程的方式来执行多个嵌入界面的界面引擎。当出现触发多个界面窗口联动的事件时,就会出现多个UI(用户界面,User Interface)线程的相互协调的问题,在UI线程的场景下,UI线程间的同步问题和UI线间的通讯会变得比较复杂,并且非常耗时,导致界面出现卡顿等不流畅现象,甚至会由于UI线程同步问题而导致卡死。
发明内容
本发明实施例提供一种消息处理方法、装置、电子设备及计算机可读存储介质,以实现多嵌入界面的松融合,并且避免多线程同步导致的问题。
本发明实施例提供了一种消息处理方法,包括:
消息处理方法,其特征在于,
存在多层嵌套界面,多层嵌套界面分别对应于多层的控件树,
在末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,
下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点,
所述方法包括:
获取界面消息;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
本发明实施例还提供了一种消息处理装置,包括:
该装置涉及多层嵌套界面,多层嵌套界面分别对应于多层的控件树,
在末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,
下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点,
所述装置包括:
消息获取模块,用于获取界面消息;
消息处理模块,用于根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
实现多层嵌套界面,多层嵌套界面分别对应于多层的控件树,
在末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,
下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点,
并基于上述嵌套界面和控件树的结构,执行如下处理:
获取界面消息;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
本发明实施例还提供了一种消息处理方法,包括:
获取多层嵌套界面的界面消息;
获取对应于所述多层嵌套界面的控件树;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
本发明实施例还提供了一种消息处理装置,包括:
消息获取模块,用于多层嵌套界面的界面消息;
控件树获取模块,用于获取对应于所述多层嵌套界面的控件树
消息处理模块,用于根据所述多层的控件树,将所述界面消息逐层路由至所述多层界面的末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
本发明实施例还提供了一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
获取多层嵌套界面的界面消息;
获取对应于所述多层嵌套界面的控件树;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
本发明实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有当被处理器执行时使得处理器执行前述的任一项所述的方法的程序指令。本发明实施例提供的消息处理方法、装置、电子设备及计算机可读存储介质,实现了一种多层界面之间的松融合的机制,从而方便于对各层界面的界面引擎进行独立开发,实现嵌入界面的灵活定制。并且在整个消息的传递和处理的过程中,不涉及多线程间的协调同步的问题,避免了由于多线程的协调同步而带来的耗时或者卡顿等问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
图1为本发明实施例的多界面嵌套的示意图;
图2为本发明实施例的控件树结构的示意图;
图3为本发明实施例的两层界面嵌套的界面消息的生成及处理的原理示意图;
图4为本发明实施例的n层界面嵌套的界面消息的生成及处理的原理示意图;
图5为本发明实施例的消息处理方法的流程示意图之一;
图6为本发明实施例的消息处理装置的结构示意图之一;
图7为本发明实施例的消息处理方法的流程示意图之二;
图8为本发明实施例的消息处理装置的结构示意图之二;
图9为本发明实施例的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例的消息处理、装置及电子设备适用于多界面嵌套的应用场景中。本发明实施例的技术原理在于多层界面嵌套通过多层嵌套的控件树进行管理,在层嵌套的控件树中,将下一层界面对应的控件树(或者说把下层界面)映射为一个控件节点,***到上一层控件树中,下一层控件树的根节点以上一层控件树中的相应节点为父节点,从而实现多层控件树的嵌套关系。需要说明的是,本发明实施例中的多层嵌套界面中的多层是指界面的层数,包括只有两层界面的情形(宿主界面和嵌入在宿主界面中的嵌入界面),也包括两层以上界面的情形。
宿主界面是指:控件树中根节点对应的界面,宿主界面对应的节点的父节点为操作***提供控件。宿主界面是整个嵌套界面的第一层界面,也就是初始的界面,其他界面都是直接或间接地嵌入在宿主界面中。
嵌入界面是指:在多层嵌套界面中,宿主界面以外的界面都称作嵌入界面。
在多层嵌套界面中宿主界面是最上层界面(多层嵌套界面中只有一个宿主界面),没有任何界面嵌入的界面称作末端界面(多层嵌套界面可以有多个末端界面),中间的界面按照从宿主界面到末端界面的从上到下的关系来区分相互间的上一层界面和下一层界面的关系。
基于上述的嵌套关系,每层界面对应于独立的控件树,可以针对每层界面,独立开发界面引擎,从而形成每层界面对应的界面处理逻辑。
在进行界面消息处理时,每层界面对应的界面处理逻辑,根据相应的控件树来确定界面消息所指向的控件节点,如果界面消息所指向控件节点为对应于下层控件树对应的控件节点,则通过调用下层界面对应的界面处理逻辑接口,将界面消息提供给下层界面的界面处理逻辑,从而实现多层嵌套界面之间的消息传递。
如图1所示,其为本发明实施例的多界面嵌套的示意图。为了便于说明,图1中示例性地示出两层嵌套界面的情形,多层嵌套界面的情形可以基于两层嵌套界面的原理而得出。图中的各个方框代表控件,在本发明实施例中,控件可以是具有实际功能的功能性控件,例如,按钮、文本输入框、下拉菜单等,也可以是没有实际功能的显示性控件,例如:图标、显示图片的框体等。
在本发明实施例中,界面是指由多个控件构成的集合体。图1中,第一层界面W0(图中未示出)包括:控件W1、控件W2、控件W3以及第二层界面W4。其中,控件W1为显示背景第一层界面的背景图片的控件(例如图片框),控件W2和控件W3分别为最小化整个界面以及关闭整个界面的按钮,控件W2、控件W3以及第二层界面W4都建立在控件W1之上。第二层界面W4可以进一步包括:控件W41、控件W42以及控件W43。其中,控件W41为显示第二层界面的背景图片的控件,控件W42为文本输入框控件,控件W43为按钮控件,图中显示为登录功能的按钮,控件W42和控件W43建立在控件W41之上。
图1中的各个界面和控件之间的关联关系,可以通过图2所示的控件树来记录。如图2所示,其为本发明实施例的控件树结构的示意图。图2中示出了两层控件树,并用虚线隔开,虚线上方为第一层控件树T1,对应于第一层界面,虚线下方为第二层控件树T2,对应于第二层界面。
在第一层控件树T1中,控件节点TW1至TW4分别与第一层界面 W0中的控件W1至W3以及第二层界面W4对应,在第二层控件树T2 中,控件节点TW41至TW43分别与第二层界面W4中的控件W41至 W43对应。
第一层控件树T1和第二层控件树T2是两个独立的控件树,在第一层控件树T1中,第二层界面W4(或者说第二层控件树T2)映射为控件节点TW4,在第二层控件树T2中,其根节点TW41在创建时,以第一层控件树T1的叶子节点TW4为父节点,从而建立了第一层控件树T1和第二层控件树T2之间的关联关系。这里需要说明的是,基于操作***开发的界面,都会有一个父节点,对于第一层控件树T1而言,其默认的父节点为桌面。
基于图1和图2的架构,第一层界面和第二层界面可以相对独立地开发界面处理逻辑,即相对独立地开发第一层界面和第二层界面的界面引擎。在本发明实施例中,界面引擎可以认为是开发者开发出来的程序集,界面引擎中封装了界面处理逻辑,在进行界面处理时,可以通过调用界面引擎提供的方法或者函数来执行界面处理逻辑。
在本发明实施例中,可以将第一层界面和第二层界面分别指派给两个团队来分开发,然后通过相应的接口来进行对接。第一层界面的开发者只需要在第一层界面的控件树中,预留出对应于第二层界面的控件节点,第二层界面的开发者在开发界面引擎时,可以向第一层界面的开发者提供界面处理接口。第二层界面的界面处理接口可以与第一层控件树中对应的控件节点(例如图2中的控件节点TW4)建立映射关系,从而使得在第一层界面对应的界面处理逻辑执行时,根据第一层控件树,来调用相应的界面处理接口,从而将界面消息提供给第二层界面的界面处理逻辑。
在上述的图2中,存在两类控件节点,一类是嵌入到当前层界面中的下一层界面对应的控件节点,在本发明实施例中称作第一控件节点,例如,图2中的第一层控件树T1中的控件节点TW4;另一类是处于界面中的单一控件对应的控件节点,在本发明实施例中,称作第二控件节点,例如图2中的第一层界面的控件节点TW1、TW2以及TW3。第一控件节点实际上可以视为虚拟控件节点,其目的起到建立嵌套界面之间的控件树的继承关系,从而能够进行界面消息的路由。上述的单一控件是为了区别于嵌入界面所对应的控件而定义的,在任意一层界面中,嵌入界面可以视为当前层中的一个特殊控件,或者嵌入界面也可以视为嵌入到上一层界面的界面嵌入槽中,界面嵌入槽可以视为一个特殊控件。
下面从界面消息的产生和路由的角度来说明一下本发明实施例的技术方案,如图3所示,其为本发明实施例的两层界面嵌套的界面消息的生成及处理的原理示意图。如图中所示,在本发明实施例中,一个应用可以通过一个UI线程来管理多个界面的界面处理即可,运行在操作***中的UI线程对应一个消息队列。当操作***检测到IO事件(例如,键盘、鼠标以及触摸屏等操作)时,会生成IO事件消息,并根据当前应用的激活状态,发送给相应的UI线程对应的消息队列,UI线程中运行着消息循环,会定期从消息队列中读取IO事件消息,并进行处理。
例如,典型的UI线程中的消息循环可以包括:GetMessage(消息获取);TranslateMessage(消息转换);DispatchMessage(消息分发)这三个处理函数。
其中,GetMessage用于从消息队列中读取IO事件消息。在发明实施例中,IO事件消息是指操作***在响应IO事件后,产生的记录IO事件形式的消息,IO事件消息可以以虚拟键消息的形式存储。
TranslateMessage用于将IO事件消息转换为界面处理逻辑能够识别和处理的界面消息。例如,可以将虚拟键形式的IO事件消息转换为字符形式的界面消息。
DispatchMessage用于将界面消息分发给相应的界面处理逻辑。在UI 线程中,消息的分发可以通过在DispatchMessage中,调用界面或者控件对应的窗口过程函数来实现。在窗口过程函数中可以直接写入第一层界面的界面处理逻辑,也可以写入界面处理接口,将界面处理消息提供给封装在界面引擎中的界面处理逻辑进行处理。
IO事件消息中会携带IO事件指向的窗口句柄和/或IO事件发生的坐标信息,窗口句柄和/或坐标信息也会继续存在于界面消息中。界面处理逻辑会根据界面消息中携带的窗口句柄和/或坐标信息,再结合控件树,就能确定出界面消息指向的控件节点。如果界面消息指向的是上述的第一控件节点,则可以调用该第一控件节点对应的界面处理接口,将该界面消息向下一层界面对应的界面处理逻辑进行传递,交由下一层的界面处理逻辑进行处理,如果界面消息指向的是上述的第二控件节点,则直接通过本层界面对应的界面处理逻辑进行处理,或者通过第二控件节点对应的控件的界面处理逻辑进行处理。这里需要说明的是,在同一层界面中,可以将各个第二控件的处理逻辑都通过该层界面对应的处理逻辑来统一处理,也可以为每个第二控件编写单独的界面处理逻辑,根据界面消息中的窗口句柄和/或坐标信息直接调用第二控件对应的界面处理逻辑进行处理。
通过这样的机制,可以实现多层的界面嵌套关系,以及多层界面嵌套之间的界面消息的路由。如图4所示,其为本发明实施例的n层界面嵌套的界面消息的生成及处理的原理示意图。在图3基础上,增加了多层嵌套的关系,每层界面的界面处理逻辑会基于该层界面对应的控件树来进行消息路由,各层界面对应的控件树之间,通过将根节点的父节点设定为前一层控件树的某个控件节点(叶子节点)的方式,来实现控件树之间的继承关系。界面消息的路由最终会终止于末端界面(第n层界面)对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑,并最终完成界面处理。
另外,需要说明的是,上述的各层嵌入界面可以是由实控件构成的界面,也可以是由虚控件构成的界面。实控件与虚控件的区别在于,实控件具有窗口句柄,而虚控件具有控件的属性,但是没有窗口句柄。在本发明实施例中,在第一层界面(在本发明实施例中,可以将第一层界面称作宿主界面)中的各个控件节点都对应于实控件的窗口句柄,对于嵌入在第一层界面中的嵌入界面(第二层界面)可以是由实控件构成的界面也可以是虚控件构成的界面,不过,无论嵌入界面中是实控件还是虚控件,嵌入到第一层界面中的控件节点对应的窗口句柄是实控件的窗口句柄,这样的机制同样适用于n层嵌套的情形。如果到了某层界面变成了虚控件构成的界面,则在该层界面中继续嵌入界面的话,将会嵌入虚控件构成的界面。在虚控件构成的界面中虽然没有窗口句柄,但是会存在等同于窗口句柄的标识信息,以唯一标识某一控件。
本发明技术方案的技术效果在于:
多层嵌套界面通过多层嵌套的控件树实现了一种松融合的机制,每层界面对应于独立的控件树和界面处理逻辑,并通过控件树之间的继承关系来进行对接。这样的机制方便于对各层界面的界面引擎进行独立开发,实现嵌入界面的灵活定制。
在进行界面消息的处理时,上层界面对应的界面处理逻辑,可以通过调用下层界面开发者提供的接口来将界面消息提供给下层界面对应的界面处理逻辑,通过这样的界面消息的路由机制,来实现多层界面嵌套的消息传递。在整个消息的传递和处理的过程中,不涉及多线程间的协调同步的问题,全部的界面可以通过一个主UI线程和多层控件树来进行管理,各层界面处理所涉及的数据、变量等没有跨线程调用问题,对各个界面的界面处理逻辑不需做多线程兼容,避免了由于多线程的协调同步而带来的耗时或者卡顿等问题。
下面通过几个具体实施例详细介绍一下发明技术方案。
实施例一
如图5所示,其为本发明实施例的消息处理方法的流程示意图之一,该方法基于前面所介绍的多层嵌套结构,多层嵌套界面分别对应于多层的控件树,在末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点。
基于上述的多层嵌套的架构,该方法包括如下处理步骤:
S101:获取界面消息。该步骤可以由UI线程来执行,具体为UI线程从消息队列中读取IO事件消息(该处理可以由UI线程的消息循环中的GetMessage函数处理),然后将该IO事件消息进行消息转换(该处理可以由UI线程的消息循环中的TranslateMessage函数处理),生成界面消息。其中,IO事件消息和界面消息中携带的窗口句柄和/或IO事件发生的坐标信息,窗口句柄和/或坐标信息可以用于在后续界面处理中,确定针对的控件。
S102:根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑。路由操作可以由各层界面对应的界面处理逻辑来执行,各个界面处理逻辑根据控件树中的路径关系,对界面消息进行转发处理。
第一层界面也是全部嵌入界面的宿主界面,第一层界面中的控件均为实控件,每个控件都存在窗口句柄,可以针对每个控件定义窗口过程函数。
对于第一层界面而言,可以通过如下两种方式来实现界面处理逻辑:
方式一:针对第一层界面定义整体上的窗口过程函数,将整个第一层界面的界面处理逻辑(包含对全部控件的界面处理),写入到该窗口过程函数中。界面处理逻辑也可以封装到界面引擎中,在窗口过程函数中通过调用接引擎中提供的方法或者函数来实现界面处理逻辑。
方式二:针对第一层界面中的各个控件分别定义与各个控件对应的窗口过程函数,将与各个控件相关的界面处理逻辑写入到相应的窗口过程函数中。同理,界面处理逻辑也可以封装到界面引擎中,在窗口过程函数中通过调用接引擎中提供的方法或者函数来实现界面处理逻辑。
UI线程在获取的界面消息后,可以通过消息循环中的 DispatchMessage函数,将界面消息分直接发给第一层界面对应的窗口过程函数(对应于上述方式一)进行处理,也可以根据界面消息中携带的窗口句柄找到对应的第一层界面中的控件节点,将界面消息发送给该控件节点对应的窗口过程函数进行处理(对应于上述方式二)。
无论采用哪种方式,在界面消息到达第一层界面或者第一层界面中的控件的处理逻辑时,会根据界面消息中携带的信息来确定指向的控件节点。如果界面消息指向的控件是第一界面中的单一控件对应的控件节点(即第一控件节点),则直接调用相应的处理逻辑执行与该控件相关的处理逻辑即可,如果界面消息指向嵌入界面对应的第二控件节点,则将界面消息提供给第二层界面对应的界面处理逻辑进行处理。
如果只有一层嵌入界面,上面的界面处理过程就可以完成了。当存在多层嵌套时,可以基于上述的原理在下层界面的界面处理逻辑中,进行界面消息的路由。
具体地,在存在多层嵌套界面的情况下,各层界面对应的处理逻辑执行如下处理,直至末端界面对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑完成处理:
根据界面消息的内容,确定该界面消息对应的控件节点;
如果控件节点为第一控件节点,则调用与该第一控件节点对应的界面处理逻辑接口,将界面消息提供给下一层界面对应的界面处理逻辑进行处理;
如果控件节点为第二控件节点,则调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
通过本发明实施例提供的消息处理方法,支持多层界面之间的松融合的状态,从而方便于对各层界面的界面引擎进行独立开发,实现嵌入界面的灵活定制。并且在整个消息的传递和处理的过程中,不涉及多线程间的协调同步的问题,全部的界面可以通过一个主UI线程和多层控件树来进行管理,各层界面处理所涉及的数据、变量等没有跨线程调用问题,对各个界面的界面处理逻辑不需做多线程兼容,避免了由于多线程的协调同步而带来的耗时或者卡顿等问题。
实施例二
如图6所示,其为本发明实施例的消息处理装置的结构示意图之一,该装置同样基于实施例一中的多层界面嵌套以及多层控件树的结构。该装置包括:
消息获取模块11,用于获取界面消息。如实施例一中所介绍的,获取界面消息的处理过程可以在UI线程中执行,因此,该消息获取模块11 可以是UI线程中运行的程序模块,也可以控制或者出发UI线程执行相应的处理的程序模块。具体地,UI线程从消息队列中读取IO事件消息,然后将该IO事件消息进行消息转换,生成界面消息。其中,IO事件消息和界面消息中携带的窗口句柄和/或IO事件发生的坐标信息,窗口句柄和 /或坐标信息可以用于在后续界面处理中,确定针对的控件。
消息处理模块12,用于根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。上述的消息处理模块12所涉及的处理可以由UI线程发起或者执行,因此,可以是UI线程中运行的程序模块,也可以控制或者出发 UI线程执行相应的处理的程序模块。
具体地,根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑可以包括:
在UI线程进行消息分发的过程中,调用第一层界面对应的窗口过程函数,将界面消息提供给第一层界面对应的界面处理逻辑进行处理,或者,调用第一层界面中的第一控件节点对应的窗口过程函数,在该窗口过程函数中,将界面消息提供给第二层界面对应的界面处理逻辑进行处理,
然后,各层界面对应的处理逻辑执行如下处理,直至末端界面对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑完成处理:
根据界面消息的内容,确定该界面消息对应的控件节点;
如果控件节点为第一控件节点,则调用与该第一控件节点对应的界面处理逻辑接口,将界面消息提供给下一层界面对应的界面处理逻辑进行处理;
如果控件节点为第二控件节点,则调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
另外,在UI线程进行消息分发的过程中,如果界面消息中携带的窗口句柄指向第一层界面中的第二控件节点(单一控件对应的控件节点),则可以调用该第二控件节点对应的窗口过程函数,在该窗口过程函数中,调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
本实施例的各个功能模块的详细功能说明以及技术效果等内容在前述实施例中已经进行了充分描述,其内容仍然适用于本实施例,在此不再赘述。
实施例三
如图7所示,其为本发明实施例的消息处理方法的流程示意图,该方法包括:
S201:获取多层嵌套界面的界面消息。该步骤可以由UI线程来执行。
S202:获取对应于多层嵌套界面的控件树。该步骤可以由UI线程以及各层界面对应的界面处理逻辑来执行,具体地,控件树可以存储于操作***的指定区域,UI线程以及各层界面对应的界面处理逻辑可以从该区域读取控件树的相关信息。
S203:根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。该步骤可以由各层界面对应的界面处理逻辑来执行,各个界面处理逻辑根据控件树中的路径关系,对界面消息进行转发处理。
本实施例的各个步骤的详细处理说明以及技术效果等内容在前述实施例中已经进行了充分描述,其内容仍然适用于本实施例,在此不再赘述。
实施例四
如图8所示,其为本发明实施例的消息处理装置的结构示意图之二。
消息获取模块21,用于获取多层嵌套界面的界面消息;
控件树获取模块22,用于获取对应于多层嵌套界面的控件树
消息处理模块23,用于根据多层的控件树,将界面消息逐层路由至多层界面的末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
本实施例的各个功能模块的详细功能说明以及技术效果等内容在前述实施例中已经进行了充分描述,其内容仍然适用于本实施例,在此不再赘述。
实施例五
前面实施例描述了本发明实施例的消息处理方法以及装置的具体实施例,上述的方法以及装置的功能可借助一种电子设备实现完成,如图9 所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器 110和处理器120。
存储器110,用于存储程序。
除上述程序之外,存储器110还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器110可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器120,耦合至存储器110,用于执行存储器110中的程序,以用于:
实现多层嵌套界面,多层嵌套界面分别对应于多层的控件树,
在末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,
下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点,
并基于上述嵌套界面和控件树的结构,执行如下处理:
获取界面消息;
根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
进一步地,根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑可以包括:
在UI线程进行消息分发的过程中,调用第一层界面对应的窗口过程函数,将界面消息提供给第一层界面对应的界面处理逻辑进行处理,或者,调用第一层界面中的第一控件节点对应的窗口过程函数,在该窗口过程函数中,将界面消息提供给第二层界面对应的界面处理逻辑进行处理,
然后,各层界面对应的处理逻辑执行如下处理,直至末端界面对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑完成处理:
根据界面消息的内容,确定该界面消息对应的控件节点;
如果控件节点为第一控件节点,则调用与该第一控件节点对应的界面处理逻辑接口,将界面消息提供给下一层界面对应的界面处理逻辑进行处理;
如果控件节点为第二控件节点,则调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
进一步地,在UI线程进行消息分发的过程中,如果界面消息中携带的窗口句柄指向第一层界面中的第二控件节点,则调用该第二控件节点对应的窗口过程函数,在该窗口过程函数中,调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
进一步地,根据界面消息的内容,确定该界面消息对应的控件节点可以包括:
根据界面消息中携带的窗口句柄和/或IO事件发生的坐标信息,确定该界面消息对应的控件节点。
此外,前述实施例中的其他处理也可以以程序的形式存储于存储器 110中并被处理器120读取执行。详细的处理过程以及技术效果在前述实施例中已经进行详细说明,其同样适用于本实施例,在此不再赘述。
进一步,如图9所示,电子设备还可以包括:通信组件130、电源组件140、音频组件150、显示器160等其它组件。图9中仅示意性给出部分组件,并不意味着电子设备只包括图9所示组件。
作为另外一种实施方式,上述的处理器120,耦合至存储器110,用于执行存储器110中的程序,以用于:
获取多层嵌套界面的界面消息;
获取对应于多层嵌套界面的控件树;
根据多层的控件树,将界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。通信组件130 被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件130经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,通信组件130还包括近场通信(NFC)模块,以促进短程通信。例如,在 NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件140,为电子设备的各种组件提供电力。电源组件140可以包括电源管理***,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件150被配置为输出和/或输入音频信号。例如,音频组件150 包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器110或经由通信组件130发送。在一些实施例中,音频组件150还包括一个扬声器,用于输出音频信号。
显示器160包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
进一步地,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有当被处理器执行时使得处理器执行实施例一的方法的程序指令。
进一步地,本发明实施例还提供了另一种计算机可读存储介质,计算机可读存储介质存储有当被处理器执行时使得处理器执行实施例三的方法的程序指令。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种消息处理方法,其特征在于,
存在多层嵌套界面,多层嵌套界面分别对应于多层的控件树,
在所述多层嵌套界面的末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,
下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点,
所述方法包括:
获取界面消息;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑包括:
在UI线程进行消息分发(DispatchMessage)的过程中,调用第一层界面对应的窗口过程函数,将所述界面消息提供给第一层界面对应的界面处理逻辑进行处理,或者,调用第一层界面中的第一控件节点对应的窗口过程函数,在该窗口过程函数中,将所述界面消息提供给第二层界面对应的界面处理逻辑进行处理,
然后,各层界面对应的处理逻辑执行如下处理,直至末端界面对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑完成处理:
根据界面消息的内容,确定该界面消息对应的控件节点;
如果所述控件节点为第一控件节点,则调用与该第一控件节点对应的界面处理逻辑接口,将所述界面消息提供给下一层界面对应的界面处理逻辑进行处理;
如果所述控件节点为第二控件节点,则调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
3.根据权利要求2所述的方法,其特征在于,还包括:
在UI线程进行消息分发(DispatchMessage)的过程中,如果所述界面消息中携带的窗口句柄指向第一层界面中的第二控件节点,则调用该第二控件节点对应的窗口过程函数,在该窗口过程函数中,调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
4.根据权利要求2所述的方法,其特征在于,所述根据界面消息的内容,确定该界面消息对应的控件节点包括:
根据所述界面消息中携带的窗口句柄和/或IO事件发生的坐标信息,确定该界面消息对应的控件节点。
5.根据权利要求1所述的方法,其特征在于,所述获取界面消息包括:
UI线程从消息队列中读取IO事件消息;
UI线程将该IO事件消息进行消息转换,生成界面消息。
6.一种消息处理装置,其特征在于,该装置涉及多层嵌套界面,多层嵌套界面分别对应于多层的控件树,
在末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,
下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点,
所述装置包括:
消息获取模块,用于获取界面消息;
消息处理模块,用于根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
7.根据权利要求6所述的装置,其特征在于,所述根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑包括:
在UI线程进行消息分发的过程中,调用第一层界面对应的窗口过程函数,将所述界面消息提供给第一层界面对应的界面处理逻辑进行处理,或者,调用第一层界面中的第一控件节点对应的窗口过程函数,在该窗口过程函数中,将所述界面消息提供给第二层界面对应的界面处理逻辑进行处理,
然后,各层界面对应的处理逻辑执行如下处理,直至末端界面对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑完成处理:
根据界面消息的内容,确定该界面消息对应的控件节点;
如果所述控件节点为第一控件节点,则调用与该第一控件节点对应的界面处理逻辑接口,将所述界面消息提供给下一层界面对应的界面处理逻辑进行处理;
如果所述控件节点为第二控件节点,则调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
8.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
实现多层嵌套界面,多层嵌套界面分别对应于多层的控件树,
在末端界面以外的任意一层界面对应的控件树中,包括嵌入到当前层界面中的下一层界面对应的第一控件节点和处于当前层界面中的单一控件对应的第二控件节点;在末端界面中,包括处于当前层界面中的单一控件对应的第二控件节点,
下一层界面对应的控件树的根节点的父节点为上一层界面中对应的第一控件节点,
并基于上述嵌套界面和控件树的结构,执行如下处理:
获取界面消息;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
9.根据权利要求8所述的电子设备,其特征在于,所述根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑包括:
在UI线程进行消息分发的过程中,调用第一层界面对应的窗口过程函数,将所述界面消息提供给第一层界面对应的界面处理逻辑进行处理,或者,调用第一层界面中的第一控件节点对应的窗口过程函数,在该窗口过程函数中,将所述界面消息提供给第二层界面对应的界面处理逻辑进行处理,
然后,各层界面对应的处理逻辑执行如下处理,直至末端界面对应的界面处理逻辑或者任意一层界面中单一控件对应的界面处理逻辑完成处理:
根据界面消息的内容,确定该界面消息对应的控件节点;
如果所述控件节点为第一控件节点,则调用与该第一控件节点对应的界面处理逻辑接口,将所述界面消息提供给下一层界面对应的界面处理逻辑进行处理;
如果所述控件节点为第二控件节点,则调用与该第二控件节点对应的单一控件的界面处理逻辑进行处理。
10.一种消息处理方法,其特征在于,包括:获取多层嵌套界面的界面消息;
获取对应于所述多层嵌套界面的控件树;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
11.一种消息处理装置,其特征在于,包括:
消息获取模块,用于获取多层嵌套界面的界面消息;
控件树获取模块,用于获取对应于所述多层嵌套界面的控件树
消息处理模块,用于根据所述多层的控件树,将所述界面消息逐层路由至所述多层界面的末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
12.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,耦合至所述存储器,用于执行所述程序,以用于:
获取多层嵌套界面的界面消息;
获取对应于所述多层嵌套界面的控件树;
根据所述多层的控件树,将所述界面消息逐层路由至末端界面对应的界面处理逻辑或任意一层界面中单一控件对应的界面处理逻辑。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有当被处理器执行时使得处理器执行权利要求1至5中的任一项所述的方法的程序指令。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有当被处理器执行时使得处理器执行权利要求10所述的方法的程序指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810374487.8A CN110399186B (zh) | 2018-04-24 | 2018-04-24 | 消息处理方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810374487.8A CN110399186B (zh) | 2018-04-24 | 2018-04-24 | 消息处理方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399186A true CN110399186A (zh) | 2019-11-01 |
CN110399186B CN110399186B (zh) | 2022-08-26 |
Family
ID=68321998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810374487.8A Active CN110399186B (zh) | 2018-04-24 | 2018-04-24 | 消息处理方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399186B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112188224A (zh) * | 2020-09-28 | 2021-01-05 | 广州华多网络科技有限公司 | 界面消息流控制方法、装置、设备及存储介质 |
CN114327325A (zh) * | 2021-04-27 | 2022-04-12 | 北京仁光科技有限公司 | 多窗口处理方法、***、可读存储介质和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043705A (zh) * | 2009-10-19 | 2011-05-04 | 阿里巴巴集团控股有限公司 | 一种统计输入行为的方法及装置 |
CN103135892A (zh) * | 2013-03-04 | 2013-06-05 | 无锡德思普科技有限公司 | 一种图形用户界面的控件管理方法 |
CN103677518A (zh) * | 2013-12-02 | 2014-03-26 | 北京像素软件科技股份有限公司 | 一种移动终端上的触摸消息响应方法和装置 |
CN105653755A (zh) * | 2015-07-21 | 2016-06-08 | 上海趣驾信息科技有限公司 | 一种基于sge图形库开发的汽车导航界面设计工具 |
-
2018
- 2018-04-24 CN CN201810374487.8A patent/CN110399186B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043705A (zh) * | 2009-10-19 | 2011-05-04 | 阿里巴巴集团控股有限公司 | 一种统计输入行为的方法及装置 |
CN103135892A (zh) * | 2013-03-04 | 2013-06-05 | 无锡德思普科技有限公司 | 一种图形用户界面的控件管理方法 |
CN103677518A (zh) * | 2013-12-02 | 2014-03-26 | 北京像素软件科技股份有限公司 | 一种移动终端上的触摸消息响应方法和装置 |
CN105653755A (zh) * | 2015-07-21 | 2016-06-08 | 上海趣驾信息科技有限公司 | 一种基于sge图形库开发的汽车导航界面设计工具 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112188224A (zh) * | 2020-09-28 | 2021-01-05 | 广州华多网络科技有限公司 | 界面消息流控制方法、装置、设备及存储介质 |
CN114327325A (zh) * | 2021-04-27 | 2022-04-12 | 北京仁光科技有限公司 | 多窗口处理方法、***、可读存储介质和电子设备 |
CN114327325B (zh) * | 2021-04-27 | 2022-06-07 | 北京仁光科技有限公司 | 多窗口处理方法、***、可读存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110399186B (zh) | 2022-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106716954B (zh) | 电话呼叫期间的实时共享方法、***和计算机可读存储器 | |
CN108205467A (zh) | 重复动作的智能辅助 | |
US10620898B2 (en) | Method to exchange visual elements and populate individual associated displays with interactive content | |
CN109313747A (zh) | 用于会议空间管理和交互的设备、方法和图形用户界面 | |
CN107077273A (zh) | 小屏幕显示器的应用命令控件 | |
CN108476267B (zh) | 电子白板、记录介质和信息处理方法 | |
CN104364819B (zh) | 增强的电子通信草稿管理 | |
CN106164904A (zh) | 客户端侧个人语音web导航 | |
CN109155025A (zh) | 跨多平台的自动任务流管理 | |
CN102868830A (zh) | 一种移动终端主题的切换控制方法及装置 | |
CN105190604A (zh) | 在协作创作环境中跟踪改变 | |
CN103546629A (zh) | 移动终端及其控制方法 | |
CN104854552A (zh) | 选择性协调的音频播放器*** | |
CN105765518A (zh) | 用于共享内容的装置和方法 | |
CN104583909B (zh) | 经由输入设备的反馈以及涂写识别 | |
CN105917363A (zh) | 访问和配置会议属性 | |
US20120185790A1 (en) | Method for managing content in a plurality of devices using a display apparatus | |
CN110069203A (zh) | 提供图形用户界面的方法和装置 | |
CN104020990B (zh) | 日期选择控件显示方法及装置 | |
CN104471566A (zh) | 与作为应用的文档交互 | |
CN108370396A (zh) | 电子装置及电子装置的通知显示方法 | |
CN109634494A (zh) | 一种图片处理方法及终端设备 | |
CN103513977B (zh) | 一种群成员列表的展示方法和装置 | |
CN113038160A (zh) | 一种显示设备及音视频数据的播放方法 | |
CN110399186A (zh) | 消息处理方法、装置、电子设备及计算机可读存储介质 |
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 |