CN1908877A - 一种自动锁定聊天记录可见页面的方法 - Google Patents

一种自动锁定聊天记录可见页面的方法 Download PDF

Info

Publication number
CN1908877A
CN1908877A CNA2005100898260A CN200510089826A CN1908877A CN 1908877 A CN1908877 A CN 1908877A CN A2005100898260 A CNA2005100898260 A CN A2005100898260A CN 200510089826 A CN200510089826 A CN 200510089826A CN 1908877 A CN1908877 A CN 1908877A
Authority
CN
China
Prior art keywords
chat record
height
subwindow
visible page
new information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005100898260A
Other languages
English (en)
Other versions
CN100392578C (zh
Inventor
李斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CNB2005100898260A priority Critical patent/CN100392578C/zh
Publication of CN1908877A publication Critical patent/CN1908877A/zh
Application granted granted Critical
Publication of CN100392578C publication Critical patent/CN100392578C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种自动锁定聊天记录可见页面的方法,预先设定锁定参考坐标,在IM接收到新消息后,确定聊天记录子窗口的实际高度、聊天记录可见页面的高度、以及当前锁定参考坐标在聊天记录子窗口中的高度;用聊天记录子窗口可见页面的高度与聊天记录子窗口的实际高度之比确定聊天记录子窗口的滚动条中滚动阀的大小,用当前锁定参考标记在聊天记录子窗口中的高度与聊天记录子窗口的实际高度之比确定所述滚动阀的位置;依照所确定的滚动阀的大小和位置重绘制滚动条,并重新调整可见页面,以将可见页面锁定在当前锁定参考标记处。本发明可在IM收到新消息时,自动锁定聊天记录可见页面在当前的锁定参考标记处,便于用户查看聊天记录。

Description

一种自动锁定聊天记录可见页面的方法
技术领域
本发明涉及网络即时通讯工具(IM)的页面显示技术,尤其涉及一种在IM中,当收到新消息后,聊天记录子窗口自动锁定聊天记录可见页面的方法。
背景技术
网络即时通讯工具(IM)软件发展到今天,已经被大多数的网民所接受。例如QQ、TM、POPO、MSN、RTX等IM软件已经被广泛使用。在IM软件中,用户使用频率最高的功能就是利用IM软件与联系人进行聊天交流沟通,这个也是IM软件最基本的功能,即可以使用户实现通过网络进行实时沟通。随着IM软件的不断发展,用户不但可以与一个联系人进行单对单的聊天沟通,而且还可以与多人组成讨论组就某个话题进行共同的交流沟通,同时也可以建立各种类型的群,与具有同一特征的联系人进行群聊天的交流。这样,IM软件中的聊天窗口是用户接触最多的一个IM软件模块。
图1为当前典型的IM软件聊天窗口的组成示意图。参见图1,聊天窗口主要由聊天记录子窗口11以及聊天信息输入子窗口12两部分组成,聊天记录子窗口11负责记录显示聊天记录,例如:用户发送以及接收到的消息,以及发送或接收的状态;聊天记录子窗口11中用于记录显示所有聊天记录的区域为该聊天记录子窗口11的客户区,也就是在聊天记录子窗口中滚动条所能拖动的所有区域,也可以称为该聊天记录子窗口的完整页面;所述完整页面中,在不拖动滚动条的情况下,用户当前所能看到的聊天记录子窗口的客户区部分为聊天记录窗口客户区的可见页面,本文中简称为聊天记录可见页面。聊天信息输入子窗口12主要是用户输入消息的编辑窗口。当用户正在进行聊天沟通的时候,经常需要拖动聊天记录子窗口11右边滚动条13中的滚动阀14,以回过头来查看聊天记录,例如:曾经发送和接收到的消息,以及用户或者通信对方所发起的发送文件、发送音视频等长连接的“接受”或“拒绝”操作等。
在当前的IM中,当用户通过拖动聊天记录子窗口11的滚动阀14查看聊天记录时,如果接收到对方IM发来的新消息,则聊天记录子窗口11的聊天记录可见页面又会滚动到该窗口的最底部。图2为现有IM中当接收到新消息时对聊天记录可见页面进行调整的处理流程图。参见图2,该流程包括:
步骤201、接收并解析新消息的数据包,根据当前聊天记录子窗口客户区的宽度以及解析出的消息内容以及消息的格式信息,计算该新消息在聊天记录子窗口11客户区中占用的长度和高度。
步骤202、将步骤201中所确定的新消息在聊天记录子窗口客户区中占用的高度加上原有聊天记录子窗口客户区的高度,得到当前聊天记录子窗口客户区的实际高度,此处的当前聊天记录子窗口客户区为整个用于显示聊天记录的区域,包括可见页面和不可见页面。
步骤203、设置聊天记录子窗口滚动条内滚动阀的位置为该滚动条的最底部。
步骤204、根据句柄以及IM所在计算机操作系统的应用编程接口(API)的底层函数计算当前聊天记录子窗口客户区中可见页面的矩形数据,获得当前聊天记录可见页面的高度。
步骤205、计算当前聊天记录可见页面的高度与所述整个聊天记录子窗口客户区的实际高度的比值,该比值和滚动阀的大小与滚动条的高度之比相同,接着根据滚动条的高度(一般情况下滚动条的高度和聊天记录子窗口客户区的高度相同)和所述的比值确定滚动条中滚动阀的大小。
步骤206、聊天记录子窗口发送重新绘制滚动条的消息到滚动条子窗口中,该消息的参数包括上述确定的滚动阀的大小和位置,滚动条子窗口根据该参数重新绘制滚动条,所述聊天记录可见页面跟随重新绘制后的滚动条进行滚动。
由于现有技术的上述处理过程,使得在IM的聊天过程中,当用户通过拖动聊天记录子窗口的滚动阀查看聊天记录时,一旦收到新消息,则聊天记录可见页面又会滚动到聊天记录子窗口的最底部,此时用户只能再次拖动滚动条来继续查看前面的聊天记录。特别是在讨论组或者群的聊天记录子窗口中,由于讨论组或者群的成员非常多,每个成员都会发送不同的信息,造成用户接收到的新消息的量也非常大,如果用户需要返回前面去看聊天记录,则基本上不能满足用户的要求,因为滚动条会随着新消息的到来自动滚动到聊天记录子窗口的底部,造成了用户基本上无法回到前面页面去查看聊天记录。
因此,现有IM的处理方案不能在收到新消息时自动将当前查看的聊天记录内容锁定在当前的聊天记录可见页面上,用户只能重新拖动滚动条返回原来查看的聊天记录可见页面,这样造成用户查看消息的聊天记录非常不方便,严重影响了用户使用IM的便利性。
发明内容
有鉴于此,本发明的主要目的在于提供一种自动锁定聊天记录可见页面的方法,以在IM收到新消息时,实现自动调整滚动阀,锁定聊天记录可见页面,便于用户查看聊天记录。
一种自动锁定聊天记录可见页面的方法,该方法为聊天记录可见页面预设锁定参考标记,包括:
A、在IM接收到新消息后,添加该新消息到聊天记录子窗口中,并确定添加新消息后的聊天记录子窗口客户区的高度、当前聊天记录可见页面的高度、以及所述锁定参考标记当前在聊天记录子窗口客户区中的高度;
B、用当前聊天记录可见页面的高度与聊天记录子窗口客户区的高度之比重新确定聊天记录子窗口的滚动条中滚动阀的大小,用所述锁定参考标记当前在聊天记录子窗口客户区中的高度与聊天记录子窗口客户区的高度之比重新确定所述滚动阀在所述滚动条中的位置;
C、依照所重新确定的滚动阀的大小和在所述滚动条中的位置重绘制滚动条,并依照重绘制的滚动条重新调整所述聊天记录可见页面,将该聊天记录可见页面锁定在所述锁定参考标记处。
优选地,所述聊天记录可见页面的锁定参考标记为光标。
所述方法进一步包括:根据光标在聊天记录子窗口中的高度判断光标是否处于聊天记录子窗口的顶部或底部,如果是,则在收到新消息后,只重新确定所述滚动条中滚动阀的大小,并只重新绘制滚动阀的大小、保持滚动阀在滚动条中的高度不变。
在IM接收到新消息之前,该方法进一步包括:确定聊天记录子窗口客户区的高度、以及聊天记录可见页面的高度;当监测到光标纵向移动时,则确定当前光标在聊天记录子窗口客户区中的高度;用当前光标在聊天记录子窗口客户区中的高度与聊天记录子窗口客户区的高度之比重新确定所述滚动阀在所述滚动条中的高度;依照所重新确定的滚动阀在所述滚动条中的高度重绘制滚动条,并依照重绘制的滚动条重新调整所述聊天记录可见页面,以将当前聊天记录可见页面锁定在当前光标位置处。
所述确定当前光标在聊天记录子窗口客户区中的高度是:通过调用当前操作系统的应用编程接口API的底层函数来确定的。
优选地,所述聊天记录可见页面的锁定参考标记为:在聊天记录可见页面的上的相对高度与该聊天记录可见页面自身高度的比率相对固定的参考标记。所述参考标记可以为所述聊天记录可见页面的顶部坐标或底部坐标。
所述参考标记在聊天记录可见页面上的相对高度与聊天记录可见页面自身高度的比率与所述滚动阀的位置坐标在该滚动阀上的相对高度与滚动阀自身高度的比率相同。
该方法进一步包括:根据所述参考标记在聊天记录子窗口中的高度判断当前聊天记录可见页面是否处于聊天记录子窗口的顶部,如果是,则在收到新消息后,只重新确定所述滚动条中滚动阀的大小,并只重新绘制滚动阀的大小、保持滚动阀在滚动条中的高度不变。
所述当前锁定参考标记在聊天记录子窗口客户区中的高度是根据聊天记录可见页面的顶部或底部坐标在聊天记录子窗口客户区中的高度、以及该锁定参考标记在聊天记录可见页面内的相对高度确定的。
优选地,所述确定聊天记录子窗口的实际高度、确定聊天记录可见页面的高度是:通过以句柄为参数调用当前操作系统的应用编程接口的底层函数来确定的。
优选地,所述收到新消息后,所述确定聊天记录子窗口客户区的高度的方法为:根据新消息文本的长度、消息文本中字体的格式、以及当前聊天记录子窗口客户区的宽度确定该新消息在聊天记录子窗口中占用的行数,该行数再乘以显示字体的高度,得到新消息文本的实际显示高度;将得到的新消息文本的实际显示高度与未收到新消息时聊天记录子窗口客户区的高度相加,得到收到新消息后聊天记录子窗口的实际高度。
优选地,该方法进一步包括:判断是否接收到新消息,如果是,则调用操作系统的API函数定时闪烁所述滚动条最底端的向下滚动按钮。
由于本发明预先设定聊天记录可见页面的锁定参考标记,在IM接收到新消息后,根据当前聊天记录子窗口客户区的高度、当前聊天记录可见页面的高度、以及当前的锁定参考标记的位置重新确定滚动条内滚动阀的大小和位置,根据新确定的滚动阀的大小和位置绘制滚动条,并调整可见页面,使可见页面锁定在所述锁定参考标记的当前位置处,因此可以实现在IM收到新消息时自动调整滚动阀,使聊天记录可见页面锁定在当前的锁定参考标记的位置上,使得用户不必重新拖动滚动条返回原来查看的聊天记录可见页面,便于用户查看聊天记录,提高用户使用IM的体验和满意程度。
本发明提出了根据光标锁定聊天记录可见页面,和根据聊天记录可见页面内的固定参考标记锁定聊天记录可见页面两种实施方式,用户可以自由选择使用。本发明还可在光标位置纵向改变时重新确定滚动阀的大小和位置,因此可以实现实时根据光标位置的改变将聊天记录可见页面锁定在光标位置上,进一步方便了用户查看聊天记录。
本发明中,无论用户是在利用IM进行单对单的聊天沟通过程还是进行多人对话的过程,都可以保证聊天信息聊天记录子窗口的滚动根据用户的要求,通过识别锁定参考标记进行自动的锁定,保证了用户使用的便利性,极大方便了用户使用IM软件进行聊天沟通交流的过程。
附图说明
图1为当前典型的IM软件聊天窗口的组成示意图;
图2为现有IM中当接收到新消息时对聊天记录可见页面进行调整的处理流程图;
图3为本发明第一实施例所述通过识别光标位置自动锁定聊天记录可见页面的流程图;
图4为本发明第二实施例所述通过识别聊天记录可见页面内的参考标记自动锁定聊天记录可见页面的流程图。
具体实施方式
下面通过附图和具体实施例对本发明的技术方案进行详细描述。
本发明的主体方案包括:
A、在IM接收到新消息后,添加该新消息到聊天记录子窗口中,并确定添加新消息后的聊天记录子窗口客户区的高度、当前聊天记录可见页面的高度、以及为聊天记录可见页面预设的锁定参考标记当前在聊天记录子窗口客户区中的高度。
B、用当前聊天记录可见页面的高度与聊天记录子窗口客户区的高度之比重新确定聊天记录子窗口的滚动条中滚动阀的大小,用所述锁定参考标记当前在聊天记录子窗口客户区中的高度与聊天记录子窗口客户区的高度之比重新确定所述滚动阀在所述滚动条中的位置;
C、依照所重新确定的滚动阀的大小和在所述滚动条中的位置重绘制滚动条,并依照重绘制的滚动条重新调整所述聊天记录可见页面,以将该聊天记录可见页面锁定在所述锁定参考标记处。
本发明中,所述的为聊天记录可见页面预设的锁定参考标记可以是光标,也可以是在聊天记录可见页面上的任一个固定的参考标记,该参考标记在可见页面内的相对高度与该可见页面自身高度的比率相对固定,例如该参考标记可以为可见页面的顶部坐标或者底部坐标。
根据锁定聊天记录可见页面所依据的参考标记不同,下面分别以两个实施例详细说明本发明的方案。
图3为本发明第一实施例所述通过识别光标位置自动锁定聊天记录可见页面的流程图。参见图3,该流程包括:
步骤301~步骤302、利用当前聊天窗口的句柄以及IM所在计算机操作系统的应用编程接口(API)的底层函数计算出当前聊天窗口中聊天记录子窗口客户区的矩形区数据,并记录计算得到的数据,其中包括客户区的高度和宽度,所述聊天记录子窗口客户区包括可见页面和不可见页面。计算的具体实现与现有技术相同,此处的操作系统可以是Windows,且采用的Windows API的底层函数可以是:
BOOL GetWindowRect(
   HWND hWnd,
   LPRECT lpRect
);
其中的HWND hWnd为聊天记录子窗口的句柄,LPRECT lpRect为聊天记录子窗口在Windows中的坐标值。该底层函数可以得到当前聊天记录子窗口在Windows中的坐标。
接着用以下底层函数将聊天记录子窗口在Windows中的坐标转换为当前屏幕的坐标:
BOOL ScreenToClient(
   HWND hWnd,
   LPPOINT lp Rect
);
其中LPPOINT lp Rect为当前聊天记录子窗口客户区在当前屏幕的实际坐标。其结构是:
typedef struct tagRECT{
   LONG left;
   LONG top;
   LONG right;
   LONG bottom;
}RECT;
其中,LONG left为矩形的左边数值,LONG top为矩形的顶部数值,LONG right为矩形的右边数值,LONG bottom为矩形的底部数值。
上述确定的底部数据值和顶部数据值的差值即为聊天记录子窗口客户区的高度。
另外,也可以利用BOOL getclientRect函数直接确定所述聊天记录子窗口客户区的矩形坐标,并以此确定其高度。
同时,IM程序自动检测用户的按键消息,通过截获按键消息判断当前光标是否发生纵向移动,例如,判断是否按下的虚拟键值是“PageDown”、“PageUp”等控制光标纵向移动方向键,或者通过检测鼠标的移动数据判断光标是否发生纵向移动。当光标发生纵向移动时,利用以下Windows API底层函数确定当前光标在聊天记录子窗口客户区中的位置数据,即光标的横纵坐标数据:
BOOL GetCursorPos(
   LPPOINT lpPoint);
其中LPPOINT lpPoint为当前用户光标的横纵坐标数据。利用其中的纵坐标确定光标在当前的聊天记录子窗口客户区中的高度。
步骤303、用上述确定的当前用户光标在当前聊天记录子窗口客户区中的高度与当前聊天记录子窗口客户区的高度相比,确定出当前光标位置在整个聊天记录子窗口客户区高度中所占的比率;同时,同样利用句柄和Window底层API函数计算当前聊天记录可见页面的高度;由于聊天记录子窗口右边滚动条内滚动阀的高度坐标与该滚动条的高度(一般滚动条的高度与当前聊天记录可见页面的高度相同)之比与上述确定的比率值相同,因此可将当前聊天记录子窗口滚动条的高度(即聊天记录可见页面的高度)和上述确定的比率值相乘,确定出当前聊天记录子窗口滚动条中滚动阀图标所在的位置数据,即:该滚动阀在滚动条中的高度坐标。本文中所述的滚动条和滚动阀为聊天记录子窗口右边的滚动条和滚动阀,用于控制聊天记录可见页面的滚动。
步骤304、确定当前聊天记录可见页面的高度与所述整个聊天记录子窗口客户区的实际高度的比值,该比值和滚动阀的大小与滚动条的高度之比相同,接着将滚动条的高度乘以所述的比值,得到滚动条中滚动阀的大小。
步骤305、聊天记录子窗口发送重新绘制滚动条的消息到滚动条子窗口中,该消息参数为上述确定的滚动阀的大小与高度,滚动条子窗口根据该消息中的参数,重新绘制滚动条,同时根据重新绘制的滚动条对聊天记录可见页面进行实时的调整,使得当前聊天记录可见页面锁定在当前的光标位置处。
本第一实施例中是自动识别光标位置对聊天记录可见页面进行锁定,上述步骤304~步骤305公开的是在IM没有收到新消息时,当光标的纵坐标位置发生变化时(因为纵坐标改变较大可能会引起滚动阀位置的改变),实现自动识别光标位置,并根据光标位置锁定聊天记录可见页面的实现方案,该部分方案是本发明的一个优化方案;以下步骤为本第一实施例所必需的在IM收到新消息时,实现自动识别光标位置根据光标位置锁定聊天记录可见页面的实现方案。
步骤306、判断当前光标位置是否位于聊天记录子窗口的顶部或底部,如果是,则执行步骤306;否则,执行步骤307。
很显然,此处可以根据上述步骤301确定的当前聊天记录子窗口的高度和步骤302所确定的当前光标的高度坐标进行判断,即:如果这两个高度相同则光标位于聊天记录子窗口的顶部。
或者,此处也可以利用步骤303所确定的比率值进行判断,即:如果比率值为100%,则光标位于聊天记录子窗口的顶部。
步骤307、设置聊天记录子窗口中右边的滚动条为非滚动状态。
根据现有的技术方案,当光标位于当前整个聊天记录子窗口的顶部的时候,如果有消息到来,光标以及滚动条的滚动阀均保持在整个聊天窗口的顶部,不需要变化,因此本第一实施例设置当前滚动条为非滚动状态;而如果光标位于当前整个聊天记录子窗口的底部,则当有新消息到来的时候,需要根据新消息的高度,计算整个聊天记录子窗口的底部位置并重新设置光标的位置,而滚动条的滚动阀就一直保持在滚动条的最底部,对用户来说,光标一直是在当前整个聊天记录子窗口的最底部,所以此时本第一实施例中也设置当前滚动条为非滚动状态。
设置滚动条为非滚动状态的具体方案为:在聊天记录子窗口的对应实现类中设置某个BOOL变量,例如m_bScrollBarStatus,来说明滚动条的滚动状态,当该变量为TRUE表示滚动状态,FALSE表示非滚动状态。
步骤308、IM接收到新消息后,解析新消息的数据包,通过消息的内容和消息的格式信息确定新消息的文本的长度;再根据所确定的新消息文本的长度、消息文本中字体的格式即字体的大小(包括字体的高度和宽度)、以及当前聊天记录子窗口客户区的宽度来确定该新消息在聊天记录子窗口中占用的行数;同时,将所述新消息的文本信息添加到所述聊天记录子窗口的最底层。
步骤309、将新消息的字体高度与新消息在聊天记录子窗口中占用的行数相乘,得到新消息文本在聊天记录子窗口中占用的高度,将该高度加上未收到该新消息时聊天记录子窗口的高度,获得收到新消息后的聊天记录子窗口客户区的高度。
此处,也可用当前添加了新消息的聊天记录子窗口的句柄以及上述的Windows的API底层函数确定添加了新消息的聊天记录子窗口客户区的高度。
步骤310、读取所述滚动条的状态信息,判断该滚动条是否处于非滚动状态,如果是,则执行步骤312;否则,执行步骤311。
步骤311、确定当前光标在当前聊天记录子窗口客户区中的高度,确定的方法与上述的步骤302相同,再用当前光标在当前聊天记录子窗口客户区中的高度与当前聊天记录子窗口客户区的高度之比乘以当前聊天记录子窗口的滚动条的高度,得到当前聊天记录子窗口的滚动阀在滚动条中的位置,即高度。
步骤312、利用句柄和Window底层API函数计算当前聊天记录可见页面的高度,用该可见页面的高度与添加了新消息的聊天记录子窗口客户区的高度之比乘以聊天记录子窗口滚动条的高度,得到当前聊天记录子窗口的滚动条中滚动阀的大小。
此处,重新计算一遍当前聊天记录可见页面的高度是由于在收到新消息之前,IM用户可能调整过该聊天记录可见页面的大小。
步骤313、聊天记录子窗口发送重新绘制滚动条的消息到滚动条子窗口中,该消息参数为上述确定的滚动阀的大小与高度,滚动条子窗口根据该消息中的参数,重新绘制滚动条,同时根据重新绘制的滚动条对聊天记录子窗口的可见页面进行实时的调整,使得当前聊天记录子窗口的可见页面锁定在当前的光标位置处。
图4为本发明第二实施例所述通过识别聊天记录可见页面内的参考标记自动锁定聊天记录可见页面的流程图。此处的参考标记采用可见页面的顶部(top)坐标,参见图4,该流程包括:
步骤401、利用当前息聊天记录子窗口的句柄数据以及Window底层API函数计算得到当前聊天记录子窗口中的矩形区域数据并记录计算得到的数据,所述矩形区域数据即客户区数值,其结构是:
typedef struct tagRECT{
   LONG left;
   LONG top;
   LONG right;
   LONG bottom;
}RECT;
其中,LONG left为矩形的左边数值,LONG top为矩形的顶部数值,LONG right为矩形的右边数值,LONG bottom为矩形的底部数值。
步骤402、利用句柄数值和Window底层API函数计算聊天记录可见页面的客户区域数据,其中包括聊天记录可见页面的顶部数值和底部数值,也就是高度数值。
步骤403、判断可见页面的顶部(top)坐标的高度数值(即纵坐标)是否与当前聊天记录子窗口的实际矩形的顶部坐标的高度数值相同,如果相同,则说明当前可见页面就是在聊天记录子窗口的最顶部,执行步骤404;否则执行步骤405。
步骤404、设置聊天记录子窗口中右边的滚动条为非滚动状态。
此处,与第一实施例相同的是:如果当前可见页面在聊天记录子窗口的最顶部,则滚动阀的位置在所述滚动条中的最顶部,当有新消息到来时,该可见页面仍然在聊天记录子窗口的最顶部,没有必要再对滚动条的位置进行调整,因此本第二实施例中在此时将滚动条设置为非滚动状态。
与第一实施例不相同的是:如果没有接收到新消息时,可见页面在聊天记录子窗口的最底部,则滚动阀的位置在所述滚动条中的最底部,当有新消息到来时,聊天记录子窗口的最底部被新消息占用,因此如果要锁定当前的可见页面,需重新调整滚动阀的大小和位置,因此本第二实施例在可见页面在聊天记录子窗口的最底部时不设置滚动条为非滚动状态。
步骤405、IM接收到新消息后,解析新消息的数据包,通过消息的内容和消息的格式信息确定新消息的文本的长度;再根据所确定的新消息文本的长度、消息文本中字体的格式即字体的大小(包括字体的高度和宽度)、以及当前聊天记录子窗口客户区的宽度来确定该新消息在聊天记录子窗口中占用的行数;同时,将所述新消息的文本信息添加到所述聊天记录子窗口的最底层。
步骤406、将新消息的字体高度与新消息在聊天记录子窗口中占用的行数相乘,得到新消息文本在聊天记录子窗口中占用的高度,将该高度加上所记录的未收到该新消息时聊天记录子窗口的高度,获得收到新消息后的聊天记录子窗口客户区的高度。
此处,也可用当前添加了新消息的聊天记录子窗口的句柄以及上述的Windows的API底层函数确定聊天记录子窗口客户区的高度。
步骤407、读取所述滚动条的状态信息,判断该滚动条是否处于非滚动状态,如果是,则执行步骤409;否则,执行步骤408。
步骤408、利用句柄和Window底层API函数计算当前聊天记录可见页面的客户区域数据,其中包括客户区的顶部数值和底部数值,计算该可见页面的参考标记在所述聊天记录子窗口客户区中的高度,例如可以将可见页面的顶部坐标数据与聊天记录子窗口的顶部数据相减,得到的值为可见页面顶部坐标在聊天记录子窗口客户区中的高度,再加上该参考标记在可见页面内的相对高度,得到该参考标记在聊天记录子窗口客户区中的高度;由于本实施例中的参考标记为可见页面的顶部坐标,因此该顶部坐标在可见页面内的相对高度为零;如果参考标记为底部坐标,则相对高度为可见页面的高度。
接着将该相对高度与聊天记录子窗口的实际高度之比乘以所述聊天记录子窗口右边滚动条的高度,得到滚动阀在该滚动条中的位置高度;所述右边滚动条的高度为聊天记录子窗口客户区的顶部数值与底部数值间的差值。
此处,由于以可见页面的顶部坐标作为锁定参考标记,因此在确定滚动阀的位置高度时,也以该滚动阀的顶部坐标作为位置坐标确定该滚动阀在所述滚动条中的高度,即该高度值为滚动阀顶部坐标到达滚动条顶部(即聊天记录子窗口客户区顶部)的高度值。同理,此处如果利用聊天记录参考页面上的其他坐标作为锁定参考标记,则该参考标记在聊天记录可见页面上的相对高度与聊天记录可见页面自身高度的比率与所述滚动阀的位置坐标在该滚动阀上的相对高度与滚动阀自身高度的比率相同。例如如果此处采用聊天记录可见页面的底部坐标为锁定参考标记,则滚动阀的位置坐标为该滚动阀的底部坐标。
此处,重新计算一遍当前聊天记录可见页面的高度是由于在收到新消息前,IM用户可能调整过该聊天记录可见页面的高度。
步骤409、利用步骤408确定的可见页面客户区的顶部数值和底部数值确定该可见页面的高度,即,顶部数值和底部数值之间的差值;接着利用该可见页面的高度与所述聊天记录子窗口的高度之比乘以聊天记录子窗口滚动条的高度,得到所述滚动阀在滚动条中的大小。
步骤410、聊天记录子窗口发送重新绘制滚动条的消息到滚动条子窗口中,该消息参数为上述确定的滚动阀的大小与高度,滚动条子窗口根据该消息中的参数,重新绘制滚动条,同时根据重新绘制的滚动条对聊天记录子窗口的可见页面进行实时的调整,使得当前聊天记录子窗口锁定在当前的可见页面处。
本实施例中当IM没有接收到新消息时,根据用户的移动滚动阀的滚动指令调整滚动阀在滚动条中的位置并调整聊天记录可见页面,在此过程中也是利用聊天记录可见页面的顶部数值以及滚动阀的顶部数值为准进行的,所以当接收到新消息时,采用上述方法重绘制滚动阀使得当前可见页面基本上不会有滚动,因此可自动锁定当前的聊天记录可见页面。
本发明中,由于新消息到来后,自动对当前聊天记录可见页面进行锁定,因此本发明进一步包括自动提示用户新消息到来的方法,即:IM判断是否有新消息到来,如果是,则闪烁滚动条最底端的向下滚动按钮,并持续闪烁预定的时间,预定时间到达后,停止闪烁,以此来达到提示用户新消息到来的目的。此处可以使用Windows的API函数例如BitBlt函数调用闪烁图片,将该闪烁图片置于所述向下的滚动按钮处,来实现闪烁所述向下的滚动按钮。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。

Claims (13)

1、一种自动锁定聊天记录可见页面的方法,其特征在于,为聊天记录可见页面预设锁定参考标记,包括:
A、在IM接收到新消息后,添加该新消息到聊天记录子窗口中,并确定添加新消息后的聊天记录子窗口客户区的高度、当前聊天记录可见页面的高度、以及所述锁定参考标记当前在聊天记录子窗口客户区中的高度;
B、用当前聊天记录可见页面的高度与聊天记录子窗口客户区的高度之比重新确定聊天记录子窗口的滚动条中滚动阀的大小,用所述锁定参考标记当前在聊天记录子窗口客户区中的高度与聊天记录子窗口客户区的高度之比重新确定所述滚动阀在所述滚动条中的位置;
C、依照所重新确定的滚动阀的大小和在所述滚动条中的位置重绘制滚动条,并依照重绘制的滚动条重新调整所述聊天记录可见页面,将该聊天记录可见页面锁定在所述锁定参考标记处。
2、根据权利要求1所述的自动锁定聊天记录可见页面的方法,其特征在于,所述聊天记录可见页面的锁定参考标记为光标。
3、根据权利要求2所述的自动锁定聊天记录可见页面的方法,其特征在于,该方法进一步包括:
根据光标在聊天记录子窗口中的高度判断光标是否处于聊天记录子窗口的顶部或底部,如果是,则在收到新消息后,只重新确定所述滚动条中滚动阀的大小,并只重新绘制滚动阀的大小、保持滚动阀在滚动条中的高度不变。
4、根据权利要求2所述的自动锁定聊天记录可见页面的方法,其特征在于,在IM接收到新消息之前,该方法进一步包括:
确定聊天记录子窗口客户区的高度、以及聊天记录可见页面的高度;
当监测到光标纵向移动时,则确定当前光标在聊天记录子窗口客户区中的高度;
用当前光标在聊天记录子窗口客户区中的高度与聊天记录子窗口客户区的高度之比重新确定所述滚动阀在所述滚动条中的高度;
依照所重新确定的滚动阀在所述滚动条中的高度重绘制滚动条,并依照重绘制的滚动条重新调整所述聊天记录可见页面,以将当前聊天记录可见页面锁定在当前光标位置处。
5、根据权利要求2或4所述的自动锁定聊天记录可见页面的方法,其特征在于:
所述确定当前光标在聊天记录子窗口客户区中的高度是:通过调用当前操作系统的应用编程接口API的底层函数来确定的。
6、根据权利要求1所述的自动锁定聊天记录可见页面的方法,其特征在于,所述聊天记录可见页面的锁定参考标记为:在聊天记录可见页面的上的相对高度与该聊天记录可见页面自身高度的比率相对固定的参考标记。
7、根据权利要求6所述的自动锁定聊天记录可见页面的方法,其特征在于,所述参考标记在聊天记录可见页面上的相对高度与聊天记录可见页面自身高度的比率与所述滚动阀的位置坐标在该滚动阀上的相对高度与滚动阀自身高度的比率相同。
8、根据权利要求6或7所述的自动锁定聊天记录可见页面的方法,其特征在于,
所述参考标记为所述聊天记录可见页面的顶部坐标或底部坐标。
9、根据权利要求6所述的自动锁定聊天记录可见页面的方法,其特征在于,该方法进一步包括:
根据所述参考标记在聊天记录子窗口中的高度判断当前聊天记录可见页面是否处于聊天记录子窗口的顶部,如果是,则在收到新消息后,只重新确定所述滚动条中滚动阀的大小,并只重新绘制滚动阀的大小、保持滚动阀在滚动条中的高度不变。
10、根据权利要求6所述的自动锁定聊天记录可见页面的方法,其特征在于:
所述当前锁定参考标记在聊天记录子窗口客户区中的高度是根据聊天记录可见页面的顶部或底部坐标在聊天记录子窗口客户区中的高度、以及该锁定参考标记在聊天记录可见页面内的相对高度确定的。
11、根据权利要求1所述的自动锁定聊天记录可见页面的方法,其特征在于:
所述确定聊天记录子窗口的实际高度、确定聊天记录可见页面的高度是:通过以句柄为参数调用当前操作系统的应用编程接口的底层函数来确定的。
12、根据权利要求1所述的自动锁定聊天记录可见页面的方法,其特征在于:
所述收到新消息后,所述确定聊天记录子窗口客户区的高度的方法为:
根据新消息文本的长度、消息文本中字体的格式、以及当前聊天记录子窗口客户区的宽度确定该新消息在聊天记录子窗口中占用的行数,该行数再乘以显示字体的高度,得到新消息文本的实际显示高度;
将得到的新消息文本的实际显示高度与未收到新消息时聊天记录子窗口客户区的高度相加,得到收到新消息后聊天记录子窗口的实际高度。
13、根据权利要求1所述的自动锁定聊天记录可见页面的方法,其特征在于,该方法进一步包括:
判断是否接收到新消息,如果是,则调用操作系统的API函数定时闪烁所述滚动条最底端的向下滚动按钮。
CNB2005100898260A 2005-08-05 2005-08-05 一种自动锁定聊天记录可见页面的方法 Active CN100392578C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100898260A CN100392578C (zh) 2005-08-05 2005-08-05 一种自动锁定聊天记录可见页面的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100898260A CN100392578C (zh) 2005-08-05 2005-08-05 一种自动锁定聊天记录可见页面的方法

Publications (2)

Publication Number Publication Date
CN1908877A true CN1908877A (zh) 2007-02-07
CN100392578C CN100392578C (zh) 2008-06-04

Family

ID=37699999

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100898260A Active CN100392578C (zh) 2005-08-05 2005-08-05 一种自动锁定聊天记录可见页面的方法

Country Status (1)

Country Link
CN (1) CN100392578C (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060502B (zh) * 2007-05-25 2010-05-26 北京金山软件有限公司 一种同时浏览聊天记录和最新消息的方法及装置
CN102685034A (zh) * 2012-06-12 2012-09-19 上海量明科技发展有限公司 针对即时通信消息进行提醒的方法及客户端
CN103037059A (zh) * 2012-12-14 2013-04-10 广东欧珀移动通信有限公司 一种快速定位信息的方法
CN103076950A (zh) * 2012-12-25 2013-05-01 北京百度网讯科技有限公司 一种会话线程列表的管理方法
CN103309599A (zh) * 2012-03-15 2013-09-18 华为终端有限公司 一种触屏滑动查找方法及触屏设备
CN104090714A (zh) * 2014-07-17 2014-10-08 广东欧珀移动通信有限公司 一种移动终端查看聊天记录的方法及系统
CN104267961A (zh) * 2014-09-30 2015-01-07 腾讯科技(深圳)有限公司 滚动条的生成方法及装置
CN104898935A (zh) * 2014-03-04 2015-09-09 腾讯科技(深圳)有限公司 群消息数据处理方法及装置
WO2015165282A1 (en) * 2014-04-30 2015-11-05 Tencent Technology (Shenzhen) Company Limited Method and apparatus for managing display of messages of group chat
CN105404518A (zh) * 2015-12-08 2016-03-16 小米科技有限责任公司 用于聊天窗口的字符显示方法和装置
CN106201528A (zh) * 2016-07-13 2016-12-07 广州安望信息科技有限公司 一种数据动态置顶的方法及装置
CN106254211A (zh) * 2016-07-30 2016-12-21 深圳市金立通信设备有限公司 一种交互信息的显示方法和终端
WO2017045515A1 (zh) * 2015-09-16 2017-03-23 网易(杭州)网络有限公司 聊天自动锁屏解屏的方法、装置、移动客户端及电脑客户端
CN107168624A (zh) * 2017-05-17 2017-09-15 珠海市魅族科技有限公司 界面控制方法及装置、计算机装置和计算机可读存储介质
US10666695B2 (en) 2018-07-25 2020-05-26 Eduard Weinwurm Group chat application with reputation scoring
CN113986103A (zh) * 2021-11-05 2022-01-28 安徽海勤科技有限公司 无缝滚动书写方法、装置、显示设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6204846B1 (en) * 1999-02-16 2001-03-20 International Business Machines Corporation Data set user interface control for use in accessing information in a computer
CN1471044A (zh) * 2002-07-24 2004-01-28 力捷电脑股份有限公司 无滚动条方式的控制钮及其运作方法
FR2846115A1 (fr) * 2002-10-16 2004-04-23 Canal Plus Technologies Procede d'affichage d'un document sur un ecran de visualisation susceptible d'etre soumis a une procedure de defilement
EP1706812A2 (en) * 2004-01-09 2006-10-04 Koninklijke Philips Electronics N.V. Double scrolling

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101060502B (zh) * 2007-05-25 2010-05-26 北京金山软件有限公司 一种同时浏览聊天记录和最新消息的方法及装置
CN103309599A (zh) * 2012-03-15 2013-09-18 华为终端有限公司 一种触屏滑动查找方法及触屏设备
CN102685034A (zh) * 2012-06-12 2012-09-19 上海量明科技发展有限公司 针对即时通信消息进行提醒的方法及客户端
CN103037059A (zh) * 2012-12-14 2013-04-10 广东欧珀移动通信有限公司 一种快速定位信息的方法
CN103037059B (zh) * 2012-12-14 2016-03-02 广东欧珀移动通信有限公司 一种快速定位信息的方法
CN103076950B (zh) * 2012-12-25 2016-12-28 北京百度网讯科技有限公司 一种会话线程列表的管理方法
CN103076950A (zh) * 2012-12-25 2013-05-01 北京百度网讯科技有限公司 一种会话线程列表的管理方法
CN104898935A (zh) * 2014-03-04 2015-09-09 腾讯科技(深圳)有限公司 群消息数据处理方法及装置
WO2015165282A1 (en) * 2014-04-30 2015-11-05 Tencent Technology (Shenzhen) Company Limited Method and apparatus for managing display of messages of group chat
US10057201B2 (en) 2014-04-30 2018-08-21 Tencent Technology (Shenzhen) Company Limited Method and apparatus for managing the display of messages of a group chat
CN104090714A (zh) * 2014-07-17 2014-10-08 广东欧珀移动通信有限公司 一种移动终端查看聊天记录的方法及系统
CN104090714B (zh) * 2014-07-17 2018-05-01 广东欧珀移动通信有限公司 一种移动终端查看聊天记录的方法及系统
CN104267961A (zh) * 2014-09-30 2015-01-07 腾讯科技(深圳)有限公司 滚动条的生成方法及装置
CN104267961B (zh) * 2014-09-30 2017-08-01 腾讯科技(深圳)有限公司 滚动条的生成方法及装置
WO2017045515A1 (zh) * 2015-09-16 2017-03-23 网易(杭州)网络有限公司 聊天自动锁屏解屏的方法、装置、移动客户端及电脑客户端
US10824321B2 (en) 2015-09-16 2020-11-03 Netease (Hangzhou) Network Co., Ltd. Method and apparatus for automatically locking and unlocking screen during chat, mobile client, and computer client
CN105404518A (zh) * 2015-12-08 2016-03-16 小米科技有限责任公司 用于聊天窗口的字符显示方法和装置
CN105404518B (zh) * 2015-12-08 2018-11-23 小米科技有限责任公司 用于聊天窗口的字符显示方法和装置
CN106201528A (zh) * 2016-07-13 2016-12-07 广州安望信息科技有限公司 一种数据动态置顶的方法及装置
CN106254211A (zh) * 2016-07-30 2016-12-21 深圳市金立通信设备有限公司 一种交互信息的显示方法和终端
CN107168624A (zh) * 2017-05-17 2017-09-15 珠海市魅族科技有限公司 界面控制方法及装置、计算机装置和计算机可读存储介质
US10666695B2 (en) 2018-07-25 2020-05-26 Eduard Weinwurm Group chat application with reputation scoring
US11381614B2 (en) 2018-07-25 2022-07-05 Eduard Weinwurm Group chat application with reputation scoring
CN113986103A (zh) * 2021-11-05 2022-01-28 安徽海勤科技有限公司 无缝滚动书写方法、装置、显示设备及存储介质

Also Published As

Publication number Publication date
CN100392578C (zh) 2008-06-04

Similar Documents

Publication Publication Date Title
CN1908877A (zh) 一种自动锁定聊天记录可见页面的方法
US7586481B1 (en) Display-pointer visibility
JP5324411B2 (ja) 広告配信装置、方法及びプログラム
KR101413130B1 (ko) 상태기반 브라우징
US9195345B2 (en) Position aware gestures with visual feedback as input method
US9189873B2 (en) Method and apparatus for indicating historical analysis chronicle information
JP2010508734A (ja) リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー
US20130132862A1 (en) Desktop sharing method and system
US20080046837A1 (en) Transparent windows methods and apparatus therefor
JP2005229594A (ja) リモコンでオブジェクト選択可能なディスプレイ装置及びその方法
WO2008092104A2 (en) Dynamic client-server video tiling streaming
EP3043343A1 (en) Information processing device, information processing method, and program
WO2006127496A1 (en) A method and system for providing visual annotation in a shared display environment
CN101079843A (zh) 一种基于im的截图方法、系统及设备
US20060044741A1 (en) Method and system for providing a dynamic window on a display
US20100321322A1 (en) Apparatus and method for touch input in portable terminal
EP1522916A3 (en) Information processing apparatus, information processing method, and control program
US20030204558A1 (en) Interaction interface for a composite device computing environment
US20100199201A1 (en) System and method for displaying a display panel
JP5563703B2 (ja) コンテンツ配信装置、コンテンツ配信方法、コンテンツ配信プログラム及び端末用プログラム
CN105955688A (zh) 播放ppt丢帧处理的方法与系统
CN107402691A (zh) 终端光标的显示方法、显示装置及计算机可读存储介质
CN108681428B (zh) 一种windows系统下的滚动截屏方法
US20180018398A1 (en) Positioning content in computer-generated displays based on available display space
CN102520964A (zh) 客户端界面上的应用图标管理方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant