[MFC] CListCtrl kan geen selectie oppakken

Pagina: 1
Acties:

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
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:
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:
Afbeeldingslocatie: http://mywebpage.netscape.com/MaartenQG/Screen.jpg
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


  • The End
  • Registratie: Maart 2000
  • Laatst online: 09:12

The End

!Beginning

Er is een extended style 'LVS_EX_FULLROWSELECT' die ervoor zorgt dat je overal de hele rij selecteerd.
code:
1
SetExtendedStyle(GetExtendedStyle() | LVS_EX_FULLROWSELECT);


Hiervoor moet je ListCtrl wel een 'report' (LVS_REPORT) list control zijn.

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
The End schreef op 01 april 2004 @ 09:20:
Er is een extended style 'LVS_EX_FULLROWSELECT' die ervoor zorgt dat je overal de hele rij selecteerd.
code:
1
SetExtendedStyle(GetExtendedStyle() | LVS_EX_FULLROWSELECT);


Hiervoor moet je ListCtrl wel een 'report' (LVS_REPORT) list control zijn.
Ik had het ondertussen ook al gevonden... ik vind het echter nog steeds redelijk raar dat ik alleen in het eerste gedeelte van de eerste kolom kon klikken... blijft vreemd :)
Toch bedankt :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs