读书人

CListCtrl获取文字,该如何处理

发布时间: 2012-05-05 17:21:10 作者: rapoo

CListCtrl获取文字
通过OnNMCustomdraw自绘了一个List,在CDDS_ITEMPREPAINT的时候通过GetItemText和GetItem获取文字,都获取不到,这是什么原因?代码如下:

C/C++ code
void CTvListCtrl::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult){    LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);    if (pNMCD->dwDrawStage == CDDS_PREPAINT)      {          CRect rectClient;        GetClientRect(&rectClient);        CDC* pDC = CDC::FromHandle ( pNMCD->hdc );         pDC->FillSolidRect(&rectClient, RGB(243,247,250));        *pResult =  CDRF_NOTIFYITEMDRAW;          return;      }      else if (pNMCD->dwDrawStage == CDDS_ITEMPREPAINT)      {                  //获取不到。。。。        LVITEM hdItem;        TCHAR szText[256] = {0};        hdItem.mask = LVIF_TEXT;        hdItem.pszText = szText;        hdItem.cchTextMax = _countof(szText);        hdItem.iItem = 0;        hdItem.iSubItem = 0;        GetItem(&hdItem);                //同样获取不到。。。                CString strText = GetItemText(0, 0);                        *pResult =  CDRF_SKIPDEFAULT;          return;      }      *pResult = 0;}


测试数据是通过InsertItem和SetItemText插入的
C/C++ code
    m_tvListCtrl.InsertItem(0, TEXT("1"));    m_tvListCtrl.SetItemText(0, 0, TEXT("2"));    m_tvListCtrl.SetItemText(0, 1, TEXT("3"));      m_tvListCtrl.SetItemText(0, 2, TEXT("4"));



[解决办法]
确实执行到(pNMCD->dwDrawStage == CDDS_ITEMPREPAINT)这个分支了么
[解决办法]
http://blog.csdn.net/visualeleven/article/details/5948057
一个自绘CListCtrl的例子

读书人网 >VC/MFC

热点推荐