一种在即时消息窗口中联系人列表自动滚动的方法

文档序号:6638284阅读:192来源:国知局
专利名称:一种在即时消息窗口中联系人列表自动滚动的方法
技术领域
本发明涉及即时通信联系人列表的显示技术,特别是涉及一种在即时消息(IM)窗口中联系人列表自动滚动的方法。
背景技术
随着网络即时通信工具的发展,越来越多的网民使用即时通信工具进行交流。而随着使用即时通信工具的用户越来越多,用户在IM窗口中所添加的好友和陌生人的数量也越来越多,好友和陌生人统称联系人。为了使用户方便地管理联系人,当前的IM工具多数提供联系人分组的功能,即用户可以将多个联系人分为若干组,例如,将联系人分为“同学”、“同事”等分组,每个分组包含多个联系人。
随着用户在IM工具中添加的联系人数目不断增加,用户通常在一段时间后会对联系人进行清理,这就需要用户在IM工具的主面板中查看大量联系人的资料。
在现有技术中,当用户需要查看联系人时,必须通过拖动IM工具窗口旁边的滚动条浏览联系人列表,联系人列表显示不属于所有分组的联系人和分组,对于属于分组的联系人,需要用户单击或双击分组才能浏览当前分组中所有的联系人。
由此可见,IM窗口上联系人列表的滚动是由用户手动控制的,用户的操作过程比较麻烦,需要手动拖动联系人列表子窗口旁边的滚动条内的滚动块。而且,当看到某个分组后,如果想查看该分组中的联系人,需要单击或双击打开这个分组,然后继续拖动滚动块浏览该分组中的联系人,整个过程影响了用户的使用体验。尤其是,当用户不清楚某个联系人位于哪个分组时,需要逐个打开多个分组查找,造成用户的操作更加费时和麻烦。

发明内容
本发明的主要目的在于提供一种在IM窗口中联系人列表自动滚动的方法,由IM窗口内鼠标的位置变化触发联系人列表的自动滚动。
本发明的目的是通过如下技术方案实现的一种在即时消息窗口中联系人列表自动滚动的方法,包括a、根据鼠标在即时消息窗口内的位置变化确定联系人列表的滚动方向;b、按照所确定的滚动方向和预先设置的滚动速度滚动联系人列表。
优选地,步骤a之前进一步包括即时消息应用通过Windows系统的钩子函数捕获鼠标在屏幕上的位置变化,当捕获到鼠标移动到即时消息窗口范围内时,由即时消息应用接管Windows系统的鼠标消息循环。
其中,步骤a所述根据鼠标在即时消息窗口内的位置变化确定联系人列表的滚动方向具体为a1、当截获鼠标在即时消息窗口内的移动消息时,记录移动前鼠标所在位置的坐标和移动后鼠标所在位置的坐标;a2、判断移动前鼠标是否位于联系人列表子窗口内,如果是,则执行步骤a3;否则返回步骤a1;a3、判断移动后鼠标的纵坐标是否小于即时消息窗口中联系人列表子窗口最顶部位置的纵坐标,如果是,则确定联系人列表的滚动方向为向上滚动,执行步骤b;否则执行步骤a4;a4、判断当前鼠标所在位置的纵坐标是否大于即时消息窗口中联系人列表子窗口最底部位置的纵坐标,如果是,则确定联系人列表的滚动方向为向下滚动;否则返回步骤a1。
优选地,步骤a1和a2之间进一步包括判断移动后鼠标是否位于即时消息窗口内,如果是,则执行步骤a2;否则退出本流程。
其中,步骤b所述按照所确定的滚动方向和预先设置的滚动速度使联系人列表自动滚动具体为b1、按照所确定的滚动方向和预先设置的滚动速度使联系人列表子窗口的滚动条内的滚动块滚动;b2、根据滚动块的位置变化更新联系人列表子窗口中显示的联系人和/或联系人分组。
其中,步骤b1所述按照所确定的滚动方向和预先设置的滚动速度使滚动块滚动具体为设置滚动定时器,用于以预设的时间间隔触发滚动块的滚动;按照所确定的滚动方向、预先设置的滚动速度和预设的时间间隔计算滚动块的下一位置,并由滚动定时器触发将滚动块滚动到所计算出的下一位置。
其中,如果所确定的滚动方向为向上滚动,则滚动块的下一位置为滚动块的当前位置减去滚动速度与所述时间间隔的乘积;如果所确定的滚动方向为向下滚动,则滚动块的下一位置为滚动块的当前位置加上滚动速度与所述时间间隔的乘积。
其中,步骤b2所述根据滚动块的位置变化更新联系人列表子窗口所显示的联系人和/或联系人分组具体为根据预先设定的联系人列表子窗口中成员项的高度、当前联系人列表中联系人和/或联系人分组的个数以及滚动条的长度确定当前滚动比例;将联系人列表中所有联系人和/或联系人分组的位置加上滚动块的位置差值与当前滚动比例的乘积,并显示落在联系人列表子窗口中的所有联系人和/或联系人分组,其中,滚动块的位置差值为下一位置与当前位置之差。
其中,步骤b2所述确定当前滚动比例具体为将预先设定的联系人列表子窗口中成员项的高度与当前联系人列表中联系人和/或联系人分组的个数的乘积与滚动条的长度之比作为当前滚动比例;所述将联系人列表中所有联系人和/或联系人分组的位置加上滚动块的位置差值与当前滚动比例的乘积具体为将所有联系人和/或联系人分组的成员项的顶边纵坐标和底边纵坐标加上滚动块的位置差值与当前滚动比例的乘积,并保持左边横坐标和右边横坐标的值不变。
其中,所述步骤b2之后,进一步包括根据检测到的鼠标动作或滚动块的位置判断是否结束滚动,如果是,则结束滚动并退出本流程;否则返回步骤b1。
其中,所述根据检测到的鼠标动作或滚动块位置判断是否结束滚动具体为判断是否检测到鼠标单击或双击消息,或滚动块是否已经滚动到滚动条的终点,如果满足上述任一条件,则结束滚动;如果上述两个条件均不满足,则不结束滚动。
其中,所述判断滚动块是否已经达到滚动条的终点具体为如果所确定的滚动方向为向上滚动,判断滚动块的当前位置是否已经到达滚动条的最顶部的位置;如果所确定的滚动方向为向下滚动,判断滚动块的当前位置是否已经到达滚动条的最底部的位置。
其中,所述步骤b2进一步包括如果所确定的滚动方向为向上滚动,判断联系人列表子窗口最底部所显示的是否是联系人分组,如果是,则展开该联系人分组,然后返回步骤b1;否则直接返回步骤b1;如果所确定的滚动方向为向下滚动,判断联系人列表子窗口最顶部所显示的是否是联系人分组,如果是,则展开该联系人分组,然后返回步骤b1;否则直接返回步骤b1。
从上述技术方案可以看出,本发明提供的在IM窗口中滚动联系人列表的方法可以通过鼠标的位置变化判断用户所希望的联系人列表的滚动方向,然后根据滚动方向和滚动速度自动滚动联系人列表。从而避免了用户通过点击鼠标滚动联系人列表的繁琐动作。而且,由于联系人列表中的联系人分组可以自动展开,显示该分组内所有联系人,也避免了用户通过点击鼠标展开联系人分组的繁琐动作。这样,可以极大地方便用户的操作过程,进一步提高用户使用IM工具的满意度。


