宿主程序与COM组件的图像同步显示的方法与系统技术方案

技术编号:10458570 阅读:130 留言:0更新日期:2014-09-24 14:31
本发明专利技术公开了一种宿主程序与COM组件的图像同步显示的方法与系统,在COM组件内绘制宿主程序子窗口的图像,并将该图像与COM组件的图像融合,从而当鼠标平移COM组件图像时,宿主程序子窗口的图像与COM组件图像同步移动,避免了显示不同步的情况,改善了用户体验。

【技术实现步骤摘要】
宿主程序与COM组件的图像同步显示的方法与系统
本专利技术涉及计算机
,特别是涉及一种宿主程序与COM组件的图像同步显 示的方法与系统。
技术介绍
在Windows系统的软件开发中,COM组件技术是应用非常普遍和重要的技术。它把 功能相同的代码封装为COM组件,这样使用不同编程语言开发的程序就可以很方便的通过 调用该组件来实现某个功能,而这类程序就是该COM组件的宿主程序。比如一个地图组件, 它的功能是显示电子地图,而宿主程序是C#开发的窗口应用程序,宿主程序使用了地图组 件实现了地图相关的功能,同时它还可以创建其它窗口叠加到地图组件之上。这种软件架 构是非常常用的设计,可以实现代码重用,把功能相同的模块封装成一个COM组件提供给 不同的宿主程序使用。但是如果COM组件和宿主程序都涉及到各自的图像渲染,那么两者 之间的图像同步往往是比较困难的。 在GIS领域,宿主程序在地图组件的某个地理位置之上叠加一个展示窗口,该窗 口中嵌入了一个3D的演示程序来表现该位置的实际场景。但是这种展示有一个缺陷就 是地图组件是允许用户进行地图的平移的,这样由于地理位置的改变,那么叠加在它之上 的3D展示窗口的位置也应相应的变化,需要宿主程序对该窗口进行平移,这样地图的平移 和宿主程序的窗口平移就存在不同步的现象,地图先移动,之后才是窗口移动,演示效果不 佳。 产生这种问题的原因是电子地图是在地图组件中显示,而宿主程序中的演示是在 展示窗口中,两者不是在同一个渲染环境中进行,因此出现了绘制显示时间上的差异。为了 解决这种问题,传统的做法是在地图平移过程中,不移动而是隐藏窗口,在平移地图结束后 再在新位置显示窗口。这种方法规避了平移图像和平移窗口存在的时间差异,但是窗口展 示和COM组件中的图像不是同时显示的,没有从根本上解决图像同步的问题。
技术实现思路
基于上述情况,本专利技术提出了一种宿主程序与COM组件的图像同步显示的方法与 系统,使得宿主程序子窗口的图像与COM组件的图像达到同步显示的效果,为此,采用的方 案如下。 一种宿主程序与COM组件的图像同步显示的方法,包括步骤: 隐藏宿主程序的子窗口,只显示COM组件的图像; 获取子窗口的图像数据和位置信息; 按照所述图像数据和位置信息,在COM组件图像的相应区域,绘制子窗口的图像, 使子窗口的图像与COM组件的图像融合。 一种宿主程序与COM组件的图像同步显示的系统,包括: 子窗口隐藏控制模块,用于隐藏宿主程序的子窗口,只显示COM组件的图像; 子窗口信息获取模块,用于获取子窗口的图像数据和位置信息; 图像融合模块,用于按照所述图像数据和位置信息,在COM组件图像的相应区域, 绘制子窗口的图像,使子窗口的图像与COM组件的图像融合。 本专利技术宿主程序与COM组件的图像同步显示的方法与系统,在COM组件内绘制宿 主程序子窗口的图像,并将该图像与COM组件的图像融合,从而当鼠标平移COM组件图像 时,宿主程序子窗口的图像与COM组件图像同步移动,避免了显示不同步的情况,改善了用 户体验。 【附图说明】 图1为本专利技术宿主程序与COM组件的图像同步显示的方法的流程示意图; 图2为本专利技术宿主程序与COM组件的图像同步显示的方法的一个实施例的流程示 意图; 图3为在本专利技术宿主程序与COM组件的图像同步显示的方法为基础,进行子窗口 的管理与控制的流程示意图; 图4为本专利技术宿主程序与COM组件的图像同步显示的系统的结构示意图。 【具体实施方式】 为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本专利技术进行进一步的详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本发 明,并不限定本专利技术的保护范围。 本专利技术宿主程序与COM组件的图像同步显示的方法,如图1所示,包括步骤: 步骤slOl、隐藏宿主程序的子窗口,只显示COM组件的图像; 步骤S102、获取子窗口的图像数据和位置信息; 步骤sl03、按照所述图像数据和位置信息,在COM组件图像的相应区域,绘制子窗 口的图像,使子窗口的图像与COM组件的图像融合。 本专利技术将处于两种渲染环境的图像放到同一渲染环境中,叠加显示成一幅图像, 从而作为一个整体响应鼠标平移操作,达到同步移动的效果。下面以一个具体实施例从头 至尾详细解释本方法的过程。 假设有一个宿主程序P,它使用了一个显示图像的COM组件,它需要在COM组件的 某个位置上叠加显示一个子窗口或者一个应用程序(应用程序也可以理解为一种窗口), 并保证在组件进行图像平移过程中,该窗口或者应用程序能同步跟随图像移动。为了实现 该目的,执行的操作如图2所示,详细的解释如下文所示。 步骤s201、宿主程序加载COM组件,组件进行它本身的图像绘制,假设该组件绘制 区域:左上角为(x〇, y〇),宽为W,高为H,单位为像素。 步骤s202、宿主程序需要在组件的p位置(x,y)显示一个子窗口 WND,该窗口叠加 在COM组件之上,宽为wl,高为hi,单位为像素,因此宿主程序创建该窗口,并在该窗口上进 行相关的显示,记录该窗口的数据结构为{HWND,X,y,wl,hi},其中HWND是该窗口的句柄。 以上是与传统方法相同的部分,以下是本方法针对传统方法做出的改进。 步骤s203、隐藏WND窗口,这时呈现出来的内容只有COM组件中的图像; 步骤S204、宿主程序进行子窗口的注册。 在COM组件中添加窗口的注册函数,宿主程序可以通过该函数进行窗口的注册: 宿主程序获取到将要显示的窗口句柄HWND,并使用注册函数把该值传递到COM内部。例如: 注册函数名为 RegHostWnd (Long HWnd); 步骤s205、COM组件进行子窗口的注册处理。 在COM内部获取到窗口句柄HWND以后,通过句柄获取到窗口的位置和大小信 息:窗口左上角(x,y)以及宽和高,另外通过句柄还获取到窗口 DC(Device Context, 是⑶I内部的一个资料结构)上显示的图像数据,并把该数据拷贝到一个画布(或者 内存DC,在此使用WndlmageData表示),此时,在COM组件内部记录了该窗口的信息 {HWND, X, y, wl, hi, WndlmageData} 〇 步骤s204_s205与步骤S102对应,是为了获取子窗口的相关数据,为在COM组件 内的绘制与融合做准备。 步骤s206、COM组件和宿主程序子窗口的图像融合。 首先,在COM组件中进行本身内容的绘制。比如如果是地图COM组件,就先绘制地 图。 其次,绘制注册的子窗口 :遍历COM组件内部记录,获取到每个已经注册的子窗口 信息,把WndlmageData数据绘制到{x, y, wl, hi}这个区域上,也就是说实现子窗口的数据 和COM组件本身的数据是绘制在同一个渲染环境中(都绘制到COM组件的DC上)。这时候 出来的内容包括组件以及子窗口本身的图像。步骤s2011-s206的目的是宿主程序仍然进 行子窗口的后台显示(子窗口是隐藏的),本文档来自技高网
...
宿主程序与COM组件的图像同步显示的方法与系统

