首页> 中国专利> 建立主面板界面的方法、系统,主面板和主面板界面系统

建立主面板界面的方法、系统,主面板和主面板界面系统

摘要

本发明提供了建立主面板界面的方法、系统,以及主面板和主面板界面系统。该方法包括以下步骤:当主面板启动时,当主面板启动时,主面板获取主面板界面的配置文件,其中配置文件至少包括主面板界面的名字和主面板界面的各个子面板的配置信息;主面板至少根据配置信息配置主面板界面,其中主面板界面包括主面板和各个子面板。采用该方法可以消除主面板和子面板之间的耦合性,从而可以方便主面板界面的维护、更新和管理。

著录项

  • 公开/公告号CN102455905A

    专利类型发明专利

  • 公开/公告日2012-05-16

    原文格式PDF

  • 申请/专利权人 腾讯科技(深圳)有限公司;

    申请/专利号CN201010526548.1

  • 发明设计人 杜修杏;

    申请日2010-10-19

  • 分类号G06F9/44;

  • 代理机构北京德琦知识产权代理有限公司;

  • 代理人郭曼

  • 地址 518044 广东省深圳市福田区振兴路赛格科技园2栋东403室

  • 入库时间 2023-12-18 05:08:35

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-11-26

    授权

    授权

  • 2012-06-27

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20101019

    实质审查的生效

  • 2012-05-16

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体涉及一种建立主面板界面的方法、系统,一种主面板和主面板界面系统。

背景技术

随着计算机技术的发展,出现了各种各样的基于计算机技术的客户端。客户端一般包括一个主面板(MainFrame),该主面板中包括子面板(Panel)。由主面板以及主面板中的子面板构成了主面板界面。通过主面板界面,客户端用户可以对客户端进行操作而客户端也可以为用户提供服务。并且,随着网络技术的发展,出现了各种各样的网络通讯(比如网络即时通,从而出现了各种网络通讯客户端。这些网络通讯拥有众多的用户,并且广泛地应用于休闲娱乐和工作中。渐渐地,用户对网络通讯的要求越来越高,既要求较高的易用性,稳定性和安全性,又要求网络通讯可以不断地更新。因此,对网络通讯客户端要求也就越来越高,需要客户端能够支持网络通讯的更新。

一般地,可以通过更新客户端的主面板界面来实现网络通讯的更新。具体地,可以通过更新主面板界面中的子面板来实现主面板界面的更新。然而,现有的建立主面板界面的建立方法导致对子面板的更新特别复杂。

现有的建立方法主要包括:

在主面板中包含各个子面板对应的引用代码,以便于主面板根据引用代码建立各个子面板实例;

主面板建立子面板实例后,必须在主面板中增加对应的成员变量以保存子面板对象;并且

主面板根据不同的管理逻辑显示不同的子面板。

由以上的建立方法可以看出,主面板负责子面板的生命周期管理(包括建立和销毁)和展示管理(显示和隐藏控制,调整子面板大小等),是一种面向对象的建立方法,而这种建立方法存在模块间耦合性大的缺点。例如,主面板和子面板往往处于两个不同的模块中,当子面板有修改时,主面板则可能需要相应修改,否则主面板将不能调用该子面板。因此主面板和子面板之间耦合性大,从而导致主面板界面的维护和更新比较复杂。

并且,该建立方法在建立主面板界面时重复操作多,且随着子面板数量的增加,建立主面板界面的重复操作就更多,进一步导致对主面板界面的维护和更新比较复杂。例如,假设主面板中有PanelA,PanelB和PanelC三个不同子面板,则在建立过程中至少需要对应以下3套显示管理逻辑来实现不同子面板的显示:

1)显示PanelA的具体逻辑是:调用PanelA的显示方法,并调用PanelB和PanelC的隐藏方法;

2)显示PanelB的具体逻辑是:调用PanelB的显示方法,并调用PanelA和PanelC的隐藏方法;

3)显示PanelC的具体逻辑是:调用PanelC的显示方法,并调用PanelA和PanelB的隐藏方法。

