Unverschändliches Problem beim Zugriff auf andere Membervariable/ -funktion
-
Sorry, das ich für das leidige Thema noch mal einen neuen Thread aufmache musste, aber ich verstehe leider nich wirklich was ich falsch mache, da es sonst auch immer funktioniert hat...
Also, ich habe folgende 2 Klassen: CTabDlg1 und CAbiplanerDlg (HauptDlg).
Jetzt mach ich ich im HauptDlg folgendes um den Text des makierten Items aus der TreeCtrl zu bekommen:void CAbiplanerDlg::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult) { LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR); CString str, szParent; HTREEITEM htrItem = m_ctlTreeCtrl.GetSelectedItem(), htrItemParent = m_ctlTreeCtrl.GetParentItem(m_ctlTreeCtrl.GetSelectedItem()); str = m_ctlTreeCtrl.GetItemText(htrItem); szParent = m_ctlTreeCtrl.GetItemText(htrItemParent); }
Das klappt auch so weit. Da ich noch eine Globale Klasse habe, dachte ich mir, ich lege den Inhalt von str szParent einfach in eine dort vorhandene membervariable ab und hole den Wert dann wieder in der TabDlg Klasse wieder und schreibe ihn dann in dortbefindliche ListCtrl. Das klappte aber einfach nicht (der string war immer leer).
Hier mal der code zu einem meiner Versuche bei denen der String leer ist:CString str; CAbiplanerDlg var; str = var.str; m_ctlListCtrlAF1.SetItemText(m_ctlListCtrlAF1.GetSelectionMark(), 1, str);
Es soll in der TabDlg Klasse nicht mehr passieren wie das dass makierte Element in die ListCtrl geschrieben wird.
void CDlgTab1::OnNMDblclkListAf1(NMHDR *pNMHDR, LRESULT *pResult) { CString str, szParent; if(m_ctlListCtrlAF1.GetSelectionMark() == 5) { MessageBox("PAUSE", "Hinweis", MB_ICONEXCLAMATION); } else { m_ctlListCtrlAF1.SetItemText(m_ctlListCtrlAF1.GetSelectionMark(), 1, str); m_ctlListCtrlAF1.SetItemText(m_ctlListCtrlAF1.GetSelectionMark(), 2, szParent); } }
Also dachte ich mir ich auch einfach in der TabDlg Klasse in Objekt der Abiplaner Klasse erstellen und dann darüber auf die methoden der TabCtrl zugreifen... Das klappte aber auch nicht.
Wenn ichs mit zeigern versuchte bekam ich ständig eine Zugriffsverletzung.
Mir wurde aber auch irgendwas von casten erzählt, doch davon habe ich leider keine Ahnung.
Wäre echt nett wenn mir einer weiterhelfen könnte. Ich versuch dieses Problem jetzt schon sein gestern abend zu lösung und werde echt bald verrückt.Gruß
Chris
-
Hi,
kann ja sein, dass ich mich täusche, aber meiner Meinung nach muss die Variable var.str leer sein, da Du hier
CAbiplanerDlg var;
eine neue Instanz des Objekts "CAbiplanerDlg anlegst. Eigentlich solltest Du Dich aber auf die bestehende Instanz beziehen - übergibt Doch einen Zeiger auf das Objekt!
Gruss
yeti