【技术保护点】
一种宿主程序与COM组件的图像同步显示的方法,其特征在于,包括步骤:隐藏宿主程序的子窗口,只显示COM组件的图像;获取子窗口的图像数据和位置信息;按照所述图像数据和位置信息,在COM组件图像的相应区域,绘制子窗口的图像,使子窗口的图像与COM组件的图像融合。

【技术特征摘要】
1. 一种宿主程序与COM组件的图像同步显示的方法,其特征在于,包括步骤: 隐藏宿主程序的子窗口,只显示COM组件的图像; 获取子窗口的图像数据和位置信息; 按照所述图像数据和位置信息,在COM组件图像的相应区域,绘制子窗口的图像,使子 窗口的图像与COM组件的图像融合。2. 根据权利要求1所述的宿主程序与COM组件的图像同步显示的方法,其特征在于,还 包括步骤: 当COM组件的图像发生变化时,对COM组件的图像与子窗口的图像进行重绘并融合; 当子窗口的图像发生变化时,重新获取子窗口的图像数据和位置信息,在COM组件内 部的相应区域,重绘子窗口的图像,同时重绘COM组件的图像,将重绘后的子窗口图像与 COM组件图像重新融合。3. 根据权利要求1或2所述的宿主程序与COM组件的图像同步显示的方法,其特征在 于,还包括步骤: 监测COM组件上的鼠标操作; 当鼠标操作落在子窗口所在区域内时,向宿主程序发送鼠标消息,宿主程序重绘子窗 口的图像,重新获取子窗口的图像数据和位置信息,在COM组件图像的相应区域,重绘子窗 口的图像,同时重绘COM组件的图像; 将子窗口的重绘图像与COM组件的重绘图像重新融合。4. 根据权利要求1或2所述的宿主程序与COM组件的图像同步显示的方法,其特征在 于, 获取子窗口的图像数据和位置信息的过程包括: 在COM组件中添加子窗口的注册函数; 通过所述注册函数将子窗口的句柄传递到COM组件内部; 在COM组件内部,通过所述句柄获取子窗口的图像数据和位置信息。5. 根据权利要求3所述的宿主程序与COM组件的图像同步显示的方法,其特征在于, 当鼠标操作落在子窗口所在区域内,且子窗口的图像变换具有渐变效果时,定时获取 子窗口的图像数据,并绘制到COM组件中与COM组件重绘图像融合,直至子窗口的新图像全 部绘制出来。6. -种宿主程序与COM组件的图像同步显示的系统,其特征在于,包括: 子窗口隐藏控制模块,用于隐藏...

【专利技术属性】
技术研发人员:陈泓坤
申请(专利权)人:广东威创视讯科技股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1