File Dialog schließt von allein



  • Hallo,
    wie der Titel schon sagt, habe ich einen File Dialog, der sich nur leider automatisch schließt, wenn ich ihn einige Sekunden geöffnet lasse und keine Datei auswähle.

    Ist das Problem bekannt und kennt jemand eine Lösung?

    Hier mein Code:

    void CBullmuhsDlg::On_Daten_einlesen(){
    
        CFileDialog m_dlgFile(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Bullmuhs-Dateien (*.csv)|*.csv||");
    
    	if( m_dlgFile.DoModal() == IDOK ){ m_pathname = m_dlgFile.GetPathName(); }
    	CFile datei( m_pathname, CFile::modeRead ); 
    
    	UINT nActual = 0;
    	TCHAR str[100000];
    
    	nActual = datei.Read(str, sizeof(str));
    	datei.Close();
    	str[nActual] = 0;
    
    	sDaten = str;
    	sDaten.Replace("\n","\r\n");
    
    	m_sEdit1=sDaten;
    	UpdateData(FALSE);
    
    }
    

    Vielen Dank,
    Romeo-G


  • Administrator

    Ich muss sagen das ist mir noch nie passiert und ich habe schon einige male den FileDialog genutzt. Und auch genau gleich wie du. Aber wie gesagt, dass der sich automatisch schliesst ist mir noch nie passiert. Bist du sicher, dass du nicht irgendwo etwas am weiterlaufen hast, welches irgendwie das momentan aktive Fenster schliesst oder sowas?
    Ansonsten müsstest du halt mal ein Breakpoint in CFileDialog setzen und zwar beim schliessen. Du kannst ja zur Defintion von CFileDialog gehen und dort sollten auch Dinge vorhanden sein wie OnCancel oder solches Zeugs. Ansonsten mal eine eigene Klasse machen abgeleitet von CFileDialog, dann kannst du alle Nachrichten selber abfangen und dir anzeigen lassen. Ist zwar aufwand, aber über den Debuger kann man dann zurückverfolgen. Z.b. über den Call Stack.
    Alles nur so einzelne Ideen. Nicht wirklich eine Hilfe.

    Grüssli



  • Hallo,
    über Spy++ habe ich die letzten Nachrichten abgefangen, die an das Fenster geschickt wurden und dabei wurde mehrmals "WM_ENTERIDLE" angezeigt.

    Klingelt da was?

    Danke,
    Romeo-G


  • Administrator

    Nö ... Auszug aus der MSDN:

    The WM_ENTERIDLE message is sent to the owner window of a modal dialog box or menu that is entering an idle state. A modal dialog box or menu enters an idle state when no messages are waiting in its queue after it has processed one or more previous messages.

    Glaube nicht das dies dein Problem ist XD
    Das ist einfach den Zustand wo deine Dialogbox darauf wartet das der Anwender was tut *g*
    Grüssli


Anmelden zum Antworten