OnMove GetWindowRect -> Laufzeitfehler
-
Guten Morgen,
aus Testzwecken spiele ich ein wenig mit der CRect Klasse herum.
Das Einsatzgebiet dieser Klasse ist in meinem Projekt die OnMove Methode.
Der Quelltext sieht folgendermaßen aus:void CTestlistDlg::OnMove(int x, int y) { CDialog::OnMove(x, y); //CWnd *handle = GetDlgItem(IDD_TESTLIST_DIALOG); CRect rec; m_ListCtrl.GetWindowRect(&rec); CString str; str.Format("left: %i\nright: %i\nbottom: %i\ntop: %i", rec.left, rec.right, rec.bottom, rec.top); m_CStatic.SetWindowText(str); }
Das Kompilieren erfolgt ohne Fehler, jedoch scheitert die Ausführung.
Der Laufzeitfehler besagt das eine Zugriffsverletzung vorliegt.
Folglich nutze ich die Hilfe des Debuggers.m_ListCtrl.GetWindowRect(&rec);
Diese Zeile ist der Knackpunkt, denn dort tritt der Laufzeitfehler auf.
Ergo: Ich wäre euch sehr verbunden, wenn ihr eine Methode posten würdet, die die
CRect Klasse mit Daten füllt.
Übrigens ist dieses Phänomän der Laufzeit schon öfters in meinen Projekten aufgetaucht, wobei ich keinen Fehler erkennen konnte.Gruß
-
1.) Was für einen Fehler bekommst du? Wenn es ein Assert ist, drück mal auf Wiederholen.
2.) Wenn du das vor OnInitDialog machst, existiert das Fenster noch nicht und du kannst auch keine Größe abfragen. (Logisch, oder?)
-
hi estartu_de,
Du hast Recht! Der Fehler kam, weil noch kein Dialog Fenster existierte.
Ich hab es mit einer Variablen gelöst, die es OnMove nur gestattet Daten auszugeben, wenn die Variable die Wertigkeit true besitzt.
Am Ende der OnInitDialog bekommt die Variable den Wert true zugewiesen.Danke dir!
Gruß