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


Anmelden zum Antworten