类似QQ 如何判断消息是否已读

hzy694358 2013-09-24 03:35:39
QQ 消息是会判断已读未读的,未读的话重新登录一个地方 会收到未读的那些消息

问题:
什么时机来确定这条消息是否已读呢,是根据什么来判断的,
我想用窗口激活状态来判断,用OnActivate 接口
发现WA_CLICKACTIVE 和 WA_ACTIVE 都不靠谱
WA_ACTIVE 非鼠标触发,有时候会连续触发好几次
WA_CLICKACTIVE 鼠标点击触发 只有鼠标点击聊天窗口的主窗口才会触发WA_CLICKACTIVE
如果鼠标点击窗口里的richedit控件 是不会触发的

备注:自己的聊天系统
...全文
5736 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2013-09-25
  • 打赏
  • 举报
回复
数据结构。。。
泥鳅不是鱼 2013-09-25
  • 打赏
  • 举报
回复
引用 10 楼 hzy694358 的回复:
[quote=引用 9 楼 liuzi_40 的回复:] 这样说吧,无论窗口是不是打开状态,你都需要将收到的消息显示到窗口上,比如你用的是richedit来展示聊天内容,当你把消息显示到richedit上面这个操作,就代表这条消息已读了...
你没发现当你消息显示在窗口上,你也已经看到了,只是没有激活该窗口,然后退出 在另外一台机子重新登陆 还是会收到该消息吗[/quote]这个无所谓的 一般窗口有几种状态,未打开,打开,打开了但是处于最小化,不是最小化但是被其他窗口遮挡等等。。。这些状态都是可以获得的,比如你的窗口是打开的,但是不是当前窗口,这时就需要让任务栏相应的聊天窗口处于高亮状态,当然你切换到这个窗口,也是可以捕获这个事件的,同时反馈给服务器,这个是新版QQ才有的功能.
hzy694358 2013-09-25
  • 打赏
  • 举报
回复
引用 9 楼 liuzi_40 的回复:
这样说吧,无论窗口是不是打开状态,你都需要将收到的消息显示到窗口上,比如你用的是richedit来展示聊天内容,当你把消息显示到richedit上面这个操作,就代表这条消息已读了...
你没发现当你消息显示在窗口上,你也已经看到了,只是没有激活该窗口,然后退出 在另外一台机子重新登陆 还是会收到该消息吗
泥鳅不是鱼 2013-09-24
  • 打赏
  • 举报
回复
引用 8 楼 hzy694358 的回复:
[quote=引用 6 楼 liuzi_40 的回复:] 我之前就是做IM通讯的,首先QQ接受到消息后会闪动,双击提取消息或者快捷键提取消息显示到聊天对话框的时候就代表消息被查看了
那如果会话窗口已经打开了,之后 收到的消息 是不是都算已读呢?? 还有一种情况,讨论组的,经常这这台机子消息都已经收到了,我也看到了,只是没有再去点击这个窗口 然后退出,在另一台机子登陆,我看到的那些消息 还会再次收到[/quote]这样说吧,无论窗口是不是打开状态,你都需要将收到的消息显示到窗口上,比如你用的是richedit来展示聊天内容,当你把消息显示到richedit上面这个操作,就代表这条消息已读了...
hzy694358 2013-09-24
  • 打赏
  • 举报
回复
引用 6 楼 liuzi_40 的回复:
我之前就是做IM通讯的,首先QQ接受到消息后会闪动,双击提取消息或者快捷键提取消息显示到聊天对话框的时候就代表消息被查看了
那如果会话窗口已经打开了,之后 收到的消息 是不是都算已读呢?? 还有一种情况,讨论组的,经常这这台机子消息都已经收到了,我也看到了,只是没有再去点击这个窗口 然后退出,在另一台机子登陆,我看到的那些消息 还会再次收到
hzy694358 2013-09-24
  • 打赏
  • 举报
回复
引用 3 楼 movezzzz 的回复:
我想你想复杂了,只要这次登陆了,就把所有的未读消息标识为已读。QQ也是一样,你每次登陆的时候qq都会把所有未读消息发给你,管你看不看。如果你恰好没看,下次你再登陆,它也不会再提示你了。
你的意思是只要收到了就算已读了??
泥鳅不是鱼 2013-09-24
  • 打赏
  • 举报
回复
引用 2 楼 hzy694358 的回复:
[quote=引用 1 楼 liuzi_40 的回复:] QQ消息是有反馈的 查看消息后会反馈给服务器 由服务器来做标记 登录的时候客户端向服务器主动索取一次消息,服务器会将标记的未读消息发给客户端 也可以在登录后由服务器主动将所有未读消息推送给客户端
呃,我现在的问题是:怎么才算查看了消息,点击对话框、聚焦、激活 还是其他的 现在就是想如何准确的判断:查看了消息 [/quote]我之前就是做IM通讯的,首先QQ接受到消息后会闪动,双击提取消息或者快捷键提取消息显示到聊天对话框的时候就代表消息被查看了
zhuben775 2013-09-24
  • 打赏
  • 举报
回复
我猜QQ是做了消息跟踪机制,就是每条消息到了哪一部,是有状态的。 如果是这样,那么就应该是界面的richedit显示了这条消息,就算已读
zhuben775 2013-09-24
  • 打赏
  • 举报
回复
引用 3 楼 movezzzz 的回复:
我想你想复杂了,只要这次登陆了,就把所有的未读消息标识为已读。QQ也是一样,你每次登陆的时候qq都会把所有未读消息发给你,管你看不看。如果你恰好没看,下次你再登陆,它也不会再提示你了。
好像不是的,你没有打开聊天对话框,是不算已读的
movezzzz 2013-09-24
  • 打赏
  • 举报
回复
我想你想复杂了,只要这次登陆了,就把所有的未读消息标识为已读。QQ也是一样,你每次登陆的时候qq都会把所有未读消息发给你,管你看不看。如果你恰好没看,下次你再登陆,它也不会再提示你了。
hzy694358 2013-09-24
  • 打赏
  • 举报
回复
引用 1 楼 liuzi_40 的回复:
QQ消息是有反馈的 查看消息后会反馈给服务器 由服务器来做标记 登录的时候客户端向服务器主动索取一次消息,服务器会将标记的未读消息发给客户端 也可以在登录后由服务器主动将所有未读消息推送给客户端
呃,我现在的问题是:怎么才算查看了消息,点击对话框、聚焦、激活 还是其他的 现在就是想如何准确的判断:查看了消息
泥鳅不是鱼 2013-09-24
  • 打赏
  • 举报
回复
QQ消息是有反馈的 查看消息后会反馈给服务器 由服务器来做标记 登录的时候客户端向服务器主动索取一次消息,服务器会将标记的未读消息发给客户端 也可以在登录后由服务器主动将所有未读消息推送给客户端

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