[win32/vc++] Waarde van listview items opvragen

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

  • pinkwin|IA
  • Registratie: Juni 2003
  • Laatst online: 23-04-2004
ik gebruik in mijn applicatie een CListView. Deze krijgt een stuk of 20 items welke ik op deze manier vul:

C++:
1
2
3
4
5
6
   LV_ITEM lvItem; 
   lvItem.mask = LVIF_TEXT |LVIF_IMAGE |LVIF_STATE | LVIF_PARAM; 
   ... 
   lvItem.lParam = 2; 
   lvItem.pszText = psList[iProgram].strname; 
   GetListCtrl().InsertItem(&lvItem); 

Verder worden er 2 items toegevoegd bij welke lParam de waarde 0 of 1 heeft.
In de dubbelklik functie, wil ik onderzoeken of de lParam van het geselecteerde item 0, 1 of 2 is.
Hiervoor gebruik ik de volgende code:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
void CRDSControlView::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) 
{ 
   CRDSControlDoc* pDoc = (CRDSControlDoc*)GetDocument(); 
   NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; 
    
   LV_ITEM lvItem; 
   char buffer[9]; 
   lvItem.pszText = buffer; 
   lvItem.cchTextMax = sizeof(buffer); 
   if(!GetSelectedItem(&lvItem, 0)) 
      return; 

   CString tmp; 
   tmp.Format("%i", lvItem.lParam); 
   AfxMessageBox(tmp); 
   if (lvItem.lParam == 2){ 
      AfxMessageBox("param=2"); 
   }else{ 
      CString tmp; 
      tmp.Format("%i", lvItem.lParam); 
      AfxMessageBox(tmp); 
   } 
   *pResult = 0; 
} 

bool CRDSControlView::GetSelectedItem(LV_ITEM *lvItem, int iWhichItem) 
{ 
   // Was something actually selected? 
   POSITION pos = GetListCtrl().GetFirstSelectedItemPosition(); 
   if(pos == NULL) 
      return FALSE; 

   int iItem = GetListCtrl().GetNextSelectedItem(pos); 

   memset(lvItem,0,sizeof(lvItem)); 
   lvItem->mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM; 
   lvItem->iItem = iItem; 
   lvItem->iSubItem = iWhichItem; 

   return(GetListCtrl().GetItem(lvItem)); 
} 

Als ik mijn programma run, dan is lParam nooit 2, maar altijd een getal van boven de 1.000.000...

Ik ga er dus vanuit dat de waarde lvItem->lParam niet gevuld wordt bij het ophalen van de lvItem.

Ik zeg maar zo, ik zeg maar nix. dan zeg ik al veel te veel.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Continued in [rml][ c++]variabele verliest waarde[/rml] met meer basisinfo.

Professionele website nodig?


Dit topic is gesloten.