CListCtrl Spaltenindex der Zelle



  • Hi,

    kann mir jemand sagen, wie man an den Spaltenindex der geklickten Zelle herankommt? Bis jetzt steht der zweite Parameter in GetItemText()fest auf 0 oder 1 usw, es soll aber gerne der Inhalt der Zelle zurückgegeben werden, die angeklickt wurde.
    Hab schon mit pNMLV->isubItem als zweiten Parameter rumprobiert. Klick ich auf eine Zelle in Spalte 2, kommt nichts zurück.
    Irgendwie passt die HDITEM-Struktur nicht zu getItemText().
    Hab weiter unten im Code sogar den Text des Spaltenkopfes mit hc->GetItem(pNMLV->iSubItem, &hdi) geholt. Aber der Spaltenindex der geklickten Tabellenzelle, will nicht. Probier schon Stunden rum ... Schlimm!
    Logisch wäre doch, dass pNMLV ne 2-dim. koordinate enthält - und fertig. 😕
    Soweit das hier:

    void CDlg2::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST1);	
    CString itemText = pListCtrl->GetItemText(pNMLV->iItem, ?????); 
    ...
    

    Vielleicht hat jemand einen Tipp, kann ja nicht so wild sein.
    Gruss
    koreson



  • 'nabend

    Keiner nen Tipp - alle aushäusig ?
    Habs eben selbst rausgetüftelt.

    [cpp]
    void CDlg2::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    CListCtrl* pListCtrl = (CListCtrl*) GetDlgItem(IDC_LIST1);
    pListCtrl->SetExtendedStyle(LVS_EX_FULLROWSELECT);
    //Spaltenindex der geklickten Zelle
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMLV; <- funzt !
    int nColumn = pNMListView->iSubItem;
    //Zelleninhalt holen
    CString itemText = pListCtrl->GetItemText(pNMLV->iItem, nColumn);
    ...
    [/cpp]

    gruss
    koreson


Anmelden zum Antworten