我做了个编辑框显示接收过来的数据,每次接收数据后刷新显示,快的时候几ms就会刷新一次,接收的数据累加到CString 字符串里面,再用SetDlgItemText 函数显示,当累计接收的数据太多了,几千个字节后,就会明显感觉屏幕闪烁,有什么办法解决闪屏吗?
可不可以只刷新最新接收到的数据?

解决方案 »

  1.   

    只是把文字加到尾部?
    EM_SETSEL
    EM_REPLACESEL
    ::SendMessage(编辑框句柄,EM_SETSEL,-1,0); 
    ::SendMessage(编辑框句柄,EM_REPLACESEL,NULL,buffer);
      

  2.   

    请问如何获得编辑框的句柄呢?
    ::SendMessage(m_dataDlg.GetDlgItem(IDC_RECEIVE_2),EM_SETSEL,-1,0); 
    ::SendMessage(m_dataDlg.GetDlgItem(IDC_RECEIVE_2),EM_REPLACESEL,NULL,"123");
    这样编译提示错误,GetDlgItem(IDC_RECEIVE_2) 是CWnd类型的
      

  3.   

    句柄问题解决了,但是  这个buffer是什么类型呢?
    CString a;
    a = "123";
    GetDlgItem(IDC_EDIT_SEDMSG)->SetWindowText("");
    ::SendMessage(m_dataDlg.GetDlgItem(IDC_RECEIVE_2)->GetSafeHwnd(),EM_SETSEL,-1,0); 
    ::SendMessage(m_dataDlg.GetDlgItem(IDC_RECEIVE_2)->GetSafeHwnd(),EM_REPLACESEL,NULL,a);
    提示说 a 要是LPARAM类型
      

  4.   

    CString a;
    m_dataDlg.GetDlgItem(IDC_RECEIVE_2)->SendMessage(EM_REPLACESEL,NULL,(LPARAM)(LPTSTR)(LPCTSTR));
      

  5.   

    多谢高手!
    m_dataDlg.GetDlgItem(IDC_RECEIVE_2)->SendMessage(EM_REPLACESEL,NULL,(LPARAM)(LPTSTR)(LPCTSTR)a);
      

  6.   

    好厉害的样子啊 
    高手给点学习MFC的意见呗
    想学这个做界面
      

  7.   

    Edit有字数限制的.具体多少我不记得了.
    想显示更多可以考虑使用richedit
      

  8.   

    文字长度不够的问题可以考虑使用Edit方法 LimitText(-1);