由此可见,现有的建立方法需要在建立主面板界面时详细定义主面板的各个子面板的显示管理逻辑,建立的过程比较繁琐。尤其当需要更新主面板界面时,比如增加第四子面板PanelD时,则需要对主面板做较多的修改,包括:在以上步骤1)到3)的显示管理逻辑中分别增加对PanelD隐藏方法的调用,并且增加PanelD的显示管理逻辑,即调用PanelD的显示方法,并调用PanelA、PanelB和PanelC的隐藏方法。因此,主面板界面的维护和更新比较复杂。

发明内容

有鉴于此,本发明的主要目的是提供一种建立主面板界面的方法、系统, 以及一种主面板和主面板界面系统,可以方便主面板界面的维护和更新。

根据本发明实施例,一种建立主面板界面的方法包括:当主面板启动时,主面板获取主面板界面的配置文件,其中配置文件至少包括主面板界面的名字和主面板界面的各个子面板的配置信息;主面板至少根据配置信息配置主面板界面,其中主面板界面包括主面板和各个子面板。

根据本发明实施例,一种主面板包括:

建立模块,用于当主面板启动时,获取主面板界面的配置文件,其中配置文件包括主面板界面的名字和主面板界面的各个子面板的配置信息;并至少根据配置信息配置主面板界面,其中主面板界面至少包括主面板和各个子面板。

根据本发明实施例,一种建立主面板界面的系统包括:

配置文件模块,用于存储主面板界面的配置文件,其中配置文件至少包括主面板界面的名字和主面板界面的各个子面板的配置信息;

上述的主面板,用于当主面板启动时,从配置文件模块获取配置文件,并至少根据配置信息配置主面板界面,其中主面板界面包括主面板和各个子面板。

根据本发明实施例,一种主面板界面系统包括:主面板,主面板接口,位于主面板中的至少一个子面板和子面板接口。其中,主面板,用于获取主面板界面的配置文件,其中配置文件至少包括主面板界面的名字和至少一个子面板的配置信息,根据配置信息将至少一个子面板配置于主面板中以构成主面板界面;主面板接口,用于与子面板接口通信,根据子面板的标识ID调用与所述ID对应的子面板实例的显示方法或隐藏方法;子面板接口,用于与所述主面板接口通信,根据主面板接口的调用显示或隐藏与ID对应的子面板。

由此可以见,本发明实施例将子面板的配置信息存在配置文件中,并由主面板获取配置文件并根据配置文件中的配置信息配置主面板界面。因此,当需要更新或维护主面板界面时,可以对子面板和/或配置文件进行更新或维护,并由主面板获取更新后的配置文件并根据更新后的配置文件重新配置主面板界面,而无需对主面板本身进行更新。由此可以消除主面板和子面板 之间的耦合性,使得主面板界面的维护或更新更加方便。

附图说明

图1为根据本发明实施例的一种建立主面板界面的方法;

图2为根据本发明实施例中对主面板界面的子面板的进行显示管理的流程图;

图3为根据图1所示方法建立的一种主面板界面系统;

图4根据本发明实施例的一种更新主面板界面的方法;

图5为根据本发明实施例的一种建立主面板界面的系统。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。

现有技术中,建立主面板界面的方法存在模块间耦合性大的缺点,从而导致主面板界面的维护和更新复杂。为了解决这个问题,本发明实施例提供了一种建立主面板界面的方法,以解除模块间的耦合,从而方便主面板界面的维护和更新。

图1为本发明实施例的一种建立主面板界面的方法,如果图1所示,该方法包括:

步骤101:当主面板启动时,主面板获取主面板界面的配置文件。该配置文件至少包括主面板界面的名字和与该名字对应的主面板界面的各个子面板的配置信息。

一个配置文件中可以包括一个主面板界面的配置也可以包括多个主面板界面的配置,不同主面板界面的配置之间通过不同主面板界面的名字字段的内容来作为唯一标识。

步骤102:主面板至少根据配置文件中的配置信息配置主面板界面。其中,主面板界面包括主面板和与该名字对应的主面板界面的各个子面板。

