Probleme mit OnPaint und CFileDialog
-
Also ich habe einen Button, der hat eine Behandlungsroutine die folgendermaßen aussieht:
void CLineAnalyzerDlg::OnButtonClickedLeft() { CFileDialog m_fdLoadFile(true, NULL, NULL, OFN_HIDEREADONLY|OFN_FILEMUSTEXIST, "Text Files (*.txt)|*.txt||", NULL); if (m_fdLoadFile.DoModal() == IDOK) { // OK geklickt... m_sFileNameLeft = m_fdLoadFile.GetFileName(); UpdateData(false); setPointer(&m_pLeftFile, ReadFile((LPCTSTR)m_sFileNameLeft)); } else return; }Warum ist der Button - solange das File lädt (kann bei großen Files bis zu 7 Sekunden dauern) - verschwunden? Und wie kann ich dem abhelfen?
Kann das "Datei lesen" leider nicht aus der if-Schleife rausnehmen, sonst würde er ja auch kesen, wenn ich "Abbrechen" klicke.
-
Der Button ist bestimmt verschwunden, weil die Anwendung besseres zu tun hat, als sich um ihr Aussehen zu kümmern.
Vielleicht hilft ja ein
GetDlgItem(IDC_VON_DEM_BUTTON)->RedrawWindow();
irgendwo in deiner Behandlungsroutine.
-
Jepp, danke! Schnell und unkompliziert.
-
Mmhh... hier ist jetzt ein Effekt entstanden, den ich nicht deuten kann:
Wenn ich das Projekt mit Strg+F5 starte, habe ich immer noch ein OnPaint-Problem, wenn ich die Applikation allerding direkt aus dem Release-Ordner starte, ist alles in Ordnung. Wie erklärt sich dieser Effekt? Kann man das abstellen?
-
Wenn du RedrawWindow oder UpdateWindow brauchst hast du eh was falsch gemacht. Das Laden der Dateien gehört in einen neuen Thread.
-
..... schrieb:
Wenn du RedrawWindow oder UpdateWindow brauchst hast du eh was falsch gemacht. Das Laden der Dateien gehört in einen neuen Thread.
Das ist aber heftig, ich muss das Programm in 4 Wochen fertig haben und habe mich noch überhaupt nie (!!!) mit Thread-Programmierung beschäftigt.