CFileDialog
-
Hallo Leute,
ich möchte in meinem Programm einen CFileDialog öffnen.
CString puffer; CFileDialog dlg(TRUE,"Excel-Datei (*.xls)",NULL,OFN_HIDEREADONLY,NULL,this,sizeof(OPENFILENAME )); dlg.DoModal();Es funktioniert auch fast alles. Nur leider wird mir im Feld DateiTyp nicht meine Angabe der Excel Datei angezeigt. Wie kriege ich das hin, das ich nur .xls Datein auswählen kann ?
-
MSDN:
Pointer to a buffer containing pairs of null-terminated filter strings. The last string in the buffer must be terminated by two NULL characters.
The first string in each pair is a display string that describes the filter (for example, "Text Files"), and the second string specifies the filter pattern (for example, "*.TXT").
-
CString puffer; CFileDialog dlg(TRUE,"Excel-Datei |(*.xls)||",NULL,OFN_HIDEREADONLY,NULL,this,sizeof(OPENFILENAME )); dlg.DoModal();
-
so ist es richtig:
CFileDialog Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,"Excel (*.xls)\0*.xls\0\0",this);
-
oder auch so
CFileDialog dlg(TRUE, NULL, NULL, NULL, "XML Datein (.xml)|.xml||");
-
eben nicht, der vierte Parameter ist von Typ DWORD und nicht void*
-
Vielen Dank, so hat es jetzt funktioniert !
-
Sorry, leider doch nicht ganz,
ich habe unten jetzt zwar die Auswahl *.xls,
aber er zeigt mir im Auswahlfenster keine .xls Dateien an.
Er zeigt nur die Ordner an.
-
Hör' mal, wenn du diesen Code eingibst...
CFileDialog pDlg(TRUE,
NULL,
NULL,
OFN_HIDEREADONLY,
"Excel-Dateien (.xls)|.xls||"
NULL);... müsste das Problem behoben sein. Achte darauf, dass vor den abschließenden Zeichen tatsächlich der Filter '.xls' befindet. Vergisst du den Punkt, den Platzhalter () oder schreibst du gar eine falsche File-Extension auf, sucht dein Computer verzweifelt nach dieser Maske. Da du aber sehr wahrscheinlich die entsprechenden Dateien mit der falschen Maske nicht besitzt, werden nur die Verzeichnisse angezeigt!
-
Ein ´|´ am Ende reicht - das zweite Terminator Zeichen ist eh schon da.
So eine Verschwendung von Speicher. :p :p