由此可见,本发明实施例引入了配置文件,该配置文件指示主面板如何配 置主面板界面,尤其是如何配置主面板界面的子面板。主面板启动时,可以获取配置文件,根据配置文件中的主面板界面的名字确定获取的配置文件为待建立的主面板界面的配置文件,读取主面板界面的每个子面板的配置信息,并根据主面板界面的每个子面板的配置信息配置主面板界面。因此,每当需要更新主面板界面时,只需要修改配置文件以及相应的子面板;然后,主面板根据修改后的配置文件和子面板重新配置主面板界面,而无需开发人员对主面板进行修改。根据本发明实施例,主面板模块和子面板模块之间的耦合性消除了,从而可以更加灵活、方便地建立主面板界面,并且可以方便地更新和维护主面板界面。

根据本发明实施例,步骤101中的子面板的配置信息包括子面板的标识ID,子面板的类标识Clsid以及指示子面板的功能配置的动态链接库DLL名字。较佳地,子面板的ID可以是子面板名称,一般为字符串格式;配置文件可以采用xml格式的描述方式。

相应地,步骤102中,主面板至少根据配置文件中的配置信息配置主面板界面包括:

主面板根据配置文件中的主面板界面的名字确定获取的配置文件为待建立的主面板界面的配置文件,并读取与该名字对应的主面板界面的每个子面板的配置信息;

主面板根据每个子面板的配置信息中的子面板ID查找子面板的Clsid和DLL名字,根据子面板的DLL名字加载子面板的动态链接库DLL,然后根据Clsid和动态链接库DLL建立子面板实例,并根据自身的大小调整子面板在主面板界面中的位置。

为了更清楚地说明图1所示的方法,以下以即时通信(IM,Instant Messaging)客户端为例说明图1所示的方法,并假设一个配置文件中存放多个主面板界面的配置。例如,IM客户端的主面板界面的配置文件中可以包括多个主面板界面的配置,其中包括待建立的主面板界面的配置,例如待建立的IM 客户端的主面板界面的名字可以为:<extension-point name=″MainFrameExtPoint″>。该IM客户端主面板界面的配置中可以通过extension项来定义各个子面板的配置信息。例如,在本实施例中,主面板包括三个子面板,则IM客户端主面板界面的配置可以包括三个extension项,每个extension项对应一个子面板的配置信息。一般地,三个extension项的顺序就是主面板界面上三个子面板的顺序,其中第一个子面板同时也默认为当前显示的子面板。

第一个子面板的配置信息(即第一个extension项)可以为“<extension id=″ContactPanel″clsid=″B1E61A60-0AC7-469a-96D6-5EDABBAB04A2″dllname=″Contact.dll″/>”,其定义了一个联系人子面板(ContactPanel),并且该子面板的ID设为子面板名称ContactPanel,给出了联系人子面板的clsid以及dllname。dllname的内容是动态链接库名字Contact.dll,这样就确定了联系人面板所在的文件路径,主面板就会进一步定位到这个dll文件,并加载这个dll文件。其中的clsid是在开发联系人子面板的时候制定的一个标志值,在微软Windows系统提供的COM开发模型中,根据clsid就可以从一个dll文件中创建出一个对象的实例。因此,在设置配置文件时,只要保证配置文件中clsid的内容与代码开发时制定的标志值一致,就能够创建出联系人子面板的实例。

同理,以上配置文件中的第二和第三子面板的配置信息(即第二和第三extension项)分别定义了一个群组子面板(GroupPanel)和一个最近联系人子面板(RecentPanel)。

当主面板获取配置文件后,则可以根据第一条配置信息中的ID,clsid以及Contact.dll建立出一个联系人子面板实例。同理,主面板进一步根据另外两条配置信息建立出群组子面板实例和最近联系人子面板实例。

由于在主面板的设计中,子面板的布局是填充式的,即子面板的宽度和高度的变化总是保持与主面板一致,所以在对子面板的位置控制上,主面板只需要根据自身的大小直接调整子面板的位置。因此,在建立以上三个子面板实例 后,主面板可以根据自身的大小分别调整这三个子面板的位置,将这三个子面板分别放置于主面板中。

至此,主面板配置了所有的子面板,从而建立了IM客户端的主面板界面。

根据本发明实施例,该方法还包括:

