CFileDialog - Wie mehrere Dateien öffnen lassen?

hallo!

hab da gleich 2 fragen:

  1. wie kann man den bei cfiledialog angeben, dass man nicht nur eine
    datei öffnen lassen will sondern mehrere?

  2. die geöffneten dateinamen möchte ich an ein listfeld übergeben. mit
    einem eingabefeld gehts ja, aber da dürften mehrere nicht gehen
    oder? jedenfalls wenn ich statt eingabe- ein listfeld nehme steht
    auch nach updatedata(false) nix im listfeld, obwohl gleiche
    variable usw wie das eingabefeld, wo es ja geht.

hallo!

hab da gleich 2 fragen:

  1. wie kann man den bei cfiledialog angeben, dass man nicht
    nur eine
    datei öffnen lassen will sondern mehrere?

Vor dem DoModal() muss m_ofn.Flags auf OFN_ALLOWMULTISELECT gesetz werden.
Um die Namen zu ermitteln wird nicht GetFileName() benutzt sondern es werden GetStartPosition() und GetNextPathName() verwendet.

  1. die geöffneten dateinamen möchte ich an ein listfeld
    übergeben. mit
    einem eingabefeld gehts ja, aber da dürften mehrere nicht
    gehen
    oder? jedenfalls wenn ich statt eingabe- ein listfeld nehme
    steht
    auch nach updatedata(false) nix im listfeld, obwohl gleiche
    variable usw wie das eingabefeld, wo es ja geht.

CFileDialog öffnet die Dateien nicht, sich liefert nur die Namen.
Um die Namen in eine Listbox auszugeben, müssen sie wie in 1) ermittelt werden und mit AddString() an die Listbox übergeben.

Beispiel:

CFileDialog cfd(...); // Parameter setzen (Pfad , Extension usw. )  
  
// m\_ctrlLB --\> Listbox  
POSITION pos;   
CString csFile;  
  
cfd.m\_ofn.Flags |= OFN\_ALLOWMULTISELECT; // kann auch oben gesetzt werden  
  
/\*  
.....  
\*/  
if(IDOK == cfd-\>DoModal())  
{  
 pos = cfd.GetStartPosition();  
 while(pos != NULL)  
 {  
 csFile = cfd.GetNextPathName(pos);  
 m\_ctrlLB.AddString(csFile);  
 }  
}