我使用CListCtrl创建了MFC Visual Studio项目。我在CDialog类中添加了一些项目,例如:

int l_iItem = m_listCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, counter, someString, 0, LVIS_SELECTED, 0, 0);
m_listCtrl.SetItemText( l_iItem, 1, blockHexChar );
m_listCtrl.SetItemText( l_iItem, 2, description);

这很好。

之后,我想编辑一个子项(通过双击事件)。作品也不错。

如果编辑完成(在CListCtrl类中),
OnEndLabelEdit(NMHDR* pNMHDR, LRESULT* pResult)

将被称为。看起来像这样
LV_DISPINFO *plvDispInfo = (LV_DISPINFO *)pNMHDR;
LV_ITEM *plvItem = &plvDispInfo->item;
if (plvItem->pszText != NULL)
{
  bool res = SetItemText(plvItem->iItem, plvItem->iSubItem, plvItem->pszText);
}

我总是返回0,所以SetItemText失败了。

知道我在做什么错吗?

欢呼吧

最佳答案

您必须使用WM_USER+NNN中的PostMessage向自己发布用户定义的消息(OnEndLabelEdit)。更改标签以响应该消息。

关于c++ - VisualStudio MFC CListCtrl SetItemText失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29795407/

10-13 05:34