CRichEditCtrl zeigt keinen Text an



  • Ich möchte in einem CRichtEditCtrl Daten der seriellen Schnittstelle anzeigen.
    Dazu hab ich folgenden Code geschrieben.

    LRESULT CChildView::OnSerialMsg (WPARAM wParam, LPARAM /*lParam*/)
    {
    
    		// Leeren Buffer erzeugen
    		DWORD dwRead;
    		char szData[101];
    		const int nBuflen = sizeof(szData)-1;
    
    		// Daten von serieller Schnittstelle lesen
    		do
    		{
    			m_serial.Read(szData,nBuflen,&dwRead);
    			szData[dwRead] = '\0';
    			DisplayData(szData);
    
    		} while (dwRead == nBuflen);
    
    	return 0;
    }
    
    void CChildView::DisplayData (LPCTSTR pszData)
    {
    
    	// Add the event to the edit control
    	m_wndEdit.SetSel((m_wndEdit.GetTextLength()-1), -1);
    	m_wndEdit.ReplaceSel(pszData);
    }
    

    Der Text wird von der seriellen Schnittstelle richtig gelesen und an DisplayData übergeben.
    Leider erscheint der Text nicht in dem RichEditCtrl.
    Entweder es wird nicht richtig eingefügt oder bei meiner Erstellung des RichEdit Ctrl geht etwas schief.
    Erstellt wird es in der OnCreate-Funktion des CChildViews mithilfe von

    VERIFY(m_wndEdit.Create(WS_VISIBLE|WS_CHILD|WS_BORDER|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_LEFT|ES_MULTILINE,CRect(0,0,0,0),this,0));
    

    Diesen Aufruf hab ich aus einem Beispiel dort wird mit einer abgeleiteten Klasse von CRichEditCtrl gearbeitet. Ist die Erstellung so richtig? Wenn es sich über das gesamte CChildView erstrecken soll?

    Die Größe wird in der OnSize noch angepasst

    void CChildView::OnSize(UINT nType, int cx, int cy) 
    {
    	CWnd::OnSize(nType, cx, cy);
    
    	// RichEditCtrl an Fenstergröße anpassen
    	m_wndEdit.SetWindowPos(0,0,0,cx,cy,SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER);
    }
    


  • ich mach das immer so:

    void CTTMPAssistantDlg::AddLogText( const CString& text )
    { 
    	if( text.IsEmpty() )
    		return;
    
    	int len = m_edit.GetWindowTextLength();
        m_edit.SetSel( len, len );
    	m_edit.ReplaceSel( text );
    

    das funzt auch...



  • oh mann, niemals auf den Assistenten verlassen ^^

    ON_WM_SIZE()

    wurde in der MessageMap nicht deklariert


Anmelden zum Antworten