MFC界面只显示一些数据,我目前用的listbox control,有数据上来它会一行行往下刷,就会重复显示,如果每次显示前我清空listbox,它又会闪烁,新手脑阔疼。我的显示函数代码是下面这样:
CListBox  m_LISTINF2;
void CMFCApplication1Dlg::ShowInfo(CString str)
{
        //m_LISTINF1.ResetContent(); // 清空注释掉
m_LISTINF2.InsertString(m_LISTINF2.GetCount(), str);
m_LISTINF2.SetCurSel(m_LISTINF2.GetCount() - 1);

}哦,我送上来数据只有一个数据源,所以可以全部清空 只看目前的数据状态。

解决方案 »

  1.   

    http://www.codeproject.com/Articles/29064/CGridListCtrlEx-Grid-Control-Based-on-CListCtrl
      

  2.   

    你可以在添加之前判断一下是否已经添加, 没有添加的才添加, 不就解决了吗?
    如果是要更新数据, 则查它在哪行, 修改它就行了.MFC的控件都有这个毛病, 更新太快, 就会闪烁.    比如 static控件之类的.  最终原因, 我想应该是MFC绘制机制导致的, 他把背景的绘制与前景绘制分开成两次完成
      

  3.   

    你没必要用CListBox控件,这个控件在你的程序中又起了什么作用呢?
    直接用CDC
      

  4.   

    CRichEditCtrl::ReplaceSel方法不会闪烁
      

  5.   

    插入前 禁止刷新,
    插入后 在刷新控件试试.CWnd::SetRedraw