CFileDialog



  • Folgendes Problem:
    Ich arbeite mit Windows 7 Home Premium, VS 2008 Standard MFC.
    In meinem längerem Programm habe ich folgenden Text:

    CFileDialog dlg(true);
    dlg.DoModal();

    Es tut sich nichts !
    Bei Windows XP Home schon !
    Bei einem anderen Test-Programm unter Win 7 geht es auch.
    Habt Ihr eine Idee ?



  • Ich nochmals, sollte sich das Problem nicht beheben lassen, muss ich wohl die
    Dialog-Box selber schreiben. Gibt es bei den MFC Unterstützung für dieses
    Vorhaben ? Wenn ja, welche ?



  • // Startverzeichnis initialisieren
         CFileDialog m_File(TRUE);
         m_File.m_ofn.lpstrInitialDir = "C:\\Windows\\";
    
          // Nur Ordner Anzeigen
          // CFileDialog m_File(FALSE, NULL,strQuelle1, OFN_OVERWRITEPROMPT, 
    		// " Nur Ordner (*.!!!)|*.!!!");
    
         // Nur Bilddateien anzeigen
         // CFileDialog m_File(TRUE, NULL, NULL, OFN_HIDEREADONLY |  
         // OFN_OVERWRITEPROMPT, "Bild-Dateien (*.bmp, *.gif, *.jpeg,
         //   *.jpg)|*.bmp;*.gif;*.jpeg;*.jpg||");
         // Das gleiche geht auch mit .doc usw.
    
         // Text für die Titelleiste des Dialogs ändern
          m_File.m_ofn.lpstrTitle="Bitte wählen...";
    
          // Dialogfeld öffnen
          if(m_File.DoModal()==IDOK)
          {
    
          }
    


  • HermannGo schrieb:

    So gehts ...

    // Startverzeichnis initialisieren
         CFileDialog m_File(TRUE);
         m_File.m_ofn.lpstrInitialDir = "C:\\Windows\\";
    
        ...
    

    ... leider nicht lt. MSDN

    Die folgende Liste der Member, die nicht von Windows Vista (oder höher) unterstützt werden:
    lpstrCustomFilter
    lpstrInitialDir
    lCustData
    lpfnHook
    lpTemplateName

    https://msdn.microsoft.com/de-de/library/43xtah3y.aspx

    Möglicherweise funktioniert das Beispiel aus der MSDN

    https://msdn.microsoft.com/de-de/library/dk77e5e7.aspx



  • Du kannst auch einen CString anlegen:

    CString strQuelle1="C:\\Windows\";

    Siehe den ersten auskommentierten Code.
    Dann brauchst du lpstringInitialDir nicht.



  • Du kannst auch einen CString anlegen:

    CString strQuelle1="C:\\Windows\";

    Siehe den ersten auskommentierten Code.
    Dann brauchst du lpstringInitialDir nicht.



  • Hab einen Backslash hinter Windows vergessen



  • HerrmannGo, tut mir leid, aber es hat nicht geklappt ! Ich habe auch schon
    gegoogelt, dort wurde das Problem auch beschrieben, allerdings ohne Lösung.
    Nur zu blöd, dass bei Visual Studio immer wieder Bugs auftauchen !!!



  • merano schrieb:

    HermannGo schrieb:

    So gehts ...

    // Startverzeichnis initialisieren
         CFileDialog m_File(TRUE);
         m_File.m_ofn.lpstrInitialDir = "C:\\Windows\\";
    
        ...
    

    ... leider nicht lt. MSDN

    Die folgende Liste der Member, die nicht von Windows Vista (oder höher) unterstützt werden:
    lpstrCustomFilter
    lpstrInitialDir
    lCustData
    lpfnHook
    lpTemplateName

    https://msdn.microsoft.com/de-de/library/43xtah3y.aspx

    Möglicherweise funktioniert das Beispiel aus der MSDN

    https://msdn.microsoft.com/de-de/library/dk77e5e7.aspx

    Das funzt komischerweise doch. Kann sowohl Fenstertitel wie auch Startverzeichnis vorgeben. Hab Win7, 64bit, MS Visual Studio 2010. Nun weiß ich nicht was unter "Tut sich nichts" zu verstehen ist. Laut MSDN werden die Eingaben einfach ignoriert. Damit würde zunmindest das Dialogfeld zu sehen sein.


Anmelden zum Antworten