Re: CListCtrl FindItem LVFI_PARAM
Oops, sorry, I meant to say:
m_myList.SetItemText(nRow,0, sName.c_str());
m_myList.SetItemData(nRow, nID);
If that still doesn't work, there must be something else going on. You
could try reading the value back in a loop using GetItemData() and find the
row that way rather than using FindItem. I think that is pretty much what
FindItem is doing anyway.
Tom
"rockdale" <rockdale.green@gmail.com> wrote in message
news:96a9b838-146f-475c-a486-d678b13a0ba8@f33g2000vbf.googlegroups.com...
I tried that by replace
m_myList.SetItemText(item.iItem, item.iSubItem, sName.c_str());
m_myList.SetItemData(item.iItem, nID);
with
m_myList.SetItem(&item);
It does not work.
setItemText and SetItemData is because m_myList is actually derived
from CListCtrl with more functionalities (like change back color and
text color).
But for this FindItem particular case, m_myList is CListCtrl. I tried
to erase the derived class effect.
thanks again
On Mar 5, 1:11 pm, "Tom Serface" <t...@nospam.camaswood.com> wrote:
Have you tried just modifying the data without doing the set new item
object? I don't think you need to make it that complex.
m_myList.SetItemText(item.iItem, item.iSubItem, sName.c_str());
m_myList.SetItemData(item.iItem, nID);
Tom
"rockdale" <rockdale.gr...@gmail.com> wrote in message
news:fc9096f4-1104-4456-b89c-e9b49830d368@c11g2000yqj.googlegroups.com...
I have a CCtrlList with 2 columns.
My data contains ID NAME and ADDRESS, NAME is the column 0 and ADDRESS
is column 1. ID I put it in the lParam. When I try to finditem based
on the ID, I always get -1 back. Anybody can help? The CListCtrl is
not sortable.
Please see the following code, notice the ???? comment:
m_myList is a CListCtrl
Insert ITEM function
int iRow = 0;
LVITEM item;
iRow = m_lstSelectedUnits.GetItemCount();
item.mask = LVIF_TEXT| LVIF_PARAM;
item.iSubItem = 0;
item.iItem = iRow;
m_myList.InsertItem(&item);
Update ITEM function
LVITEM item;
item.iItem = nRow;
item.mask = LVIF_TEXT| LVIF_PARAM;
item.iSubItem = 0;
item.pszText = (LPSTR)sName.c_str();
item.lParam = (LPARAM)nID;
m_myList.SetItemText(item.iItem, item.iSubItem, item.pszText);
m_myList.SetItemData(item.iItem, item.lParam);
item.mask = LVIF_TEXT;
item.iSubItem = 1;
item.pszText = (LPSTR)sAddr.c_str();
m_myList.SetItemText(item.iItem, item.iSubItem, item.pszText);
find ITEM function
if(m_myList.GetItemCount()==0) return -1;
LVFINDINFO toFind;
toFind.flags = LVFI_PARAM;
toFind.lParam = nTransmitPointID;
int nRow = m_myList.FindItem(&toFind, -1);
//???? nRow ALWAYS RETURN -1
LVITEM item;
for(int i=0; i< m_myList.GetItemCount(); i++)
{
int id = (int)m_myList.GetItemData(i);
//THIS WORKS and GETS THE ID
item.iItem = i;
item.iSubItem = 0;
item.mask = LVIF_PARAM ;
m_myList.GetItem(&item);
//?????THE item.lParam is not the lParam set in the
update function.
}
------------
thanks in advance
-rockdale