这是一个显示在线用户程序,我的设计思路是:当用户登录后显示普通图标;当用麦时,切换显示话筒图标。
1、CListCtrlEx类代码:
void CListCtrlEx::AddItem(short i, char* name, short j)//short j显示话筒图标
{
LVITEM lvi; lvi.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
lvi.iItem = GetItemCount();
    lvi.iImage = i;
lvi.iSubItem = 0;
lvi.pszText = name;
lvi.cchTextMax = 64;
lvi.lParam = 0;
InsertItem(&lvi); lvi.mask = LVIF_IMAGE;
lvi.iImage = j;
lvi.iSubItem = 1;
SetItem(&lvi);
}
2、在CMainFrame::OnCreate中初始化m_imglist和关联m_userlist。然后调用数据显示用户:
void CMainFrame::OnAddMember(WPARAM wParam, LPARAM lParam)
{

CMsg* pStr = (CMsg*)wParam; this->dlgBar.m_userlist.AddItem(0,pStr->from.GetBuffer(0),0); 
}3、当我获取某个发言用户名m_name之后,怎么判断跟m_userlist列表用户同名?然后怎么更新指定的获取发言权的用户图标?谢谢!!

解决方案 »

  1.   

    你的程序支持MFC不?向ListCtrl中插入记录用LVITEM结构,我看着脑袋就大。为什么不用InsertItem呢。
      

  2.   

    听说要用到invalidateRect函数,不知怎么用?
      

  3.   

    GetItem[i]
    item.name == _T("XXX")
    SetItemText[i, 更改项ID , text ..];改图标的话估计要删除了重新插入~~insertItem有默认图标ID,别的可能也有方法改吧
      

  4.   

    呵呵!!支持啊。我觉得这样也挺方便的。如果不用CListCtrlEx类又怎么修改其中的指定项呢?
      

  5.   

    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_YES));话筒图标
    m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_NO));普通图标m_list.SetImageList(&m_ImageList,LVSIL_SMALL);if(使用卖)
    lvi.iImage = 0;
    else 
    lvi.iImage = 1;
      

  6.   

    可以在OnInitDialog()里面调用
      

  7.   

    if(使用卖) 
    lvi.iImage = 0; 
    else 
    lvi.iImage = 1
    这里啊。
    你取得发言权之后,刷新下
      

  8.   

    怎么刷新?是不是用invalidateRect局部刷新?但不知怎么用?