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的例子