Multiselect funktioniert nur bis 6



  • Hi

    Ich habe folgendes Problem... Ich habe ein Dateiauswahlfeld (welches eine Mehrfachauswahl erlaubt) wenn ich jedoch mehr als 6 Dateien auswähle passiert nichts! Das ganze ist noch in VS6 geschrieben. Wird jedoch auf VS 2003 poritert. Woran liegt das Problem??

    Hier mein Code:

    CFileDialog cfd(TRUE , "" , NULL, OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT  , "Alle Files(*.*)|*.*|" , NULL); 	
        if(cfd.DoModal() == IDOK ) 
        { 
    		POSITION nDatei;
    		nDatei=cfd.GetStartPosition();
    
    		do
    		{
    			szDatei=cfd.GetNextPathName(nDatei);
    		}
        }
    

    Vielen Dank!



  • Dein Quellcode enthält Fehler. Bitte poste den Quellcode hier, den du auch kompilieren kannst.



  • CFileDialog cfd(TRUE , "" , NULL, OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT  , "Alle Files(*.*)|*.*|" , NULL);     
        if(cfd.DoModal() == IDOK ) 
        { 
            POSITION nDatei; 
            nDatei=cfd.GetStartPosition(); 
    
            do 
            { 
                szDatei=cfd.GetNextPathName(nDatei); 
            } 
            while(nDatei);
        }
    

    Die ganze Funktion kann ich nicht posten, da darin in sehr viele Funktionen verwiesen wird...


  • Mod

    Das Problem ist bei Design.
    m_ofn.nMaxFile und m_ofn.lpstrFile musst Du größer bereitstellen.
    Standardmässig wird hier IMHO nur _MAX_PATH allokiert.

    Das ganze ist komplett in der Doku in der MSDN it Beispiel beschrieben:

    CFileDialog dlgFile(...);
    ...
    CString fileName;
    dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(<very large number>);
    dlgFile.GetOFN().nMaxFile = <very large number>;
    
    INT_PTR nResult = dlgFile.DoModal();
    fileName.ReleaseBuffer();
    

    http://msdn2.microsoft.com/en-us/library/dk77e5e7(VS.80).aspx



  • Und wie genau äußert sich das Problem jetzt?

    (Ich würde ja vermuten, daß der Dialog einfach zu wenig Platz hatte, alle Dateinamen unterzubringen)



  • Danke!
    Nun funktioniert das Ganze!


Anmelden zum Antworten