Klasse CFileDialog hinzufügen?

sacridex

Mitglied
Ich hab schon gegugelt und die Fuschfunktion benutzt, aber nix gefunden. Wahrscheinlich weil es selbstverständlich ist, für mich aber ned ;)
Jeder fängt mal klein an!
Also ich würde gerne wissen, wie man eine neue Klasse in sein Programm hinzufügt. Ich würd nämlich gern die Klasse CFileDialog hinzufügen, aber find ned wie das geht. Wenn ich ne neue mach, dann sagt er mir, die Klasse gibts schon, aber ich weiss ned wo.
Danke im vorraus!
 
Wenn ich mich recht erinnere, geht das so:
Code:
// an dieser Stelle im Programm eine Datei wählen:
CFileDialog dlg ( TRUE ); // TRUE für open, FALSE für speichern
if ( dlg.DoModal() == IDOK )
{
  CString path = dlg.GetPathName();
  // datei öffnen oder was auch immer...
}

Die verschiedenen Parameter für den Konstruktor hol dir am besten aus der MSDN.
 
Kachelator: Ich glaube, er meint eine neue Klasse anlegen.

Tach.

Die Klasse CFileDialog ist eine von MFC bereits vorbelegte Klasse, den Namen kannst du also leider nicht selbst verwenden. Versuche einfach einen anderen Namen für deine Klasse.
 
Upps, sorry dann. Der Vorschlag von Kachelator müsste genügen.

Bei MFC musst du die einzelnen Dateien (Klassen) nicht mehr per Hand hinzufügen. Ein "include "stdafx.h" ganz oben müsste reichen, damit die Klasse erkannt wird.
 
Brauchst du garnicht. Mach immer lokal einen Filedialog da auf, wo du ihn brauchst. Merk dir einfach nur den zuletzt gewählten Pfad, falls du ihn brauchst, und initialisier den neuen Dialog wieder damit, falls gewünscht, damit er direkt im richtigen Verzeichnis öffnet.

Wenn es aber unbedingt eine Membervariable sein soll, dann so:
Code:
class CMyClass
{
  CFileDialog m_Filedialog;
  ...
}
 
hallo Kachelator,
du erwähnst da ein Problem, das ich gerade aktuell habe: öffnen eines Fileopendialogs mit einem bestimmten Startverzeichnis.
Ich versuche das gerade mit embedded VC++ 4.0 und dem Emulator. ich dachte mir, dazu muss ich einfach folgendes machen, bevor ich DoModal aufrufe:

fileDlg.m_ofn.lpstrInitialDir = (CString)"\\Storage Card";

aber egal, was ich da reinschreibe, der Dialog wird immer mit "My Documents" als Startverzeichnis geöffnet.
Mir ist klar, dass sich sich embedded VC++ manchmal schon unterscheidet, und der Emulator ist auch nur ein Emulator, aber wie würde man das denn "normal" machen?
 
Hm, da kann ich dir auch nicht helfen. Bin leider gerade nicht im Thema. Bin nicht sicher, aber vielleicht testest du mal, ob es am String liegt. Der Cast auf CString ist übrigens nicht nötig. Aber braucht es vielleicht einen Backslash hintendran? Versuch es mal mit einem anderen Pfad.

Nur eine fade Hilfe, ich weiss, aber ich habe auch keine Idee -- sorry.
 

Neue Beiträge

Zurück