TreeView GetItemData Problem



  • Hallo Zusammen,

    Ich will in eimem Programm Datensätze aus einer Datenbank in einer Strukturansicht ( TreeView) darstellen.

    Das klappt auch soweit. Aber zum richtigen Anlegen der Unterknoten muss ich den Oberknoten finden.
    Über den Textinhalt den Knoten geht es nicht, da der Text mehrfach vorkommen kann.
    Deshalb möchte ich in das Data Feld einen eindeutigen Wert eintragen, den ich später wieder suchen kann.

    Leider funktioniert das nicht.

    Ich habe das Problem hier mal verkürzt dargestellt.

    Hier setz ich den Text in das Data Feld ein

    m_wndFileView.SetItemData(hSrc, (DWORD_PTR) &tmpString);
    

    In der nachfolgenden Zeile möchte ich zum Test den Inhalt zurück lesen

    CString tst = (CString *) m_wndFileView.GetItemData(hSrc);
    

    Das führt jedoch zu dieser Fehlermeldung :

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler C2440 "Initialisierung": "CString *" kann nicht in "ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t>>>" konvertiert werden

    Wäre euch sehr verbunden hier weitere Unterstützung zu bekommen.

    VG u. Danke im vorraus

    verwegener


  • Mod

    Syntaktisch richtig wäre ja auch nur:

    CString tst = *(CString *) m_wndFileView.GetItemData(hSrc);
    

    In meinen Augen besser:

    CString tst = *reinterpret_cast<CString *>(m_wndFileView.GetItemData(hSrc));
    

    Ich hoffe Dir muss klar sein dass tmpString auch weiter existieren muss, solange Du einen Zeiger darauf benutzen willst...



  • Danke,

    da hab ich wohl vor lauter Zeigern den Baum nicht gesehen.

    So funktioniert es jetzt.

    Vielen Dank für die Hinweise, jetzt komme ich weiter.


Anmelden zum Antworten