各位大家好,我最近做一个局域网聊天的软件,类似MSN,QQ~可是在聊天信息显示的EDIT控件的滚动条上遇到了点问题?如何设置才能让滚动条自动滚动显示最新聊天信息?而不是我还要自己用手拖那个滚动条来看最新的信息?谢谢大家帮忙~

解决方案 »

  1.   

    有新消息到来或发消息时,执行:m_edt.LineScroll (m_edt.GetLineCount(), 0);//m_edt是显示消息的EDIT控件
      

  2.   

    m_edit.SendMessage(WM_VSCROLL,SB_TOP,0);   //滚动到顶部 SB_BOTTOM 滚动到底部
      

  3.   

    晕!还要多详细阿
    m_edit 是给EDIT控件绑定的控制变量,你不会不会绑定吧?
    把我那句放在接收到消息并向EDIT中添加进去的后边不就OK了
      

  4.   

    这个大家没有考虑需求问题。在聊天的时候,除了要滚动到最后一行显示外,还要把光标定位到最后。在实际的处理中,这个是光标操作,而不是滚动条操作。代码如下。 m_edit.SetFocus();
    int n = m_edit.GetWindowTextLength();
    m_edit.SetSel(n, n, FALSE);
      

  5.   

    难道你的新信息不是添加在最顶或者最底而是其他位置吗?如果是在前边加,那就用SB_TOP,如果是在后边加就用SB_BOTTOM,另外不明白察看新信息和定位光标有什么关系
      

  6.   

    这个容易
    ::SendMessage(编辑框句柄,WM_VSCROLL,(WPARAM)SB_BOTTOM,0);
      

  7.   

    to starytx(做人要低调) ( ) 这个是聊天程序。在聊天的过程中,显示框的光标一般情况下,最好定位在末尾。因为每次插入最多的是在末尾啊。这样在编程过程中会方便很多。在定位光标的时候,同时定位显示当然要比先定位光标,再定位滚动要方便。
    我已经说了,这个是实际操作中的处理。并不是说你的操作方式不正确。
    在实际的聊天编程中,很少通过滚动条定位的,都是用光标定位,并同时驱动滚动条的。
    当然,在实际的聊天窗口编程中,大家都用的是CRichEdit或其派生类。