步骤103:每当建立一个子面板实例后或建立所有子面板实例后,主面板保存子面板ID和子面板实例之间的映射关系。

根据本发明实施例,该方法还可以为主面板设置一个主面板接口IMainFrame,并且为所有的子面板设置一个子面板接口Ipanel,主面板和子面板之间通过主面板接口和子面板接口进行通信。由于所有的子面板都通过统一的子面板接口与主面板接口进行通信,因此,主面板可以使用统一的子面板接口类型来保存各个子面板实例。进一步地,由于每个子面板具有一个唯一标识ID,主面板保存的映射关系可以是ID到子面板实例的索引表。

根据本发明实施例,建立索引表的方法可以为:

首先定义一个索引列表的类型:typedefmap<CComBSTR,CComPtr<IPanel>>CPanelMap;然后定一个索引列表:CPanelMap m_mapPanel。

假设建立的主面板界面中有A,B和C三个子面板,则索引表m_mapPanel可以如表1所示:

  ID值  Panel对象  “PanelA”  指向PanelA的实例  “PanelB”  指向PanelB的实例  “PanelC”  指向PanelC的实例

表1子面板ID和子面板实例的索引表

仍然以IM客户端为例,表1中的PanelA、PanelB和PanelC分别为:联系人子面板(ContactPanel)、群组子面板(GroupPanel)和最近联系人子面板(RecentPanel)。

根据本发明实施例,当根据图1所示的方法建立一个主面板界面后,则可 以对该主面板界面中子面板的进行显示管理。图2为本发明实施例中对主面板界面的子面板的进行显示管理的流程图。如图2所示,显示管理包括:

步骤201:建立主面板界面后,主面板确定当前待显示的子面板,并在主面板界面中显示确定的子面板。

在建立主面板界面后,主面板可以根据预设的缺省子面板ID确定当前待显示的子面板,即确定该缺省子面板ID对应的子面板为当前待显示的子面板,从而显示与缺省子面板ID对应的子面板而隐藏其他子面板。具体地,可以确定与配置文件的第一条配置信息对应的第一子面板为当前待显示的子面板,调用第一子面板的显示方法,并调用其他配置信息对应的其他子面板的隐藏方法。

步骤202:主面板根据用户的切换指令切换当前显示的子面板。

以IM客户端为例,假设当前显示的子面板为Panel A,而IM客户端用户需要使用Panel B的功能,则用户点击IM客户端的主面板界面中的Panel B按钮(即发出一个切换指令),从而触发Panel B通过子面板接口Ipanel将Panel B的显示事件通知给主面板接口IMainFrame。主面板通过IMainFrame获知需要执行显示事件,并获知该显示事件由Panel B发起,因此调用Panel B的显示方法将Panel B显示在主面板界面中。对于Panel A和其他子面板,由于没有与它们对应的事件,则主面板调用Panel A的隐藏方法将Panel A隐藏,而其他的子面板(比如Panel C)则保存隐藏状态。

在本步骤中,主面板先获得Panel B的ID才能获知显示事件由Panel B发起。具体地,主面板获得Panel B的ID后,遍历存储在主面板中的映射关系(如表1所示的索引表m_mapPanel),找到与该ID对应的Panel实例为Panel B实例,然后调用Panel B实例的显示方法。对于映射关系中与ID不匹配的Panel实例(比如Panel A和C实例),主面板调用Panel A实例的隐藏方法,并保持Panel C实例的隐藏状态。

由此可见,本发明实施例的建立主面板界面的方法使得对主面板界面的显示管理比较方便,可以避免重复操作。比如,在进行子面板切换时,现有技术 需要针对每个子面板单独开发一套切换逻辑,而本发明实施例可以综合为一个切换逻辑:确认当前需要切换到的子面板ID后,遍历映射关系,找到与该ID对应的Panel实例,并对该Panel实例调用显示方法,而对与ID不对应的Panel实例调用隐藏方法。从而可以避免重复操作,简化主面板界面的显示管理。

