请问如何将编辑框控件"滚动条"一直保持往下滚?
我是使用VS2010平台,刚才新入要做到VC++。有些基础问题需请教。
用编辑框控件做串口数据的接收,由于编辑框控件的大小有限,当接收到的数据超过框体时,右侧的的滚动条就总往上面。
因为数据不断接收,我是希望这滚动条总是向下走。这样做的目的是在编辑框控件上保持显示最新收到的数据。
我在网上有查过一些做法,比如在收到新数据后,就把这滚动条总或光标指向编辑框内容的最后面,试了一些办法都无效。
我增在接收字节的部分用过的有如下的:
 UpdateData(FALSE);
 CEdit*p = (CEdit*)GetDlgItem(IDC_EDIT_REC); //定义一个指向编辑框的句柄的指针
 p->LineScroll(p->GetLineCount()); //滚动条置底因为我的数据是不断接收的,就算用了上述代码;滚动条置低了,但接收滚动条又回到顶部了。
请问在VS2010中如保这这个滚动条设置为一直是向下的?比较简单方法和代码该怎么做?
谢谢~

解决方案 »

  1.   

    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    ASSERT(pEdit && pEdit->GetSafeHwnd());
    pEdit->SetSel(-1, -1);
    pEdit->ReplaceStr(...);
      

  2.   

    请问哥们pEdit->ReplaceStr(...)是怎么使用的?在网上查了一下,介绍得比较少。
    能否顺便对上面的几个代码分别实现什么功能说说?
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);  //?
    ASSERT(pEdit && pEdit->GetSafeHwnd());         //? 
    pEdit->SetSel(-1, -1);    //?
    pEdit->ReplaceStr(...);   //? 这部分代劳我是计划放到串口的字节接收位置的,也就是说每接收到一个1字节都会执行上述的代码。
    现在主要不懂得你所说的ReplaceStr(...)的实参如何写入。
    谢谢!
      

  3.   

    我把上述的代码放到串口接程序中:
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_REC);
    ASSERT(pEdit && pEdit->GetSafeHwnd());
    pEdit->SetSel(-1, -1);
    pEdit->ReplaceSel(_T("\r\n"));
    滚动条还是没办法一直保持最低部,请问还有别的办吗?
      

  4.   


    m_EditView.PostMessage(WM_VSCROLL, SB_BOTTOM,0);//m_EditView是跟CRichEdit关联的控件型变量
      

  5.   

    SetSel或者SetScrollPosition就是了
      

  6.   

    我用“凌乱哥”的函数“m_EditView.PostMessage(WM_VSCROLL, SB_BOTTOM,0);”做法是有效的;
    但滚动条是向下了,但每收一个字节总是还是会跑上顶部后再回到低部。当数据连接收到时,会看到这滚动条上下地闪闪动。让人感觉在上下跑动一样。请问凌乱哥还有没有办法使这闪动停止,能不能在初始化时就把这个设置条设置为向下并一直保持向下呢?谢谢各位...
      

  7.   

    这个用法在CRichEdit是有效的,而且没出现你说的滚动条上下滚动的,我每5毫秒就接收16个字节的数据显示在CRichEdit控件上.
    Edit控件我没这么用过,而且Edit控件能显示最多多少数据还不知道
      

  8.   

    应该不至于啊,没用过我会乱说?你的是RichEdit么?会不会你做了其他操作要么我明天看看公司的通讯平台的代码,明晚再回复你
      

  9.   

    不好意思,我没声明:我用的是普通的RichEdit control编辑框控件。非RichEdit control。
    这两个控件在应用函数上有很大的区别吗?
    我现在做好的是用RichEdit control,是否还有别的办法?
      

  10.   


    您好,
    由于您长时间不结贴,上一次答复已超一个月。
    目前暂无最佳答案,本人帮你顶贴。
    另外可以放在本版的疑难杂症帖链接:
    http://bbs.csdn.net/topics/390351579。
    如果您有什么意见,请您联系我。
      

  11.   

    用m_edit.LineScroll(MAXINT_PTR);就好了嘛