Fehlermeldung bei Öffnen-Dialog (CFileDialog)

endzeit

Grünschnabel
Hallo,
ich möchte mit diesem Dialog Dateien öffnen, mit dem Stil von XP, bei dem man links die Leiste hat. Funktioniert auch soweit ganz gut, wenn da nicht folgende Fehlermeldung wäre:
http://endzeit.s01.user-portal.com/Fehlermeldung.JPG
Wenn man auf ignorieren clickt funktioniert es trotzalledem, das sieht dann wie folgt aus:
http://endzeit.s01.user-portal.com/Dialog.JPG

Der Quellcode dazu ist:
Code:
  void CBeispiel::OnBTNImport() 
  {
  	CFileDialog fileDialog( true,NULL,NULL,OFN_EXPLORER,
  				"Textdateien (*.txt)|*.txt|"
  				"Alle Dateien (*.*) |*.*||");
  	CString PfadName;
  
  	// Formatierungen vornehmen
  	fileDialog.m_ofn.Flags = OFN_EXPLORER;
  	fileDialog.m_ofn.lpstrTitle = "Datei suchen ...";
  	fileDialog.m_ofn.lpstrInitialDir= m_csQuellpfad;
  
  	// Filedialog starten und auf OK warten (IDOK)
  	if(IDOK==fileDialog.DoModal())
  	{
 		PfadName = fileDialog.GetPathName();	// Dateipfad und Name mit Ext
  	}
  }

Ich wäre sehr dankbar wenn ihr mir dabei weiterhelfen könntet.
 
Zuletzt bearbeitet:
Wenn Du die Zeile fileDialog.m_ofn.Flags = OFN_EXPLORER wegkommentierst, ist die Assertation weg.

Da MFC intern den Standarddialog hookt, und dieses Hook-Flag durch den Constructor eingesetzt wird, und Du dieses Hook-Flag wieder weglöschst, indem du = OFN_EXPLORER setzt, und MFC dann ein ASSERT eingesetzt hat, dass auf dieses Flag prüft, kommt es zu der Meldung (keuch).
Dieses zweite OFN_EXPLORER-Flag kannst du dir sowieso schenken, das hast du ja im Constructor schon gemacht.

Warum da in der MFC jemand dann nicht einfach das blöde Flag automatisch dranflanscht und stattdessen unbedingt ein ASSERT reinschmeissen muss, weiss ich auch nicht (Kompatibilität evtl.). Es zeigt sich mal wieder, wer mit der MFC nicht genauso arbeitet wie erwartet, kriegt die tollsten Fehler/Probleme.
 
Die PlacesBar, jaja. Ich nehme stark an, du hast da eine ältere Ausgabe von MFC/VS.
Da hatten die Windows 2000-Programmierer bzw. die MFC-Jungs Mist gebaut. Da wurde der File-Open-Dialog trotz gesetztem Flag ohne die PlacesBar aufgemacht. In der aktuellsten Version (MFC 7) ist das gefixt, sonst muss man das selber machen.

Du kannst entwender über die GetOpenFileName-Funktion arbeiten (also Win32, geht klaglos), oder dir bei http://www.codeproject.com/dialog/win2000fd.asp?df=100&forumid=499&exp=0&select=356143 anguggen, wie's gemacht wird.
 
Zurück