1.本发明涉及一种用于在桌面上显示显示区域的方法,包括下述步骤:
[0002]-接收用于创建和显示有窗口显示区域的数据,
[0003]-基于为此接收的数据在分配来自预定窗口句柄组中的单义窗口句柄和不同于窗口句柄的单义显示标识符的情况下创建有窗口显示区域,
[0004]-存储有窗口显示区域的显示标识符到有窗口显示区域的分配,
[0005]-将有窗口显示区域的显示标识符存储在层级列表中的预定位置上,
[0006]-在桌面上显示有窗口显示区域,
[0007]-接收用于创建和显示无窗口显示区域的数据,
[0008]-基于为此接收的数据在分配不同于窗口句柄的单义显示标识符的情况下创建无窗口显示区域,
[0009]-存储无窗口显示区域的显示标识符到无窗口显示区域的分配,
[0010]-将无窗口显示区域的显示标识符存储在层级列表中的预定位置上,
[0011]-在桌面上显示无窗口显示区域。
背景技术:
[0012]
在edv(电子数据处理)领域中,“桌面”被称为图形用户界面的整个显示区域的最低、最后面或者说最后一层。文件形式的关闭文档和通常在窗口中打开的文档都位于桌面上。如果德语中没有使用术语“桌面”,则通常的同义词是“书桌”或“工作面”。
[0013]
操作系统、如微软windows必须具有用于访问操作系统功能以及在这些操作系统下获得运行的应用的手段。这些手段使操作系统及其应用可访问和可用,例如通过控制桌面上显示的、例如窗口中的显示区域。为了能够控制这种窗口或能够调用关于窗口的信息,必须为该窗口设置单义标识符。该单义标识符通常被称为“窗口句柄”。窗口句柄的最大数量是有限的,这取决于相应操作系统。
[0014]
在需要大量不同显示区域并且因此需要大量窗口的应用中,超过允许窗口句柄的最大数量会导致操作系统崩溃或至少导致不能生成新的窗口并且因此不能生成新的显示区域,从而可能无法再满足应用的要求。例如当在硬件在环应用中显示用于实时测量数据的测量数据仪器时,就会出现这样的问题。在此有时需要显示或至少提供大量不同的显示区域。实践表明,在微软windows下,有限的窗口句柄数量这样限制可视化和实验软件、如本技术人的产品“controldesk”的应用可能性,以至于软件本来的可能性无法得到充分利用。
[0015]
此外,“controldesk”是一种用于在计算机系统上可视化总线系统如can、lin、flexray和以太网的软件。尤其是在使用以太网时,在此可能会出现大量数据,这可能需要大量不同的显示区域。在controldesk中,可快速通过单次的拖放动作在多行仪器中紧凑地显示多种仿真参数、控制器参数和总线参数。在绘图仪中可观察正在进行的测量并与以前的记录进行比较。时间光标在此允许跳转到数据材料中的任意时间点。多个绘图仪在滚动时可在时间上彼此同步。绘图仪可切换到触发显示,以便例如能够像在示波器中那样更简
单地分析高频信号,例如用于评估系统的阶跃响应。总而言之,controldesk是一种极其强大的工具,其具有众多的功能和可能性,由于与之相关的可能数据量非常大,这进一步加剧了上述句柄数量有限的问题。
[0016]
例如在ep2034407a1中所描述的,在这种情况下一种可能的解决方案是将这些显示区域中的一些配置为无窗口的。无窗口显示区域是指这样的显示区域,其没有被分配自己的窗口句柄,而是为其提供一个所谓的容器或者说父窗口以及一个共同的窗口句柄。换句话说:设有一个窗口句柄的容器为大量无窗口显示区域提供了基础,且无需为每个新的显示区域消耗另外的窗口句柄。
[0017]
此外,de69220583t2描述了一种用于确定二维显示区域顺序的排序装置。该排序装置定义向前和向后的方向,从而在有窗口显示区域之间创建层级结构。根据向前或向后的方向可在显示区域之间进行“翻阅”。
[0018]
wo01/95041a1总体上描述了一种用于提供实时过程数据的用户界面,该用户界面具有开放的显示页面结构并将数据的提供和服务器特定的用户交互分开。
[0019]
无窗口显示区域和有窗口显示区域具有一个重要区别:有窗口显示区域被操作系统(如在微软windows中)相互隐藏,以便创建层级结构。在此一个有窗口显示区域的内容会被自动覆盖,一旦另一个有窗口显示区域在层级结构中位于更高的位置。具体而言:在层级结构中处于较高位置的有窗口显示区域重叠或覆盖显示区域。这至少适用于操作系统桌面的所有子窗口、即桌面的有窗口内容。所有直接在桌面上显示的内容、如背景图像、程序图标等都会被有窗口显示区域自动覆盖。
[0020]
无窗口显示区域则表现不同。它们直接显示在父窗口(也称为“容器”)上。在此仅显示的顺序定义层级结构。最后显示的显示区域对于浏览者而言出现在前景中。由于缺少直接分配的窗口句柄,这些显示区域不为操作系统所知。
[0021]
这表示,在布局上存在不通过窗口并且因此不通过窗口句柄代表的显示区域。有窗口显示区域和无窗口显示区域的混合操作将导致有窗口显示区域总是覆盖位于其下面的布局区域。因此,将无法在有窗口显示区域的前面显示无窗口显示区域。
技术实现要素:
[0022]
在此基础上,本发明的任务在于为有窗口显示区域和无窗口显示区域的混合操作提供一种高效的可能性。
[0023]
所述任务通过权利要求1的技术方案来解决。优选的扩展方案在从属权利要求中给出。
[0024]
因此,根据本发明提供一种用于在桌面上显示显示区域的方法,包括下述步骤:
[0025]-接收用于创建和显示有窗口显示区域的数据,
[0026]-基于为此接收的数据在分配来自预定窗口句柄组中的单义窗口句柄和不同于窗口句柄的单义显示标识符的情况下创建有窗口显示区域,
[0027]-存储有窗口显示区域的显示标识符到有窗口显示区域的分配,
[0028]-将有窗口显示区域的显示标识符存储在层级列表中的预定位置上,
[0029]-在桌面上显示有窗口显示区域,
[0030]-接收用于创建和显示无窗口显示区域的数据,
[0031]-基于为此接收的数据在分配不同于窗口句柄的单义显示标识符的情况下创建无窗口显示区域,
[0032]-存储无窗口显示区域的显示标识符到无窗口显示区域的分配,
[0033]-将无窗口显示区域的显示标识符存储在层级列表中的预定位置上,
[0034]-在桌面上显示无窗口显示区域,其中,如果在层级列表中无窗口显示区域的显示标识符的位置在层级方面位于有窗口显示区域的显示标识符的位置之前,则将无窗口显示区域显示在有窗口显示区域的前面,并且反之亦然。
[0035]
如果在本文中提到一个显示区域在桌面上显示在另一个显示区域的前面或后面,则这意味着,位于另一个显示区域前面的显示区域在两个显示区域的重叠区域中覆盖位于其下面的显示区域,从而只能看到前面的显示区域。在实践中这涉及显示区域在桌面上在垂直于桌面平面延伸的z方向上的位置,如果桌面平面在其侧通过x方向和y方向形成。显示区域的x或y坐标在下文中被称为“桌面上的位置”,而显示区域在其相对的z坐标方面的位置——根据通过列表给出的层级结构——在下文中被称为“桌面上的顺序”。桌面上的该顺序因此确定显示区域是位于另一个显示区域的前面还是后面以及就此而言由相应的显示区域——基于由其它显示区域的重叠——所显示的内容。
[0036]
因此,即使桌面也具有有窗口显示区域,本发明也可在桌面上显示无窗口显示区域。这以下述方式实现:附加于窗口句柄使用存储在层级列表中的显示标识符。这表示,如果在层级列表中无窗口显示区域的显示标识符的位置在层级方面位于有窗口显示区域的显示标识符的位置之前,则无窗口显示区域显示在有窗口显示区域的前面,并且反之亦然。总之,理论上可以有无数多个不同的显示区域,因为它们——就可显示性而言——可设计为完整的显示区域,而无需设置数量有限的窗口句柄。
[0037]
优选所述方法包括下述附加方法步骤:
[0038]-接收用于创建和显示另外的显示区域的数据,
[0039]-基于为此接收的数据在分配不同于窗口句柄的单义显示标识符的情况下创建所述另外的显示区域,
[0040]-存储所述另外的显示区域的显示标识符到所述另外的显示区域的分配,
[0041]-将所述另外的显示区域的显示标识符存储在层级列表中的预定位置上,
[0042]-根据在层级列表中所述另外的显示区域的显示标识符的层级位置相对于有窗口显示区域的显示标识符的层级位置和无窗口显示区域的显示标识符的层级位置,在桌面上相对于有窗口显示区域和无窗口显示区域显示所述另外的显示区域。
[0043]
概括而言,这意味着,根据本发明的该优选扩展方案,可存在大量另外的显示区域,通过根据本发明的方法为这些显示区域确定其在桌面上的顺序,而不需要使用数量有限的窗口句柄。所述另外的显示区域可以是有窗口或无窗口的;如果所述另外的显示区域是有窗口的,则当然也会分配一个窗口句柄,尽管如此,桌面上的顺序仍然通过层级列表中的相应显示标识符来确定。可对于其它显示区域重复该方法的这些步骤;在无窗口显示区域的情况下原则上可任意多次重复。
[0044]
根据本发明的另一种优选实施方式,所述方法包括下述附加方法步骤:
[0045]-接收用于在已经显示于桌面上的显示区域内创建和显示第一另外的无窗口显示区域的数据,
[0046]-基于为此接收的数据在分配不同于窗口句柄的单义显示标识符的情况下创建第一另外的无窗口显示区域,
[0047]-存储第一另外的无窗口显示区域的显示标识符到第一另外无窗口显示区域的分配,
[0048]-将第一另外的无窗口显示区域的显示标识符存储在分配给已经显示的显示区域的层级子列表中的预定位置上,
[0049]-在已经显示于桌面上的显示区域内显示第一另外的无窗口显示区域,
[0050]-接收用于在已经显示于桌面上的显示区域内创建和显示第二另外的无窗口显示区域的数据,
[0051]-基于为此接收的数据在分配不同于窗口句柄的单义显示标识符的情况下创建第二另外的无窗口显示区域,
[0052]-存储第二另外的无窗口显示区域的显示标识符到第二另外的无窗口显示区域的分配,
[0053]-将第二另外的无窗口显示区域的显示标识符存储在分配给已经显示的显示区域的层级子列表中的预定位置上,
[0054]-在已经显示于桌面上的显示区域内显示第二另外的无窗口显示区域,如果在分配给已经显示的显示区域的子列表中第一另外的无窗口显示区域的显示标识符的位置在层级方面位于第二另外的无窗口显示区域的显示标识符的位置之前,则第一另外的无窗口显示区域显示在第二另外的无窗口显示区域的前面,并且反之亦然。
[0055]
以此方式实现了可称之为显示区域的“容器功能”。该用作容器的显示区域原则上可以是无窗口的或有窗口的。当然,也可在容器中显示其它无窗口显示区域、如第三无窗口显示区域、第四无窗口显示区域等。向外部、即相对于位于容器之外的显示区域,位于容器内部的显示区域在显示层级方面被处理为与容器本身一样。
[0056]
原则上,已经显示于桌面上的、在其中显示另外的无窗口显示区域的显示区域可以是有窗口的。但根据本发明的一种优选扩展方案,已经显示于桌面上的、在其中显示另外的无窗口显示区域的显示区域是无窗口的。在此下述优点也再次适用,即原则上可存在任意数量的无窗口显示区域,因为没有窗口句柄数量方面的限制。
[0057]
本发明提供了在分层列表中存储新创建的显示区域的显示标识符的各种可能性。但根据本发明的一种优选扩展方案,将新创建的显示区域的显示标识符存储在层级列表中的最上层位置。以此方式,新创建的显示区域总是立即可见,因为它基于其显示标识符在层级列表中的位置显示在所有其它显示区域的前面。附加或替代地,根据本发明的一种优选扩展方案,将用指针设备在桌面上选择的显示区域的显示标识符存储在层级列表中的最上层位置。因此,为了显示显示区域,可使用指针设备、如计算机鼠标简单地选择、如点击该显示区域。
[0058]
根据本发明的一种优选扩展方案,所述方法还包括下述方法步骤:
[0059]-将显示区域设置在布局上的预定位置上,
[0060]-确定桌面上显示的其它显示区域与位于预定位置上的显示区域重叠的所有区域,并且
[0061]-将所述其它显示区域的这些重叠区域剪掉,使得设置在布局上的预定位置上的
显示区域完全可见。
[0062]
以此方式可显示在显示区域的顺序中被置于最前面的无窗口显示区域。此外,相应地对于有窗口显示区域也进行操作,当有窗口显示区域改变其在桌面上的位置时,必须检查其窗口是否重叠并在必要时更新其区域的剪切。此外,该功能也可用于上述容器:当在容器内设置显示区域的位置(子显示区域在作为父容器的容器中)时,检查容器的外部边界。如果子显示区域从容器中突出,对其进行相应剪切。
[0063]
原则上,桌面上的显示、即桌面上的不同显示区域可基于不同类型的数据。但根据本发明的一种优选扩展方案,所述方法包括下述方法步骤:
[0064]-连续接收数据以更新显示于桌面上的显示区域的显示,
[0065]-基于连续接收的数据更新显示于桌面上的显示区域的显示,以及
[0066]-根据用户命令缩小或隐藏显示区域,对于缩小或隐藏的显示区域中断数据的连续接收。
[0067]
连续接收数据在此意味着不断地接收新数据、如当前的测量数据。该接收例如可连续进行、以预定周期或面向事件地进行。显示区域优选被缩小为存储在桌面上的图标,即没有进一步可见的内容,或被缩小、如通过合拢为纯窗口栏,必要时在窗口栏中具有显示区域的名称。如果容器被缩小或隐藏,则容器中包含的所有显示区域都不再显示并且这些显示区域的数据的连续接收也被中断。当显示区域、如容器例如通过展开再次被打开时,数据接收的这种中断结束。
[0068]
该方法可用于各种应用。但根据本发明的一种优选扩展方案,显示区域用于在硬件在环应用中显示用于实时测量数据的测量数据仪器。为此特别优选使用容器内的无窗口显示区域。
附图说明
[0069]
下面参照附图借助优选实施例详细阐述本发明。附图如下:
[0070]
图1示意性示出桌面,其具有两个由传统有窗口显示区域形成的仪器和一个根据本发明一种优选实施例的、空的无窗口容器仪器;
[0071]
图2示意性示出桌面,其具有一个由传统有窗口显示区域形成的大型仪器和一个根据本发明另一种优选实施例的、空的无窗口容器仪器;
[0072]
图3示出图2中的桌面的局部,在此大型仪器已添加到无窗口容器仪器中;和
[0073]
图4示出图1中的桌面,在此多个仪器已添加到无窗口容器仪器中,其中一些仪器也被设计为容器仪器。
具体实施方式
[0074]
在对本发明的优选实施例进行以下说明之前,为了完整起见,应再次简要地指出本发明所基于的问题。在当前作为示例基于在微软windows操作系统下运行的应用。在本发明的范围内,当然也可使用其它操作系统、如macos或linux。
[0075]
无窗口显示区域和有窗口显示区域有一个重要区别:有窗口显示区域被操作系统(如在微软windows中)相互隐藏(ausblenden),以便创建层级结构。所有直接在桌面上显示的内容、如背景图像、程序图标等因此都会被有窗口显示区域自动覆盖。另一方面,无窗口
显示区域的表现有所不同:它们直接显示在父窗口(容器container)上。在此仅显示的顺序来定义层级结构。最后显示的显示区域对于浏览者而言出现在前景中。由于缺少直接分配的窗口句柄,这些显示区域并不为操作系统所知。但这意味着,布局上存在不通过窗口句柄代表的显示区域。如果不采取进一步措施,有窗口显示区域和无窗口显示区域的混合操作可能会导致有窗口显示区域总是覆盖位于其下面的布局区域,这使得无法在有窗口显示区域的前面显示无窗口显示区域。
[0076]
下面描述的根据本发明优选实施例的容器仪器在此介入。本文描述的应用领域是使用桌面上的显示区域来显示在硬件在环应用中用于实时测量数据的测量数据仪器。在此容器仪器设计为无窗口显示区域。可以将一些仪器、即作为子显示区域添加到该容器仪器中,这些子显示区域保持在容器中,该容器因此用作父显示区域。这些仪器因此在容器仪器中进行管理并且显示在由容器仪器定义的显示区域内。因此这些仪器独立于布局,例如可被移动和/或滚动而不会对布局产生直接影响。
[0077]
如前所述,容器仪器是无窗口的,也就是说,它不需要窗口句柄。由于窗口句柄的数量在整个操作系统中是有限的,而且不能扩展,因此容器仪器可节省资源并且原则上可在数量方面不受限制地同时使用。
[0078]
此外,也可在容器仪器中使用其他的容器仪器。因此,多个仪器可完全被一个容器仪器取代。此外,可以简单的方式创建到目前为止不存在的仪器。
[0079]
容器仪器的内容可隐藏。也就是说,容器仪器例如可被合拢。因此桌面上仅保留仪器的最小代表。仪器在桌面上的这种代表可自由配置。
[0080]
尤其是如果容器仪器的合拢导致包含在容器仪器中的所有仪器与测量期间的数据显示隔绝,则这节省了资源。也就是说,这些仪器不会对整个系统的性能造成负担并且系统的用户可具体决定他想看什么。用户可设置仪器应如何表现,即是否应自动放大或缩小、是否应滚动、是否可改变包含的仪器等。
[0081]
在现有技术中,资源/性能问题到目前为止以下述方式解决:一个布局仅包含仪器的一小部分并且分布在多个布局上,然后根据需要打开或关闭这些布局。布局上的空间问题到目前为止通常通过滚动或其它布局上显示来解决。如果使用根据本文描述的本发明的优选实施例的容器仪器,则不需要如此,在根据本发明的容器仪器中,当合拢/缩小显示区域时,不再接收未显示的仪器的数据。
[0082]
具体来说,上述容器元件可如下设计:
[0083]
图1示出具有两个由传统有窗口显示区域形成的仪器2、3的桌面1。此外,桌面1上还有一个空的容器仪器4。从图1中可以看出,当前描述的容器仪器4本身看起来基本上像一个空的仪器,即像一个没有显示测量数据或类似数据的仪器。
[0084]
图2示出具有容器元件4的桌面1的另一种示例。在此图2中的桌面1附加地具有一个非常大的仪器5,它占据了桌面1的大部分。如果现在将这个大型仪器5——如图3所示——添加到容器仪器4中,则大型仪器5的显示原则上继续可用,但如所希望的那样在更小的空间上显示。具体而言,图2中的大型仪器5的全部内容已经添加到容器仪器4中。可以看出,显著节省了空间,因为可缩小容器仪器4并且因此显示滚动条6,以便能够到达隐藏的仪器区域。
[0085]
如图4中示例性所示,如果在容器仪器4中使用容器仪器7、8、9、10、11、12,则容器
仪器4的优点更加明显。在此不同的仪器7、8、9、10、11、12被添加到图1的容器仪器4中。可以看出,可滚动一些区域并且因此预先定义的空间要求是足够的并且可保持布局内的预定义结构。此外,在此清楚的是,容器仪器4中的仪器7、10、12可局部/本地滚动,由此容器仪器4中的其它仪器7、8、9、11以及容器仪器4外的其它仪器2、3不受影响。
[0086]
原则上容器仪器可在任何深度的层面上与其它容器仪器嵌套。因此,每个容器仪器原则上可包含任意数量的容器仪器,而这些容器仪器在其侧又可包含任意数量的容器仪器。在此容器仪器可不受限制地同时使用,可形成任意数量的层面,不消耗窗口句柄并且也仅使用很少的内存。此外,隐藏的仪器可以如下程度“关闭”,使得隐藏的仪器几乎不使用任何资源。与此相应,为系统/应用程序提供更多性能。
[0087]
在当前,相应于无窗口显示区域的无窗口仪器可在相应于有窗口显示区域的有窗口仪器的上方或前面显示。与此相关且在上面还提及的问题如下解决:
[0088]
无论仪器是无窗口的还是有窗口的,每个仪器在创建时都被分配一个不同于窗口句柄的单义显示标识符。存储具有这些显示标识符的层级列表以及相应的显示标识符到相应仪器的分配。相应显示标识符在该层级列表中的位置决定了仪器在布局上的顺序,即一个仪器是显示在另一个仪器的前面还是后面。在当前,列表中的第一元件位于布局最上方。前景中的仪器占据列表最前面的位置。如果将一个仪器向前移动,则它就会相应地在列表中排在更前面的位置。由此产生单义的顺序。
[0089]
当在布局上设置一个仪器的位置,即其x和y坐标时,将搜索所有位于其下方的与该仪器重叠的所有仪器。基于层级列表这是可能的。由此获得单义的显示标识符和因此相应的仪器,从而可查询其位置。
[0090]
如果找到所有重叠仪器并且它们存储在一个列表中,附加地创建一个包含重叠仪器的列表。对于列表中的每个仪器,从相应的仪器中剪掉共同的区域。在微软windows操作系统下,这例如可借助windows api函数“setwindowrgn(...)”实现。因此,无窗口仪器也可出现在有窗口仪器的前面,因为操作系统现在不再显示仪器的被剪掉区域。换句话说:该仪器后面的区域变得可见,并且因此继续直接显示在布局上的仪器对于用户而言出现在有窗口仪器的前面。同样,当有窗口仪器改变其在布局上的位置时,有窗口仪器会检查其显示区域是否有重叠并在必要时修改其裁剪。
[0091]
在当前容器仪器正是使用该技术来显示有窗口仪器和无窗口仪器。容器仪器是无窗口的并且可与任何其它无窗口仪器一样表现,使得容器仪器可在有窗口仪器的前面显示。因此容器仪器只需要关心自己的内容,即子仪器。因此可以说,该仪器对于可在其中显示的仪器而言是无窗口父仪器。
[0092]
此外,当设置子仪器的位置时,容器仪器就子仪器的裁剪检查其外部边界。如果窗口从容器仪器中突出(通过“clientrectangle”检查),则借助“setwindowrgn(...)”函数对其进行剪切。在合拢时,所有的子仪器都不再显示并且因此不再可见。通过windowsapi函数“showwindow”隐藏有窗口仪器的窗口。
[0093]
在展开时,所有子仪器再次正常显示并通过windowsapi函数“showwindow”再次使有窗口仪器的显示区域可见。
[0094]
附图标记列表:
[0095]1ꢀꢀꢀꢀꢀ
桌面
[0096]2ꢀꢀꢀꢀꢀ
仪器
[0097]3ꢀꢀꢀꢀꢀ
仪器
[0098]4ꢀꢀꢀꢀꢀ
具有必要时显示在其中的仪器的容器仪器
[0099]5ꢀꢀꢀꢀꢀ
大型仪器
[0100]6ꢀꢀꢀꢀꢀ
滚动条
[0101]7ꢀꢀꢀꢀꢀ
容器仪器中的仪器
[0102]8ꢀꢀꢀꢀꢀ
容器仪器中的仪器
[0103]9ꢀꢀꢀꢀꢀ
容器仪器中的仪器
[0104]
10
ꢀꢀꢀꢀ
容器仪器中的仪器
[0105]
11
ꢀꢀꢀꢀ
容器仪器中的仪器
[0106]
12
ꢀꢀꢀꢀ
容器仪器中的仪器