图3为根据图1所示方法建立的一种主面板界面系统。如图3所示,主面板界面系统包括:主面板(CMainFrame)301、主面板接口(IMainFrame)302、位于主面板中的至少一个子面板(Panel)303和子面板接口(IPanel)304。

主面板301用于获取主面板界面的配置文件,其中配置文件至少包括主面板界面的名字和与该名字对应的主面板界面的至少一个子面板的配置信息,并根据配置文件中的各个子面板303的配置信息将至少一个子面板303配置于主面板301中以构成主面板界面;

主面板接口302,用于与子面板接口304通信,根据子面板304的标识ID调用与ID对应的子面板实例的显示方法或隐藏方法;

子面板接口304,用于与所述主面板接口302通信,根据主面板接口302的调用显示或隐藏与ID对应的子面板。

在图3所示的主面板界面系统中,主面板301与子面板303之间所有的调用都是通过接口方法来实现的,比如通过主面板接口302和子面板接口304来实现。

根据本发明实施例,在定义主面板板301的IMainFrame 302时,主要为IMainFrame 302定义一个OnPanelEvent方法。该OnPanelEvent方法可以定义一个BSTR bsPanelID参数,用于根据ID区分是那个Panel的事件;并定义一个DWORD dwEventID参数,用于并指明具体事件的ID。

通过以上定义的IMainFrame,子面板可以通过OnPanelEvent方法通知主面板有哪些事件被触发。比如,步骤202的切换过程中,用户点击了PanelB按钮时,PanelB调用主面板的OnPanelEvent方法,将PanelB的ID赋值给bsPanelID参数,并且dwEventID事件ID取值为显示事件。至此,主面板根 据bsPanelID和dwEventID将当前显示子面板切换为PanelB。

根据本发明实施例,该OnPanelEvent方法可以进一步定义一个预留参数,用于定义一些附加数据以实现其他附加功能,比如可以定义ITXData*pData。

根据本发明实施例,可以定义子面板303的IPanel 304,主面板301的所有子面板303都需要继承于IPanel 304。在定义IPanel 304时,主要为IPanel304定义一个Create(IMainFrame*pParent,ITXData*pData)方法,用于子面板与主面板的通信。例如,Create方法中的IMainFrame*pParent参数可以用于指明IPanel的容器为主界面并且让子面板根据“IMainFrame*pParent”与主面板通信。而ITXData*pData为预留参数,用于定义一些附加数据以实现其他附加功能。并且,还为IPanel 304定义一个Show(BOOL bShow)方法,当bShow为TRUE时,Panel显示,为FALSE时隐藏,从而可以管理子面板的显示。根据本发明实施例,还可以为IPanel 304定义一个SetRect(int nLeft,int nTop,int nRight,int nBottom)方法,根据该方法中的四参数可确定一个矩形区域,从而可以对子面板的大小位置进行调整。

通过以上定义的Ipanel接口,各个子面板在主面板内部都可以使用统一的IPanel类型进行保存,从而解决了现有技术中模块耦合性大的问题。

在根据图1所示方法建立主面板界面后,还可以对主面板界面进行更新。图4根据本发明实施例的一种更新主面板界面的方法。如图4所示,该方法包括:

步骤401:更新主面板界面的配置文件。

本步骤中,可以根据运营商或开发商的需求,对配置文件进行更新。

步骤402:主面板获取更新的配置文件,并根据更新的配置文件配置主面板界面。

本步骤中,主面板可以定时获取更新的配置文件,或者根据用户指令获取更新的配置文件。

可以理解,主面板界面的更新可以包括添加、删除或修改子面板。

为了使本发明的技术方案更加清楚,以IM客户端为例对添加子面板的过程进行说明。假设需要在IM客户端中添加微博子面板,以实现基于IM客户端的微博应用。

首先,在配置文件中添加微博子面板(WBlogPanel)的配置信息。具体地,添加的配置信息中可以包括:微博子面板的ID(WBlogPanel)、类标识clsid以及动态链接库名字WBlog.dll。例如,可以配置文件中添加如下的配置信息:<extension id=″WBlogPanel″clsid=″378A61FF-0A20-4855-A307-7CDE94714F0A″dllname=″WBlog.dll″/>。

