Hoi,
Ik heb een raar probleem met een CListCtrl wat ik niet kan verklaren.
Ik heb in m'n resource een normale list control neergelegd, met report view, single select, always show selection, etc.
Het eigenlijke tonen van de data gebeurd dmv het afhandelen van de NM_CUSTOMDRAW message:
Dit ziet er allemaal goed uit. Op dit moment teken ik alleen maar een string: "Column: x, Row: y", waar x en y de huidige kolom en rij zijn.
Ik heb voor het testen 3 kolomen toegevoegd:
En 5 rijen:
Resultaat is keurig 5 rijen en 3 kolomen.
Probleem nu is alleen dat een selectie alleen maar wordt gezet als ik in de eerste kolom klik, en dan ook alleen op het eerste gedeelte van de string:

Het rode gedeelte kan ik klikken, t/m de eerste komma (voor elke rij). En daarna, bij de blauwe lijn en de overigen kolomen kan ik dus geen selectie verkrijgen. Ik snap er helemaal niks meer van. Bij het toevoegen heb ik ook geprobeerd om per rij EN kolom toe te voegen, maar dat heeft ook geen effect.
Ik heb een raar probleem met een CListCtrl wat ik niet kan verklaren.
Ik heb in m'n resource een normale list control neergelegd, met report view, single select, always show selection, etc.
Het eigenlijke tonen van de data gebeurd dmv het afhandelen van de NM_CUSTOMDRAW message:
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
| void CMyDlg::OnNMCustomdrawList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLVCUSTOMDRAW pNMCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR); switch( pNMCD->nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult = CDRF_NOTIFYSUBITEMDRAW; break; case CDDS_ITEMPREPAINT: *pResult = CDRF_NOTIFYSUBITEMDRAW; break; case CDDS_ITEMPREPAINT|CDDS_SUBITEM: { /* ... Actual drawing happens here ... */ *pResult = CDRF_SKIPDEFAULT; } break; default: *pResult = CDRF_DODEFAULT; break; } } |
Dit ziet er allemaal goed uit. Op dit moment teken ik alleen maar een string: "Column: x, Row: y", waar x en y de huidige kolom en rij zijn.
Ik heb voor het testen 3 kolomen toegevoegd:
C++:
1
2
3
| m_lstList.InsertColumn( 0, "Col 1"); m_lstList.InsertColumn( 1, "Col 2"); m_lstList.InsertColumn( 2, "Col 3"); |
En 5 rijen:
C++:
1
2
3
4
5
6
7
8
9
10
| for( int32 i = 0; i < 5; i++) { LVITEM lvItem; lvItem.mask = LVIF_PARAM; lvItem.iItem = i; lvItem.iSubItem = 0; lvItem.lParam = i; m_lstList.InsertItem( &lvItem); } |
Resultaat is keurig 5 rijen en 3 kolomen.
Probleem nu is alleen dat een selectie alleen maar wordt gezet als ik in de eerste kolom klik, en dan ook alleen op het eerste gedeelte van de string:

Het rode gedeelte kan ik klikken, t/m de eerste komma (voor elke rij). En daarna, bij de blauwe lijn en de overigen kolomen kan ik dus geen selectie verkrijgen. Ik snap er helemaal niks meer van. Bij het toevoegen heb ik ook geprobeerd om per rij EN kolom toe te voegen, maar dat heeft ook geen effect.
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs