ik gebruik in mijn applicatie een CListView. Deze krijgt een stuk of 20 items welke ik op deze manier vul:
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:
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.
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.