CTreeCtrl - GetItemText()



  • Hallo!

    Ich habe in meinem Dialog ein CTreeCtrl mit Items eingefügt.

    Dann

    ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnClickOnNMClick)
    
    void Cxx::OnClickOnNMClick(NMHDR* pNMHDR, LRESULT* pResult)
    {
       strTemp = m_Tree->GetItemText(m_Tree->GetSelectedItem());
    }
    

    Ich bekomme aber immer nur den Text des TVI_ROOT, egal welches ausgewählt wird.
    Kann mir jemand sagen was ich falsch mache?

    Vielen Dank im Voraus!


  • Mod

    Laut Doku bekomst Du eine Struktur, die Dir das alte Item und das neue Item angibt.
    http://msdn2.microsoft.com/en-us/library/bb773544(VS.85).aspx

    Aber dennoch müsste das funktionieren.



  • So kriegst du einzelne Zweige:

    OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
    
    	HTREEITEM hCurSel = GetTreeCtrl().GetNextItem(TVI_ROOT,TVGN_CARET);
    	CString strTmp = GetTreeCtrl().GetItemText(hCurSel);
    	this->UpdateWindow();
    	*pResult = 0;
    
    }
    

    strTmp ist dann die Name, des ausgewählten Zweiges.



  • Perfekt, vielen vielen Dank!

    Ich hab es für mich angepasst und nun gehts:

    OnClickOnNMClick(NMHDR* pNMHDR, LRESULT* pResult)
    {
       LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
       HTREEITEM hCurSel = m_Tree -> GetNextItem(TVI_ROOT,TVGN_CARET);
       CString   strTmp  = m_Tree -> GetItemText(hCurSel);
    
       this->UpdateWindow();
       *pResult = 0;
    }
    

  • Mod

    Und warum der Umstand mit GetNextItem?
    Man bekommt doch das selektierte Item in pNMHDR geliefert?

    <selbstgespräch>Manchmal Frage ich mich warum ich überhaupt Links poste.</selbstgespräch>


Anmelden zum Antworten