Wird das .View richtig upgedated ?
-
Hi Leute,
ich hab ne kleine MFC (SDI) Anwendung geschrieben die eine Textdatei einließt und auf dem RTFVilew ausgibt, später soll mit den Daten natürlich noch einiges gemacht werden. Das hat alles funktioniert !
Um die Trennung von Doc und View einzuhalten habe ich die Routine züm öffnen der Datei ins Doc gepackt, dort wird auch der Inhalt der Textdatei in die öffentliche Membervariable CStreing cstrAusgame gepackt. Auf den Inhalt dieser Variablen möchte ich nun aus dem View zugreifen um ihn (den Inhalt) auf meinem RTF darzustellen, das funktioniert leider nicht. Ich bekomme zwar keine Fehlermeldung aber nach dem Öffnen der txt Datei passiert garnichts !
Hier ist der Code aus dem View:void CSDI_Weg_durchs_LabyrinthView::OnInitialUpdate() { CSDI_Weg_durchs_LabyrinthDoc *pDoc = GetDocument (); CRichEditCtrl& rCtrl = GetRichEditCtrl(); // Pointer auf das RichEditControl erstellen um dessen Funktionen zu nutzen CHARFORMAT cfm; // Struktur die die Aktionen der Selektion enthält CFont myFont; myFont.CreatePointFont(150,"Terminal",NULL); // Font erstellen rCtrl.SetFont(&myFont); rCtrl.ReplaceSel(pDoc->cstrAusgabe); // rCtrl.SetSel(0,100); cfm.cbSize = sizeof(CHARFORMAT); // Funktionen cfm.dwMask = CFM_BOLD; // des RichEditCONTROLS zur cfm.dwEffects = CFM_BOLD; // formatierten Darstellung benutzen rCtrl.SetSelectionCharFormat (cfm); // Aktionen der Selektion ausführen // Druckränder festlegen (720 Twips = 1/2 Zoll). SetMargins(CRect(720, 720, 720, 720)); }So sieht doe Funktion im Doc aus:
void CSDI_Weg_durchs_LabyrinthDoc::OnFileOpen() { char strFilter[] = { "txt Files (*.txt)|*.txt|All Files (*.*)|*.*||" }; // Filterstring für den Windows Dialog Datei - Öffnen CFileDialog m_File(TRUE, ".txt", NULL, 0, strFilter); // Objekt der Klasse CFileDialog erstellen CFile file; // Objekt der Klasse CFile erstellen TCHAR *str = NULL; CString m_strDateiname; if(m_File.DoModal()==IDOK) // Dialogfeld öffnen und Ergebnis auffangen { m_strDateiname = m_File.GetFileName(); // Gewählten Dateinamen ermitteln file.Open(m_File.GetFileName(), file.modeRead); // Ausgewählte Datei öffnen str = new TCHAR[(file.GetLength())+1]; // TChar Array auf Heap schieben damit es dynamisch wird str[(file.GetLength())] = '\0'; // TChar Array mit 0 terminieren file.Read(str, file.GetLength()); // File lesen und Array str mit Werten füllen cstrAusgabe = str; // Werte von TChar Array in CString "cstrAusgabe" schreiben file.Close(); // File wieder schließen delete[]str; } UpdateAllViews (NULL); }In der Headerdatei des Docs steht nur:
// Attribute public: CString cstrAusgabe;Liegt es daran dass ich die Daten irgendwie falsch update ?
Wäre klasse wenn Ihr mir helfen könnet !
Danke fur eure Mühe

ShadowEater
-
Ich habs gefunden!
Ich packs in OnNewDocument() ! Dann klappts!Ist das korrekt und üblich auch die laderoutine füt die txt-Datei in die OnNewDocument zu packen ?

ShadowEater
-
Nur mal so nebenbei
Stellt sich nur die Frage, warum du erst die3 testdatei in ein TCHAR Array lädst, um es dann in einen CString zu kopieren. warum benutzt du nicht gleich den CString zum laden?
Gruß Matthias