• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 13
    • 下载费用:30 金币  

    重庆时时彩技巧想输都难十年心得: 一种实现多个窗口同步移动的方法和装置.pdf

    关 键 词:
    一种 实现 窗口 同步 移动 方法 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201510541848.X

    申请日:

    2015.08.28

    公开号:

    CN106484212A

    公开日:

    2017.03.08

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 3/0481申请日:20150828|||公开
    IPC分类号: G06F3/0481(2013.01)I 主分类号: G06F3/0481
    申请人: 北京新媒传信科技有限公司
    发明人: 李波
    地址: 100089 北京市海淀区万泉庄路28号万柳新贵大厦A座6层602室
    优先权:
    专利代理机构: 北京市隆安律师事务所 11323 代理人: 权鲜枝;吴昊
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201510541848.X

    授权公告号:

    |||

    法律状态公告日:

    2017.04.05|||2017.03.08

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本发明公开了一种实现多个窗口同步移动的方法和装置。所述方法包括:在宿主窗口移动或改变大小时,宿主窗口收到窗口正在改变的消息,所述消息中包括宿主窗口的新位置参数;判断所述宿主窗口的跟随窗口列表中的跟随窗口数量是否为0,所述跟随列表中包括每个跟随窗口对应的跟随参数;如果不为0,则改变窗口正在改变的消息的参数,阻止宿主窗口本次的位置改变;开启多窗口同步移动操作,根据计算出的宿主窗口的新位置和跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动。本发明克服了现有多窗口移动方案中窗口之间移动存在时间差的问题,能够使所有窗口同时更新位置。

    权利要求书

    1.一种实现多个窗口同步移动的方法,其特征在于,所述方法包括:
    在宿主窗口移动或改变大小时,宿主窗口收到窗口正在改变的消息,所
    述消息中包括宿主窗口的新位置参数;
    判断所述宿主窗口的跟随窗口列表中的跟随窗口数量是否为0,所述跟
    随列表中包括每个跟随窗口对应的跟随参数;
    如果不为0,则改变所述窗口正在改变的消息的参数,阻止所述宿主窗
    口本次的位置改变;
    根据所述宿主窗口的新位置参数计算所述宿主窗口的新位置和根据所述
    跟随窗口列表中每个跟随窗口的跟随参数计算所述每个跟随窗口的新位置;
    开启多窗口同步移动操作,根据计算出的所述宿主窗口的新位置和所述
    跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动。
    2.根据权利要求1所述的方法,其特征在于,所述方法还包括:判断所
    述宿主窗口的跟随窗口列表中的跟随窗口数量如果为0,则进行所述宿主窗
    口本次的位置改变。
    3.根据权利要求1所述的方法,其特征在于,所述在宿主窗口移动或改
    变大小之前,所述方法还包括:
    所述宿主窗口接收跟随窗口发送的注册消息,所述注册消息中携带所述
    跟随窗口的跟随参数;
    所述宿主窗口将所述跟随窗口添加到跟随窗口列表中,并保存该跟随窗
    口的跟随参数。
    4.根据权利要求1所述的方法,其特征在于,所述改变所述窗口正在改
    变的消息的参数,阻止所述宿主窗口本次的位置改变包括:
    在所述窗口正在改变的消息中强制添加两个参数,一个为表示拒绝宿主
    窗口本次的位置修改的参数,另一个为表示拒绝宿主窗口本次的大小修改的
    参数,通过该两个参数阻止所述宿主窗口本次的位置改变。
    5.根据权利要求1所述的方法,其特征在于,所述开启多窗口同步移动
    操作,根据计算出的所述宿主窗口的新位置和所述跟随窗口列表中每个跟随
    窗口的新位置,完成所有窗口的同步移动包括:
    所述宿主窗口计算出自己即将移动到的新位置,并计算出所述跟随窗口
    列表中的跟随窗口数量,开启多窗口同步移动操作;
    遍历所述跟随窗口列表,计算每个跟随窗口的新位置,将每个跟随窗口
    和所述宿主窗口加入到所述多窗口同步移动操作中;
    所述宿主窗口计算出自己最终移动到的新位置,完成所有窗口的同步移
    动操作。
    6.一种实现多个窗口同步移动的装置,其特征在于,所述装置包括:
    消息接收单元,用于在宿主窗口移动或改变大小时,宿主窗口收到窗口
    正在改变的消息,所述消息中包括宿主窗口的新位置参数;
    跟随窗口数量判断单元,用于判断所述宿主窗口的跟随窗口列表中的跟
    随窗口数量是否为0,所述跟随列表中包括每个跟随窗口对应的跟随参数;
    移动处理单元,用于在跟随窗口数量不为0时,改变所述窗口正在改变
    的消息的参数,阻止所述宿主窗口本次的位置改变;
    多窗口同步移动单元,用于根据所述宿主窗口的新位置参数计算所述宿
    主窗口的新位置和根据所述跟随窗口列表中每个跟随窗口的跟随参数计算所
    述每个跟随窗口的新位置;以及开启多窗口同步移动操作,根据计算出的所
    述宿主窗口的新位置和所述跟随窗口列表中每个跟随窗口的新位置,完成所
    有窗口的同步移动。
    7.根据权利要求6所述的装置,其特征在于,
    所述移动处理单元,还用于在跟随窗口数量为0时,进行所述宿主窗口
    本次的位置改变。
    8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
    跟随窗口注册单元,用于所述宿主窗口接收跟随窗口发送的注册消息,
    所述注册消息中携带所述跟随窗口的跟随参数;将所述跟随窗口添加到跟随
    窗口列表中,并保存该跟随窗口的跟随参数。
    9.根据权利要求6所述的装置,其特征在于,所述移动处理单元具体用
    于,在所述窗口正在改变的消息中强制添加两个参数,一个为表示拒绝宿主
    窗口本次的位置修改的参数,另一个为表示拒绝宿主窗口本次的大小修改的
    参数,通过该两个参数阻止所述宿主窗口本次的位置改变。
    10.根据权利要求6所述的装置,其特征在于,所述多窗口同步移动单
    元包括:
    同步移动开启???,用于所述宿主窗口计算出自己即将移动到的新位置,
    并计算出所述跟随窗口列表中的跟随窗口数量,开启多窗口同步移动操作;
    同步移动操作???,用于遍历所述跟随窗口列表,计算每个跟随窗口的
    新位置,将每个跟随窗口和所述宿主窗口加入到所述多窗口同步移动操作中;
    同步移动结束???,用于所述宿主窗口计算出自己最终移动到的新位置,
    完成所有窗口的同步移动操作。

    说明书

    一种实现多个窗口同步移动的方法和装置

    技术领域

    本发明涉及Windows平台下界面开发技术领域,尤其涉及一种实现多个窗口同步移动的方法和装置。

    背景技术

    在客户端界面程序中,经常需要处理多个弹出式窗口之间跟随移动的场景,比如鼠标拖动主界面窗口时,主界面上弹出的一个气泡提示窗口也需要跟着主界面窗口一起移动,保证气泡总是指向主界面窗口上的同一位置。

    目前实现窗口跟随的一般有下面这两种方式:

    宿主窗口响应位置改变事件:在宿主窗口中,响应自己的位置改变、大小改变事件,修改跟随窗口的位置和大小。这种实现方式不能通用,如果存在多个宿主窗口,则需要在每一个宿主窗口中添加相应的代码逻辑。该方法是在得到宿主窗口的移动事件后,再让跟随窗口进行跟随移动的。因此宿主窗口的移动和跟随窗口的移动之间存在一些的时间差,导致两者之间的移动不同步。

    使用Hook拦截宿主窗口的位置改变事件:通过Windows Hook技术,拦截宿主窗口的位置改变事件,将这个事件通知给所有的跟随窗口,由跟随窗口完成自己的跟随移动逻辑。由于涉及到Hook,使得该方式比较复杂,容易出错,性能上也比单独处理宿主窗口消息的方式低,并且依然存在窗口之间的跟随不同步的问题。

    发明内容

    本发明提供了一种实现多个窗口同步移动的方法和装置,以克服上述方法的不足,实现多个窗口没有时间差的同步移动。

    依据本发明的一个方面,本发明提供了一种实现多个窗口同步移动的方法,该方法包括:

    在宿主窗口移动或改变大小时,宿主窗口收到窗口正在改变的消息,所述消息中包括宿主窗口的新位置参数;

    判断所述宿主窗口的跟随窗口列表中的跟随窗口数量是否为0,所述跟随列表中包括每个跟随窗口对应的跟随参数;

    如果不为0,则改变所述窗口正在改变的消息的参数,阻止所述宿主窗口本次的位置改变;

    根据所述宿主窗口的新位置参数计算所述宿主窗口的新位置和根据所述跟随窗口列表中每个跟随窗口的跟随参数计算所述每个跟随窗口的新位置;

    开启多窗口同步移动操作,根据计算出的所述宿主窗口的新位置和所述跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动。

    其中,所述方法还包括:判断所述宿主窗口的跟随窗口列表中的跟随窗口数量如果为0,则进行所述宿主窗口本次的位置改变。

    其中,所述在宿主窗口移动或改变大小之前,所述方法还包括:

    所述宿主窗口接收跟随窗口发送的注册消息,所述注册消息中携带所述跟随窗口的跟随参数;

    所述宿主窗口将所述跟随窗口添加到跟随窗口列表中,并保存该跟随窗口的跟随参数。

    其中,所述改变所述窗口正在改变的消息的参数,阻止所述宿主窗口本次的位置改变包括:

    在所述窗口正在改变的消息中强制添加两个参数,一个为表示拒绝宿主窗口本次的位置修改的参数,另一个为表示拒绝宿主窗口本次的大小修改的参数,通过该两个参数阻止所述宿主窗口本次的位置改变。

    其中,所述宿主窗口开启多窗口同步移动操作,根据计算出的所述宿主窗口的新位置和所述跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动包括:

    所述宿主窗口计算出自己即将移动到的新位置,并计算出所述跟随窗口列表中的跟随窗口数量,开启多窗口同步移动操作;

    遍历所述跟随窗口列表,计算每个跟随窗口的新位置,将每个跟随窗口和所述宿主窗口加入到所述多窗口同步移动操作中;

    所述宿主窗口计算出自己最终移动到的新位置,完成所有窗口的同步移动操作。

    依据本发明的另一方面,本发明提供了一种实现多个窗口同步移动的装置,该装置包括:

    消息接收单元,用于在宿主窗口移动或改变大小时,宿主窗口收到窗口正在改变的消息,所述消息中包括宿主窗口的新位置参数;

    跟随窗口数量判断单元,用于判断所述宿主窗口的跟随窗口列表中的跟随窗口数量是否为0,所述跟随列表中包括每个跟随窗口对应的跟随参数;;

    移动处理单元,用于在跟随窗口数量不为0时,则改变所述窗口正在改变的消息的参数,阻止所述宿主窗口本次的位置改变;

    多窗口同步移动单元,用于根据所述宿主窗口的新位置参数计算所述宿主窗口的新位置和根据所述跟随窗口列表中每个跟随窗口的跟随参数计算所述每个跟随窗口的新位置;以及开启多窗口同步移动操作,根据计算出的所述宿主窗口的新位置和所述跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动。

    其中,所述移动处理单元,还用于在跟随窗口数量为0时,进行所述宿主窗口本次的位置改变。

    其中,所述装置还包括:

    跟随窗口注册单元,用于所述宿主窗口接收跟随窗口发送的注册消息,所述注册消息中携带所述跟随窗口的跟随参数;所述宿主窗口将所述跟随窗口添加到跟随窗口列表中,并保存该跟随窗口的跟随参数。

    其中,所述移动处理单元具体用于,在所述窗口正在改变的消息中强制添加两个参数,一个为表示拒绝宿主窗口本次的位置修改的参数,另一个为 表示拒绝宿主窗口本次的大小修改的参数,通过该两个参数阻止所述宿主窗口本次的位置改变。

    其中,所述多窗口同步移动单元包括:

    同步移动开启???,用于所述宿主窗口计算出自己即将移动到的新位置,并计算出所述跟随窗口列表中的跟随窗口数量,开启多窗口同步移动操作;

    同步移动操作???,用于遍历所述跟随窗口列表,计算每个跟随窗口的新位置,将每个跟随窗口和所述宿主窗口加入到所述多窗口同步移动操作中;

    同步移动结束???,用于所述宿主窗口计算出自己最终移动到的新位置,完成所有窗口的同步移动操作。

    本发明实施例的有益效果是:本发明提供的实现多个窗口同步移动的方法和装置,当宿主窗口收到窗口正在改变的消息时,通过判断其跟随窗口列表中的跟随窗口数量是否为0判定本次是单个窗口的移动还是多个窗口的移动,若是多个窗口的移动,因为需要实现多个窗口的同步移动,所以不能让宿主窗口单独先完成或后完成自己的移动,则通过修改该窗口正在改变的消息的参数来阻止宿主窗口本次的位置改变;之后由宿主窗口开启多窗口同步移动操作,根据计算出的宿主窗口的新位置和跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动,由于该同步移动是将所有的窗口统一同时更新位置,所以不存在时间差,由此解决了现有技术中窗口之间的跟随不同步的问题。

    附图说明

    图1为本发明提供的一种实现多个窗口同步移动的方法流程图;

    图2是本发明提供的实现多个窗口同步移动的方法的一个具体流程图;

    图3是本发明提供的实现多个窗口同步移动的装置的结构示意图;

    图4是本发明提供的实现多个窗口同步移动的装置中所述多窗口同步移动单元的结构示意图。

    具体实施方式

    为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

    本发明提供了一种实现多个窗口同步移动的方法和装置,以克服现有多窗口移动方案中各窗口之间移动存在时间差的问题,能够实现所有窗口的同步移动。

    本发明的整体思路是:要实现多个窗口的同步移动,则应该将这些窗口作为一个整体进行移动,而不能在宿主窗口移动后,再依次移动各个跟随窗口。在Windows操作系统中,一个窗口位置改变的过程会触发以下一些消息:

    WM_MOVING窗口正在移动

    WM_SIZING窗口正在改变大小

    WM_WINDOWPOSCHANGING窗口正在移动/改变大小

    WM_WINDOWPOSCHANGED窗口已移动/改变大小

    WM_MOVE窗口已移动

    WM_SIZE窗口已改变大小。

    其中,WM_MOVING消息在窗口移动时触发,WM_SIZING消息在窗口改变大小时触发,WM_MOVE消息与WM_SIZE消息在窗口已经移动/改变大小后触发,而WM_WINDOWPOSCHANGED消息是在窗口移动/改变大小后触发,因此WM_WINDOWPOSCHANGING消息最适合用于窗口同步移动。

    在窗口正在移动/改变大小WM_WINDOWPOSCHANGING消息中,通过修改其参数可以阻止窗口的本次调整。暂时阻止宿主窗口的本次改变之后,再由宿主窗口调用DeferWindowPos系列API的方法实现拖动一个窗口,多个窗口同步移动,完成宿主窗口和跟随窗口的同步移动。

    图1为本发明提供的一种实现多个窗口同步移动的方法流程图。

    步骤S10:在宿主窗口移动或改变大小时,宿主窗口收到窗口正在改变的消息,所述消息中包括宿主窗口的新位置参数;

    步骤S20:判断所述宿主窗口的跟随窗口列表中的跟随窗口数量是否为 0,所述跟随列表中包括每个跟随窗口对应的跟随参数;

    步骤S30:如果不为0,则改变所述窗口正在改变的消息的参数,阻止所述宿主窗口本次的位置改变;

    步骤S40:根据所述宿主窗口的新位置参数计算所述宿主窗口的新位置和根据所述跟随窗口列表中每个跟随窗口的跟随参数计算所述每个跟随窗口的新位置;

    步骤S50:开启多窗口同步移动操作,根据计算出的所述宿主窗口的新位置和所述跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动。

    本发明提供的实现多个窗口同步移动的方法,当宿主窗口收到窗口正在改变的消息时,通过判断其跟随窗口列表中的跟随窗口数量是否为0判定本次是单个窗口的移动还是多个窗口的移动,若是多个窗口的移动,因为需要实现多个窗口的同步移动,所以不能让宿主窗口单独先完成或后完成自己的移动,则通过修改该窗口正在改变的消息的参数来阻止宿主窗口本次的位置改变;之后由宿主窗口开启多窗口同步移动操作,根据计算出的宿主窗口的新位置和跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动,由于该同步移动是将所有的窗口统一同时更新位置,所以不存在时间差,由此解决了现有技术中窗口之间的跟随不同步的问题。

    图2是本发明提供的实现多个窗口同步移动的方法的一个具体流程图。参见图2,该方法包括:

    步骤S101:宿主窗口初始化。

    步骤S102:跟随窗口计算出自己的跟随参数之后,向所述宿主窗口发送注册消息进行注册,所述宿主窗口将所述跟随窗口添加到跟随列表中,保存其跟随参数,并根据这些参数来调整该跟随窗口的位置与大小。

    跟随参数主要用于标识跟随窗口在宿主窗口上的位置,包括:左对齐、右对齐、上对齐、下对齐、跟随窗口的宽度、跟随窗口的高度等。例如一个窗口上的气泡跟随参数可以设置为:(右对齐20px,上对齐20px,宽度200px, 高度50px),表示该气泡的位置总是位于距离窗口右侧20像素,距离窗口顶部20像素的地方,并且该气泡的大小固定为200像素宽,50像素高。

    步骤S103:用鼠标拖动窗口,移动所述宿主窗口或改变所述宿主窗口大小。

    步骤S104:所述宿主窗口收到窗口正在改变的消息:窗口正在改变的消息为WM_WINDOWPOSCHANGING,在该消息中包括宿主窗口的新位置参数。

    步骤S105:判断跟随窗口列表数量,如果为0,判断没有跟随窗口则转到步骤S100,对WM_WINDOWPOSCHANGING消息不处理,交由系统继续完成本次宿主窗口的位置改变,之后结束操作;如果不为0,判断有跟随窗口则执行步骤S106。

    步骤S106:所述宿主窗口从收到的WM_WINDOWPOSCHANGING消息中计算出自己即将移动到的新位置。

    步骤S107:所述宿主窗口为所述WM_WINDOWPOSCHANGING消息强制添加两个参数:SWP_NOMOVE、SWP_NOSIZE,其中SWP_NOMOVE表示拒绝窗口本次的位置修改,SWP_NOSIZE表示拒绝窗口本次的大小修改,以阻止所述宿主窗口本次的位置改变。之后执行步骤S108。

    在Windows操作系统中,修改窗口位置或大小的方法主要包含:

    MoveWndow、SetWindowPos、BeginDeferWindowPos/DeferWindowPos/EndDefWindowPos等。

    MoveWindow和SetWindowPos主要是针对单个窗口的调整,而DeferWindowPos系列函数则是针对一组窗口的调整,即批量调整。本发明使用的就是DeferWindowPos系列函数来达到宿主窗口和所有跟随窗口同步移动。

    步骤S108:所述宿主窗口开启多窗口同步移动操作,计算出所述跟随窗口列表中的跟随窗口数量,记为count,调用BeginDeferWindowPos(count+1),表明将有count+1个窗口将要调整位置,+1表示宿主窗口也同步移动。之后 执行步骤S109。

    步骤S109:所述宿主窗口遍历跟随窗口列表,判断所述跟随窗口列表中是否有未被读取的跟随窗口记录,若是,则读取该条记录,并执行步骤S110;否则,执行步骤S112。

    步骤S110:根据所述宿主窗口的新位置和该跟随窗口的跟随参数,计算出该跟随窗口的新位置。

    步骤S111:为该跟随窗口调用DeferWindowPos,将该跟随窗口加入到所述多窗口同步移动操作中;并返回步骤S109继续读取下一条跟随窗口记录。

    步骤S112:所述宿主窗口调用DeferWindowPos,将自己也加入到所述多窗口同步移动操作中。

    步骤S113:所述宿主窗口从收到的WM_WINDOWPOSCHANGED消息计算出自己最终移动到的新位置,调用EndDeferWindowPos,完成所有窗口的同步移动操作。

    至此就完成了所有跟随窗口对宿主窗口的同步移动。

    图3是本发明提供的实现多个窗口同步移动的装置的结构示意图;图4是本发明提供的实现多个窗口同步移动的装置中所述多窗口同步移动单元的结构示意图。参见图3、图4,该装置包括:

    消息接收单元200,用于在宿主窗口移动或改变大小时,宿主窗口收到窗口正在改变的消息,所述消息中包括宿主窗口的新位置参数;

    跟随窗口数量判断单元210,用于判断所述宿主窗口的跟随窗口列表中跟随窗口数量是否为0,所述跟随列表中包括每个跟随窗口对应的跟随参数;

    移动处理单元220,用于在在跟随窗口数量不为0时,改变所述窗口正在改变的消息的参数,以阻止所述宿主窗口本次的位置改变;

    多窗口同步移动单元230,用于根据所述宿主窗口的新位置参数计算所述宿主窗口的新位置和根据所述跟随窗口列表中每个跟随窗口的跟随参数计 算所述每个跟随窗口的新位置;以及开启多窗口同步移动操作,根据计算出的所述宿主窗口的新位置和所述跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动。

    其中,所述移动处理单元220,还用于在跟随窗口数量为0时,进行所述宿主窗口本次的位置改变。

    其中,所述装置还包括:

    跟随窗口注册单元240,用于所述宿主窗口接收跟随窗口发送的注册消息,所述注册消息中携带所述跟随窗口的跟随参数;所述宿主窗口将所述跟随窗口添加到跟随窗口列表中,并保存该跟随窗口的跟随参数。

    所述宿主窗口根据跟随窗口的跟随参数调整该跟随窗口的位置与大小。

    其中,所述移动处理单元220具体用于,所述窗口正在改变的消息为WM_WINDOWPOSCHANGING消息,在跟随窗口数量不为0时,所述宿主窗口为所述WM_WINDOWPOSCHANGING消息强制添加两个标记:

    SWP_NOMOVE、SWP_NOSIZE,其中SWP_NOMOVE表示拒绝宿主窗口本次的位置修改,SWP_NOSIZE表示拒绝宿主窗口本次的大小修改,以阻止所述宿主窗口本次的位置改变。

    其中,参见图4,所述多窗口同步移动单元230包括:

    同步移动开启???10,用于所述宿主窗口计算出自己即将移动到的新位置,并计算出所述跟随窗口列表中的跟随窗口数量,记为count,调用BeginDeferWindowPos(count+1),开启多窗口同步移动操作;

    同步移动操作???20,用于所述宿主窗口遍历所述跟随窗口列表,根据所述宿主窗口的新位置和每个跟随窗口的跟随参数,计算出该跟随窗口的新位置,为该跟随窗口调用DeferWindowPos,将该跟随窗口加入到所述多窗口同步移动操作中;所述宿主窗口调用DeferWindowPos,将自己也加入到所述多窗口同步移动操作中;

    同步移动结束???30,用于所述宿主窗口计算出自己最终移动到的新位置,调用EndDeferWindowPos,完成所有窗口的同步移动操作。

    其中,所述宿主窗口从收到的WM_WINDOWPOSCHANGING消息中计算出自己即将移动到的新位置,从收到的WM_WINDOWPOSCHANGED消息计算出自己最终移动到的新位置。

    综上所述,本发明提供的一种实现多个窗口同步移动的方法和装置,当宿主窗口收到窗口正在改变的消息时,通过判断跟随窗口列表中的跟随窗口数量是否为0判定本次是单个窗口的移动还是多个窗口的移动,若是多个窗口的移动,因为需要实现多个窗口的同步移动,所以不能让宿主窗口单独先完成或后完成自己的移动,则通过修改该窗口正在改变的消息的参数来阻止宿主窗口本次的位置改变;之后由宿主窗口开启多窗口同步移动操作,根据计算出的宿主窗口的新位置和跟随窗口列表中每个跟随窗口的新位置,完成所有窗口的同步移动,由于该同步移动是将所有的窗口统一同时更新位置,所以不存在时间差,由此解决了现有技术中窗口之间的跟随不同步的问题。

    本发明实施例首先通过修改WM_WINDOWPOSCHANGING的参数,阻止宿主窗口的位置改变,之后通过DeferWindowPos系列API实现拖动一个窗口,多个窗口的同步移动的效果,解决了时间差的问题,实现了所有窗口同时更新位置??梢栽て诘氖?,通过扩展跟随参数、监听宿主窗口或跟随窗口的位置移动范围可以实现更复杂的跟随逻辑,例如跟随窗口在某些情况下禁止跟随、窗口磁性吸附、磁性分离等。

    以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的?;し段?。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的?;し段?。

    关于本文
    本文标题:一种实现多个窗口同步移动的方法和装置.pdf
    链接地址://www.4mum.com.cn/p-6004612.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 江苏十一选五最大遗漏 河北11选5走势图基本走势图 天天乐棋牌app 北京pk10牛牛计划 福彩3d直选破解软件 正规棋牌正规棋牌有哪些 爱乐彩票五分彩走势图 分分彩走势图 江苏11选5今日直播 彩票选取软件 广西十一选五开奖情况 易发游戏斗地主 双色球蓝球号码连续出过多少期 七乐彩走势图表综合版 移动棋牌10000金币 炒股怎样融资