CTreeViewCtrl::GetItemText()



  • kann mir jemand sagen wie man an den text eines CTreeViewCtrl-Items kommt?
    ich habe

    HTREEITEM item = myCTreeViewCtrl.GetSelectedItem();
    

    jetzt gibt es die methoden

    BOOL GetItemText(HTREEITEM hItem, LPTSTR lpstrText, int nLen) const
    BOOL GetItemText(HTREEITEM hItem, BSTR& bstrText) const
    BOOL GetItemText(HTREEITEM hItem, CString& strText) const
    

    und versuche mit

    LPTSTR alias;
    m_myCTreeViewCtrl.GetItemText(item, alias, 11); // item ist ein HTREEITEM und 11 die anzahl der stellen, die der text des items hat. nur stürzt er bei der letzten zeile ab.
    


  • noch besser wäre es eigentlich die methode zu nutzen

    BOOL GetItemText(HTREEITEM hItem, CString& strText) const
    

    nur weiss ich nicht wie ich ihm den zweiten parameter übergeben soll

    CString *alias = new CString;
    myCTreeViewCtrl.GetItemText(item, alias);
    

    oder

    CString *alias = new CString;
    myCTreeViewCtrl.GetItemText(item, &alias);
    

    funktioniert leider nicht



  • ++C++ schrieb:

    LPTSTR alias;
    m_myCTreeViewCtrl.GetItemText(item, alias, 11); // item ist ein HTREEITEM und 11 die anzahl der stellen, die der text des items hat.

    Schau nochmal in die Doku. Auch wenn man es dem Typ nicht gleich ansieht, LPTSTR ist ein Zeiger (dafür steht das P). Dein Zeiger ist uninitialisiert, zeigt also irgendwo in den Speicher, mit sehr hoher Wahrscheinlichkeit auf eine Adresse, auf die du nicht zugreifen darfst. Diese Funktion erwartet aber einen Zeiger auf einen gültigen Puffer (ein Array von TCHARs). Mit dem letzten Parameter sollst angeben, wie groß dieser Puffer ist.

    ++C++ schrieb:

    CString *alias = new CString;
    myCTreeViewCtrl.GetItemText(item, alias);
    

    Warum new? Kommst du von Java?

    CString alias;
    myCTreeViewCtrl.GetItemText(item, alias);
    


  • Sind hier etwa Java-Schurken anwesend? 😡 😃



  • java schurken hier, niiiiiiieeeeeeeeeee 🙄

    thx für die antworten, hat weitergeholfen!


Anmelden zum Antworten