CTreeCtrl einer Funktion übergeben



  • Hallo zusammen,

    ich habe ein CTreeCtrl (m_tree). Wenn ich nun den Tree einer Funktion übergebe die nicht in der Ansichtsklasse liegt, bringt er mir beim Zugriff auf den Tree (bspw. ein InsertItem) ein AccessViolation:

    CMyClass::DoSomething(CTreeCtrl* tree)
    {
      tree->InsertItem(...);
    }
    
    CMyAppView::OnBtn01()
    {
      [...]
      myClass->DoSomething(&m_tree);
    }
    

    Gibts ne Möglichkeit von einer anderen Klasse heraus auf den CTreeCtrl zuzugreifen?

    Grüße
    Mav



  • Aloha,

    die simpelste, aber auch uneleganteste Variante ist ein globaler Zeiger auf die TreeCtrl, bei den Infos, die Du geschrieben hast. Geht je nach Programm eleganter.

    Ist der TreeView ständig zu sehen in Deinen Proggi, hast Du nen SplitterWnd, need more Infos....

    Grüße

    Der BOA



  • @Mav:
    Sicher, dass dein myClass-Zeiger gültig ist?



  • Aloha,

    deswegen sach ich ja, brauche mehr Infos, ob z.B. der Treeview ständig aktiv ist.

    Ist er zwischendurch weg, verliert er natürlich auch die Adresse. Ist er ständig aktiv, kannst Du auf jeden Fall die Adresse global hinterlegen. Die verschwindet nicht.

    Wenn der Treeview immer wieder von neuen aufgemacht wird, mußt Du die globale Variable immer im oninitdialog des Treeview setzen.

    Aber das sind jetzt nur Hilfsmittel, uneleganter Art, mehr Infos wären schon schön. 🙂

    Ich bin gerade am werkeln an einer MDI-Anwendung, mit SplitterWnd. Links ist der Treeview, rechts ein Formview. Mein Treeview ist immer "zu sehen". Dementsprechend kann ich über den Mainframe immer auf den View zugreifen, auf den ich zugreifen will. Und dann natürlich auch auf die TreeCtrl.

    Grüße

    Der BOA



  • Macht das am besten per Referenz oder nullt die Zeiger, dann bleiben auch die AccessViolations zuhause.


Anmelden zum Antworten