其次,主面板获取更新的配置文件,并根据其中的配置信息建立微博子面板实例,从而建立了一个包括4个子面板的主面板界面。更新后的主面板界面构成了图3所示的主面板界面系统。

进一步地,主面板可以更新其存储的ID和子面板实例的索引表,即主面板可以动态调整索引表。例如,主面板将表1更新为表2:

  ID值  Panel对象  “PanelA”  指向PanelA的实例  “PanelB”  指向PanelB的实例  “PanelC”  指向PanelC的实例  “PanelD”  指向PanelD的实例

表2子面板ID和子面板实例的索引表

其中,PanelA、PanelB和PanelC分别为:联系人子面板(ContactPanel)、群组子面板(GroupPanel)和最近联系人子面板(RecentPanel)。添加的PanelD为微博子面板(WBlogPanel)。

由此可见,采用图1所示的方法建立的主面板界面,当需要添加微博子面板时,只要在配置文件添加一条新的配置信息,而无需对主面板进行修改,从而可以很方便地实现主面板界面的扩展。也就是,微博子面板以类似插件 的方式加入到主面板中,可以消除主面板与微博子面板之间的耦合性。同理,当需要添加任何其他的子面板时,可以采用类似的更新方法。

根据本发明实施例,删除或修改子面板也可以先删除或修改配置文件中的配置信息,再由主面板获取更新后的配置文件并根据更新的配置文件重新配置主面板界面。

由此可见,本发明实施例在更新主面板界面时无需在主面板中更新子面板引用代码以及成员变量,且不用针对更新后的子面板一一修改子面板的显示管理逻辑。

图5为根据本发明实施例的一种建立主面板界面的系统。如图5所示,该系统主要包括:

配置文件模块501,用于存储主面板界面的配置文件,其中配置文件至少包括主面板界面的名字和主面板界面的各个子面板的配置信息;和

建立模块502,用于当主面板启动时,从配置文件模块501获取配置文件,并至少根据配置文件中的配置信息配置主面板界面,其中主面板界面包括主面板和配置文件中的子面板。

根据本发明实施例,每个子面板的配置信息包括子面板的标识ID,子面板的类标识Clsid以及指示子面板的功能配置的动态链接库DLL名字,则建立模块502用于根据配置文件中的主面板界面的名字确定获取的配置文件为待建立的主面板界面的配置文件,并读取主面板界面的每个子面板的配置信息;根据每个子面板的配置信息中的子面板ID查找子面板的Clsid和DLL名字,根据子面板的DLL名字加载子面板的动态链接库DLL,然后根据Clsid和动态链接库DLL建立子面板实例,并根据主面板的大小调整子面板在主面板界面中的位置。

根据本发明实施例,该系统还包括:

映射关系存储模块503,用于存储建立的子面板ID和子面板实例的映射关系。建立模块502还用于每当建立一个子面板实例后或建立所有子面板实例后, 将子面板ID和子面板实例的映射关系保存在映射关系存储模块503。

根据本发明实施例,该系统还包括:

更新模块504,用于当配置文件模块501中的配置文件更新后,触发建立模块502获取更新的配置文件并根据更新的配置文件重新配置主面板界面。

根据本发明实施例,该系统还包括:

显示管理模块505,用于当创建完所有子面板实例后,确定与配置文件的第一条配置信息对应的第一子面板为当前显示的子面板,调用第一子面板的显示方法,并调用其他配置信息对应的其他子面板的隐藏方法;和用于接收用户的子面板切换指令,根据切换指令确定主面板界面中待显示的子面板ID,在映射关系存储模块503的映射关系中查找待显示的子面板ID;对于与待显示的子面板ID对应的子面板实例,调用该子面板实例的显示方法,对于其他子面板实例,调用其隐藏方法。

本发明实施例还提出了一种主面板,其包括,建立模块502,用于当主面板启动时,获取主面板界面的配置文件,其中配置文件至少包括主面板界面的名字和主面板界面的各个子面板的配置信息;并至少根据配置文件中的配置信息配置主面板界面,其中主面板界面至少包括主面板和配置文件中的各个子面板。

上述仅仅是对本发明精神的展示,而不是限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号