图1是根据本发明的在IM窗口中联系人列表滚动的概括性流程图;图2是根据本发明一优选实施例的IM应用获取鼠标在屏幕上的位置变化的流程图;图3是IM窗口和联系人列表子窗口的一个示范性示意图;图4是根据本发明一优选实施例的在IM窗口中联系人列表自动滚动的方法流程图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参见图1,概括说来,本发明提供的在IM窗口中联系人列表自动滚动的方法包括如下步骤步骤101IM应用捕获鼠标在IM窗口内的位置变化,并根据所获取的位置变化确定用户希望向上还是向下滚动联系人列表;步骤102IM应用根据所确定的联系人列表的滚动方向以及预先设置的滚动速度滚动联系人列表。
下面通过一优选实施例对本发明的技术方案进行详细说明。
首先,如果IM窗口不是当前Windows的焦点窗口,IM应用需要获知当前鼠标的移位消息。在本优选实施例中,通过在IM应用中挂接一钩子(HOOK)函数来获得鼠标在屏幕中的移动消息,从而在IM窗口不是当前Windows焦点窗口的情况下,仍然能够捕获鼠标的移动消息。
HOOK函数是Windows系统的系统函数,是Windows系统消息处理机制的一个平台。通过调用HOOK函数,IM应用可以设置监视指定消息的发出,如果有指定消息发出,HOOK函数先于IM应用捕获该消息,即HOOK函数首先对该消息进行处理,对该消息的处理可以是改变该消息,也可以强制结束该消息的传递,当然也可以对该消息不作任何处理,继续传递该消息。
参见图2,IM应用获取鼠标在屏幕上的位置变化的流程具体包括如下步骤步骤201在IM应用中挂接HOOK函数,并设置HOOK函数仅处理鼠标消息,这样,IM应用可获取鼠标在当前屏幕上的移动、单击和双击等消息;步骤202当HOOK函数获得鼠标移动的消息后,通知IM应用;步骤203IM应用通过调用相关Windows API函数获取当前鼠标所在位置的坐标以及IM窗口的坐标范围;需要说明,这里以位于屏幕左上角的点为坐标原点,位于屏幕右下角的点的横坐标和纵坐标分别为屏幕内所有点的横坐标和纵坐标的最大值;步骤204IM应用判断当前鼠标的位置是否位于IM窗口范围内,如果是,则执行步骤205;否则返回步骤202;步骤205IM应用通过调用相关Windows API函数将IM窗口设置为当前所有应用的窗口的焦点窗口,从而IM应用负责接管Windows系统的鼠标消息循环。
上述步骤201至205是IM窗口不是当前屏幕上焦点窗口时,IM窗口利用HOOK函数检测鼠标的移动,从而在鼠标移动到IM窗口之内自动将IM窗口切换为焦点窗口,从而使用户只需通过移动鼠标在IM窗口内,无需点击鼠标即可设置IM窗口为焦点窗口。
参见图3和图4,对本优选实施例的IM应用根据鼠标在IM窗口内的移动使联系人列表滚动予以详细说明。
图3示出了IM窗口和联系人列表子窗口的一个示范性示意图。从图3中可见,整个外框之内的区域为IM窗口,联系人列表子窗口在IM窗口内,图3所示的当前联系人列表子窗口中最上部显示的是“我的联系人”,最下部显示的是“腾讯同事”。
联系人列表子窗口中同时显示联系人和联系人分组,其中联系人分组可展开以显示该分组内的所有联系人,如图3所示,“家人亲戚”是一个联系人分组,其展开后可见该分组包含六个联系人,从“小雨滴”到“葡萄/mn”。联系人列表子窗口的右方为滚动条,滚动条中有可上下移动的滚动块,滚动块的移动将带动联系人列表的滚动,如果滚动块向上移动,则联系人列表向上滚动;如果滚动块向下移动,则联系人列表向下滚动。
参见图4,IM应用根据鼠标在IM窗口内的移动使联系人列表滚动的流程具体包括如下步骤步骤401IM应用确定当前IM窗口的坐标范围和联系人列表子窗口的坐标范围。
需要说明,这里以位于屏幕左上角的点为坐标原点,位于屏幕右下角的点的横坐标和纵坐标分别为屏幕内所有点的横坐标和纵坐标的最大值。
步骤402IM应用捕获到鼠标在当前屏幕上的移动消息后,记录移动前鼠标所在位置的坐标和移动后鼠标所在位置的坐标。在这里,移动前鼠标所在的位置是在IM窗口的坐标范围内。
步骤403IM应用判断移动后的鼠标是否位于IM窗口的坐标范围内,如果是,则执行步骤404;否则,说明用户退出IM应用,结束本流程。
步骤404IM应用判断移动前的鼠标是否位于联系人列表子窗口的坐标范围内,如果是,则执行步骤405;否则返回步骤402,继续捕获鼠标的移动消息。
步骤405IM应用判断移动后鼠标的纵坐标是否小于联系人列表子窗口最顶部的位置的纵坐标,如果是,则说明用户有向上滚动联系人列表的意向,设置滚动方向标识的值为-1,然后执行步骤407;否则,执行步骤406。
步骤406IM应用判断移动后鼠标的纵坐标是否大于联系人列表子窗口最底部的位置的横坐标,如果是,则说明用户有向下滚动联系人列表的意向,设置滚动方向标识的值为1,然后执行步骤407;否则,说明用户没有滚动联系人列表的意向,返回步骤402,继续捕获鼠标的移动消息。
步骤407启动滚动定时器,用于以设定的时间间隔触发滚动条内滚动块的滚动。
步骤408按照滚动方向标识的值和预先设置的滚动速度计算联系人列表子窗口的滚动条中滚动块的下一位置,下一位置=当前位置+滚动方向标识的值×(滚动速度×预先设定的时间间隔)。
步骤409触发滚动块滚动到步骤406中计算出的下一位置,并根据滚动块的位置差值调整IM窗口中联系人列表子窗口中所显示的联系人及联系人分组。
每个显示在主面板中的联系人列表中的成员均对应一成员项,成员项的位置由一高度固定的矩形结构确定,该矩形结构的参数包括顶边纵坐标(Top)、底边纵坐标(Bottom)、左边横坐标(Left)和右边横坐标(Right),其中Top和Bottom参数描述成员项的纵向位置,Left和Right参数描述成员项的横向位置。
调整联系人列表子窗口中所显示的联系人及联系人分组的步骤如下a、计算当前联系人列表中所有联系人和联系人分组的成员项的高度之和;b、将当前联系人列表中所有联系人和联系人分组的成员项高度之和与当前联系人列表子窗口中滚动条的长度之比作为滚动比例;c、对于所有联系人及联系人分组的成员项,在滚动块滚动时只有Top和Bottom这两个参数值发生变化,变化的公式如下下一位置的Top参数值=当前位置的Top参数值+(下一位置-当前位置)×滚动比例,下一位置的Bottom参数值=当前位置的Bottom参数值+(下一位置-当前位置)×滚动比例。
因此,在联系人列表子窗口中,显示出联系人及联系人分组向上或向下滚动的效果。
步骤410判断当前联系人列表子窗口的最底部或最顶部所显示的联系人是否是联系人分组,如果是,则执行步骤411;否则,执行步骤412;如果滚动方向标识的值为-1,则判断当前联系人列表子窗口的最底部所显示的联系人是否是联系人分组;如果滚动方向标识的值为1,则判断当前联系人列表子窗口的最顶部所显示的联系人是否是联系人分组。
步骤411获取该联系人分组的标识ID,并在联系人列表子窗口中显示该标识ID所对应的分组中所有联系人。
步骤412判断鼠标是否发生单击或双击或滚动块是否到达滚动条的终点,如果满足任一条件,则执行步骤413;如果两个条件均不满足,则返回步骤408。
步骤413关闭滚动定时器,结束联系人列表的滚动。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种在即时消息窗口中联系人列表自动滚动的方法,其特征在于,包括a、根据鼠标在即时消息窗口内的位置变化确定联系人列表的滚动方向;b、按照所确定的滚动方向和预先设置的滚动速度滚动联系人列表。
2.根据权利要求1所述的方法,其特征在于,步骤a之前进一步包括即时消息应用通过Windows系统的钩子函数捕获鼠标在屏幕上的位置变化,当捕获到鼠标移动到即时消息窗口范围内时,由即时消息应用接管Windows系统的鼠标消息循环。
3.根据权利要求1所述的方法,其特征在于,步骤a所述根据鼠标在即时消息窗口内的位置变化确定联系人列表的滚动方向具体为a1、当截获鼠标在即时消息窗口内的移动消息时,记录移动前鼠标所在位置的坐标和移动后鼠标所在位置的坐标;a2、判断移动前鼠标是否位于联系人列表子窗口内,如果是,则执行步骤a3;否则返回步骤a1;a3、判断移动后鼠标的纵坐标是否小于即时消息窗口中联系人列表子窗口最顶部位置的纵坐标,如果是,则确定联系人列表的滚动方向为向上滚动,执行步骤b;否则执行步骤a4;a4、判断当前鼠标所在位置的纵坐标是否大于即时消息窗口中联系人列表子窗口最底部位置的纵坐标,如果是,则确定联系人列表的滚动方向为向下滚动;否则返回步骤a1。
4.根据权利要求3所述的方法,其特征在于,步骤a1和a2之间进一步包括判断移动后鼠标是否位于即时消息窗口内,如果是,则执行步骤a2;否则退出本流程。
5.根据权利要求1所述的方法,其特征在于,步骤b所述按照所确定的滚动方向和预先设置的滚动速度使联系人列表自动滚动具体为b1、按照所确定的滚动方向和预先设置的滚动速度使联系人列表子窗口的滚动条内的滚动块滚动;b2、根据滚动块的位置变化更新联系人列表子窗口中显示的联系人和/或联系人分组。
6.根据权利要求5所述的方法,其特征在于,步骤b1所述按照所确定的滚动方向和预先设置的滚动速度使滚动块滚动具体为设置滚动定时器,用于以预设的时间间隔触发滚动块的滚动;按照所确定的滚动方向、预先设置的滚动速度和预设的时间间隔计算滚动块的下一位置,并由滚动定时器触发将滚动块滚动到所计算出的下一位置。
7.根据权利要求6所述的方法,其特征在于,如果所确定的滚动方向为向上滚动,则滚动块的下一位置为滚动块的当前位置减去滚动速度与所述时间间隔的乘积;如果所确定的滚动方向为向下滚动,则滚动块的下一位置为滚动块的当前位置加上滚动速度与所述时间间隔的乘积。
8.根据权利要求5所述的方法,其特征在于,步骤b2所述根据滚动块的位置变化更新联系人列表子窗口所显示的联系人和/或联系人分组具体为根据预先设定的联系人列表子窗口中成员项的高度、当前联系人列表中联系人和/或联系人分组的个数以及滚动条的长度确定当前滚动比例;将联系人列表中所有联系人和/或联系人分组的位置加上滚动块的位置差值与当前滚动比例的乘积,并显示落在联系人列表子窗口中的所有联系人和/或联系人分组,其中,滚动块的位置差值为下一位置与当前位置之差。
9.根据权利要求8所述的方法,其特征在于,步骤b2所述确定当前滚动比例具体为将预先设定的联系人列表子窗口中成员项的高度与当前联系人列表中联系人和/或联系人分组的个数的乘积与滚动条的长度之比作为当前滚动比例;所述将联系人列表中所有联系人和/或联系人分组的位置加上滚动块的位置差值与当前滚动比例的乘积具体为将所有联系人和/或联系人分组的成员项的顶边纵坐标和底边纵坐标加上滚动块的位置差值与当前滚动比例的乘积,并保持左边横坐标和右边横坐标的值不变。
10.根据权利要求5所述的方法,其特征在于,所述步骤b2之后,进一步包括根据检测到的鼠标动作或滚动块的位置判断是否结束滚动,如果是,则结束滚动并退出本流程;否则返回步骤b1。
11.根据权利要求10所述的方法,其特征在于,所述根据检测到的鼠标动作或滚动块位置判断是否结束滚动具体为判断是否检测到鼠标单击或双击消息,或滚动块是否已经滚动到滚动条的终点,如果满足上述任一条件,则结束滚动;如果上述两个条件均不满足,则不结束滚动。
12.根据权利要求11所述的方法,其特征在于,所述判断滚动块是否已经达到滚动条的终点具体为如果所确定的滚动方向为向上滚动,判断滚动块的当前位置是否已经到达滚动条的最顶部的位置;如果所确定的滚动方向为向下滚动,判断滚动块的当前位置是否已经到达滚动条的最底部的位置。
13.根据权利要求5所述的方法,其特征在于,所述步骤b2进一步包括如果所确定的滚动方向为向上滚动,判断联系人列表子窗口最底部所显示的是否是联系人分组,如果是,则展开该联系人分组,然后返回步骤b1;否则直接返回步骤b1;如果所确定的滚动方向为向下滚动,判断联系人列表子窗口最顶部所显示的是否是联系人分组,如果是,则展开该联系人分组,然后返回步骤b1;否则直接返回步骤b1。
全文摘要
本发明提供了一种在IM窗口中联系人列表自动滚动的方法,该方法是根据鼠标在即时消息窗口内的位置变化确定联系人列表的滚动方向;按照所确定的滚动方向和预先设置的滚动速度滚动联系人列表。使用本发明的该方法可以避免用户通过点击鼠标滚动联系人列表的繁琐动作。而且,由于联系人列表中的联系人分组可以自动展开,显示该分组内所有联系人,也避免了用户通过点击鼠标展开联系人分组的繁琐动作。这样,可以极大地方便用户的操作过程,进一步提高用户使用IM工具的满意度。
文档编号G06F3/033GK1916825SQ200510092808
公开日2007年2月21日 申请日期2005年8月18日 优先权日2005年8月18日
发明者李斌 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1