Wie im CFileDialog Fenster Titel setzen

RuFFnEcK

Erfahrenes Mitglied
So funktioniert es schonmal nicht :D

Code:
			CFileDialog ldFile(TRUE, "exe", "VailooMon", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "VailooMon executable (*.exe)|*.exe||");
			ldFile.SetWindowText("VailooMon.exe Pfad angeben");
			if (ldFile.DoModal() == IDOK)
			{
				m_VailooMonPath = ldFile.GetPathName();
				returnValue = true;
			}
Alles funktioniert bis auf den Titel da steht nur der std. Text und nicht das was ich will :(
Wie kann ich es erreichen dass da im titel das steht was ich will^^
 
Hi,
du mußt am Besten einen File-Dialog von CFileDialog ableiten. Dort kannst du dann OnInitDialog überschreiben und in dieser Funktion den Titeltext setzen. Beachte aber, daß CFileDialog aus zwei Fenstern zusammengesetzt ist und der Titel zum Parent-Fenster gehört. Du mußt in OnInitDialog also schreiben
Code:
	GetParent()->SetWindowText(meinTitel);
Vielleicht funktioniert es aber auch mit
Code:
	ldFile.GetParent()->SetWindowText(meinTitel);
Dann sparst du dir das Ableiten. Das ist aber nicht getestet.

Mfg

langer
 
Zuletzt bearbeitet:
CFileDialog hat einen member "m_ofn", der auf eine Struktur OPENFILENAME verweist.
Hier kannst du den Dialog recht gut konfigurieren. Der Member "lpstrTitle" ist für den Titel des Dialogs zuständig.
Mit ...
Code:
CFileDialog ldFile( TRUE, "exe", "VailooMon", OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT, "VailooMon executable (*.exe)|*.exe||");

ldFile.m_ofn.lpstrTitle = "VailooMon.exe Pfad angeben";

if (ldFile.DoModal() == IDOK)
{
m_VailooMonPath = ldFile.GetPathName();
returnValue = true;
}

... sollte es funktionieren.

Gruß
MCoder
 
Tausend Dank euch beiden ;)
Werde es gleich mal ausprobieren.

@MCoder

Woher weißt du sowas?
Wo kann man das z.B. nachlesen?
In der MSDN find ich sowas nicht...
Wo hat M$ solche Infos hinterlegt?

Es hat wunderbar funktioniert, nur das der Member m_pOFN von CFileDialog ein Pointer ist ;)
Hast du wohl ausm Kopf geschrieben :D Nicht schlecht^^

Code:
CFileDialog ldFile(TRUE, "exe", "VailooMon", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "VailooMon executable (*.exe)|*.exe||");
			ldFile.m_pOFN->lpstrTitle = "VailooMon.exe Pfad angeben";
			if (ldFile.DoModal() == IDOK)
			{
				m_VailooMonPath = ldFile.GetPathName();
				returnValue = true;
			}
Vielen Dank nochmal!
 
Zuletzt bearbeitet:
Mini-Anmerkung:

Das war früher auch mal ein direktes Member. Das gab aber Probleme, als bei Windows 2000 die erweiterten FileDialoge eingeführt wurden (die mit der Placesbar links). Da hatte dann der Standard-MFC-Filedialog diese nicht.

Das Umbauen auf den Pointer hat das Problem behoben (Windows erkennt intern an der Grösse und ein paar Flags des OPENFILENAME-structs, welche Version des Dialoges angezeigt werden soll).
 
RuFFnEcK hat gesagt.:
Wo kann man das z.B. nachlesen?
In der MSDN find ich sowas nicht...
Auszug aus der MSDN:
===========================================================
CFileDialog::m_ofn

m_ofn is a structure of type OPENFILENAME.

Remarks
Use this structure to initialize the appearance of a File Open
or File Save As dialog box after it is constructed but before it
is displayed with the DoModal member function. For example, you
can set the lpstrTitle member of m_ofn to the caption you want
the dialog box to have.


For more information, see the OPENFILENAME structure
in the Platform SDK.
===========================================================

RuFFnEcK hat gesagt.:
Es hat wunderbar funktioniert, nur das der Member m_pOFN von CFileDialog ein Pointer ist
Also, bei mir heißt der member m_ofn und ist kein Pointer. Wurde wahrscheinlich bei irgendeiner MFC-Version mal geändert.

/edit
Habe gerade noch mal nachgeschaut: Im VS2005 stehen beide Varianten zur Verfügung (m_ofn und m_pOFN), in der MSDN ist allerdings nur der Member m_ofn dokumentiert (zumindest bei der CFileDialog-Klassenreferenz).

Gruß
MCoder
 
Zuletzt bearbeitet:
Zitat von RuFFnEcK
Wo kann man das z.B. nachlesen?
In der MSDN find ich sowas nicht...
Auszug aus der MSDN:
===========================================================
CFileDialog::m_ofn

m_ofn is a structure of type OPENFILENAME.

Remarks
Use this structure to initialize the appearance of a File Open
or File Save As dialog box after it is constructed but before it
is displayed with the DoModal member function. For example, you
can set the lpstrTitle member of m_ofn to the caption you want
the dialog box to have.

For more information, see the OPENFILENAME structure
in the Platform SDK.
===========================================================

Ok hab gestern nur nach der Pointer Version gesucht und nicht gefunden ^^
Nunja am Ende muss man einfach lernen der MSDN die Informationen zu entlocken...
Mit der Suche komm ich meißt nicht all zu weit, die Begriffe die man bräuchte um etwas zu finden würden das Problem ja schon lösen :D

Habe gerade noch mal nachgeschaut: Im VS2005 stehen beide Varianten zur Verfügung (m_ofn und m_pOFN), in der MSDN ist allerdings nur der Member m_ofn dokumentiert (zumindest bei der CFileDialog-Klassenreferenz).

Dem nach zu urteilen was ihr beide da sagtet, denk ich dass sich das so entwickelt hat...
Ich hab hier VS 2003 und da gibts nur die Pointer Version...
Ich denke zu erst haben se in 2003 den Member durch den Pointer ersetzt und
dadurch wiederum andere Probs verursacht,
um dann wieder in 2005 beide Versionen einzuführen.

Ihr habt mir alle sehr geholfen, vielen Dank nochmal für die Mühen!
Special Thanx 2 MCoder ;)

Grüße
RuFF
 
Zurück