Funktion?



  • Hallo NG,

    könnte mir bitte jemand etwas weiter helfen, ...

    ich versuche bei einer CListCtrl herauszufinden, welche Zeile Markiert ist.

    1. Wie kann ich einstellen, dass eine ganze Zeile markiert wird.
    2. Mit welcher Funktion kann ich herausfinden welche Zeile markiert ist, und wie funktioniert diese Funktion?

    Irgendwie finde ich dazu nichts, oder ich verstehe die dazu gemachten Angaben nicht?!?

    Vielen Dank.

    Gruß Walter



  • zu 1.:
    SetExtendedStyle(FULL_ROW_SELECT | GetExtendedStyle()) oder so ähnlich... (s.MSDN)

    zu 2.:
    (s. auch MSDN)

    CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_YOURLISTCONTROL);
    ASSERT(pListCtrl != NULL);
    
    POSITION pos = pList->GetFirstSelectedItemPosition();
    if (pos == NULL)
       TRACE0("No items were selected!\n");
    else
    {
       while (pos)
       {
          int nItem = pList->GetNextSelectedItem(pos);
          TRACE1("Item %d was selected!\n", nItem);
          // you could do your own processing on nItem here
       }
    }
    

    Hier bekommst Du die erste Position, musst diese Methode nochmal (mit der erhaltenen Positiom) aufrufen, dann bekommst Du auch die Zeilennummer! Der Beispielcode aus der MSDN spricht (hoffentlich) eigentlich für sich...

    Timo



  • NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    int Item = -1;
    Item = pNMListView->iItem;

    so dieses kurze schnipsel fügst du in deine OnClick behandlungsrotine für das listctrl ein und in Item wird die Position dwes selectierten eintrags gespeichert.

    Hoffe ist verständlich?


Log in to reply