hilfe.. muss textdatei mit CFiledialog laden und ausgeben können
-
Hallo!
Hoffe ihr könnt mir helfen.
Ich habe eine MFC mit SDI zur Anwendung.
Ich will einfach eine Textdatei über diesen CFileDialog auswählen, laden und anschließend im Fenster des Views anzeigen lassen.Zur Anzeige des textes aus der datei bin ich auch gekommen, doch gibt er mir diesen ohne Formatierung (zeilenumbruch z.b.) und mit lauter füllzeichen aus. Das ist eklig, ich brauche die textausgabe wie sie ursprünglich in der datei auch war.
Meine OpenFile-Funktion in der DOC-Klasse:
static char BASED_CODE szFilter[]="Text Dateien (*.txt)|*.txt||"; // Dialogfeld Datei öffnen CFileDialog* file = new CFileDialog(TRUE, ".txt", m_pathText, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter); CString selectPath = "C:\\Temp"; file->GetOFN().lpstrInitialDir = selectPath; if (file->DoModal() == IDOK) { m_pathText = file->GetPathName(); char str[1000]; CFile textFile( m_pathText, CFile::modeRead ); textFile.Read( str, sizeof(str)); m_strText = str; textFile.Close(); } //m_strText = "Hallo Welt!!"; UpdateAllViews(NULL); delete ldText;
Anschließend habe ich eine selbst angelegte GetString-Methode um mir den inhalt der datei (m_strText) in der VIEW-Klasse ausgeben zu können:
OnDraw Methode in der VIEW-Klasse:
CHuffTextDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: Code zum Zeichnen der systemeigenen Daten hinzufügen pDC->TextOut(10,30,pDoc->GetString());
So bekomme ich zwar den Inhalt der Datei angezeigt, aber alles in einer Zeile ohne Zeilenumbruch und mit dämlichen Füllzeichen "IIIIIIIII" ... *alles in die tonne hau*
Jasmin
(edit: cpp-Tags sind eine äußerst nützliche Erfindung ;))
-
Ersetze mal den Befehl
/ TODO: Code zum Zeichnen der systemeigenen Daten hinzufügen pDC->TextOut(10,30,pDoc->GetString());
mit dem du den Text zeichnest durch den Befehl DrawText
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cdc.3a3a.drawtext.aspBei TextOut bekommst du den String bei den angegebenen Koordinaten gezeichnet. Hier müsstest du den Zeilenumbruch selbst handeln. Mit DrawText kannst du einen Bereich angeben wo der Text gezeichnet werden soll.
Abgesehen davon, wenn es sich nur um Text in dem View handelt und du keine weiteren Ausgaben machen möchtest wäre es sinnvoller ein CEditView oder CRichEditView hierfür zu nutzen.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_ceditview.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_cricheditview.asp
-
Abend,
Danke Guenni, hab das dann nach langen tüfteln hinbekommen.