Textausgabe mit unterschiedlicher Größe/Länge !



  • Hallo,

    ich gebe einen Text auf ein Static-Control aus mit einer bestimmten Größe, Farbe etc.... das funzt auch !

    Allerdings bei unterschiedlicher Textlänge gibt es ein Problem:
    Ist der neue Text kürzer als der alte sind im Static immer noch Reste des alten Textes zu sehen.

    Ich glaube man muß den DC vor dem neu Zeichnen löschen oder refreshen....

    Aber wie ?

    Hat jemand eine Idee ?

    levin

    void DMasch1::TextAusgabe(int id, LONG zeichenhoehe, CString member_wert, int x_start, int y_start)
    {
    	CWnd	*border = (CWnd *)GetDlgItem(id);
    	CClientDC	dc2(border);
    	static LOGFONT	lfont;
    	static int		isfirst;
    
    	//Struktur Logfont anlegen
    	if(isfirst == 0 || lfont.lfHeight != zeichenhoehe)
    	{
    		memset(&lfont,0,sizeof(LOGFONT));// Speicher mit "0"belegen
    		lfont.lfHeight	= zeichenhoehe;	// Höhe eines Zeichens
    		lfont.lfWeight	= FW_NORMAL;	// Durchschnittliche Breite
    		lfont.lfCharSet = ANSI_CHARSET;	// Zeichensatz
    		lfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
    		lfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
    		lfont.lfQuality = DEFAULT_QUALITY;
    		lfont.lfPitchAndFamily = FF_DONTCARE;
    		strcpy(lfont.lfFaceName, "Arial");
    
    		m_font.CreateFontIndirect(&lfont);
    
    		isfirst = 1;// font nur einmal anlegen
    
    	}
    
    	//Hintergrundfarbe einstellen
    	dc2.SetBkColor(RGB(212,208,200,));
    
    	// text auf den Bildschirm zaubern
    	dc2.SelectObject(m_font);
    	dc2.TextOut(x_start,y_start,member_wert);
    
    	return;
    
    }
    


  • void DMasch1::TextAusgabe(int id, LONG zeichenhoehe, CString member_wert, int x_start, int y_start)
    {
        CWnd    *border = (CWnd *)GetDlgItem(id);
        CClientDC    dc2(border);
        static LOGFONT    lfont;
        static int        isfirst;
    
        // NEU : einmal das control neu zeichnen
        border->RedrawWindow();
    
        //Struktur Logfont anlegen
        if(isfirst == 0 || lfont.lfHeight != zeichenhoehe)
        {
            memset(&lfont,0,sizeof(LOGFONT));// Speicher mit "0"belegen
            lfont.lfHeight    = zeichenhoehe;    // Höhe eines Zeichens
            lfont.lfWeight    = FW_NORMAL;    // Durchschnittliche Breite
            lfont.lfCharSet = ANSI_CHARSET;    // Zeichensatz
            lfont.lfOutPrecision = OUT_DEFAULT_PRECIS;
            lfont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
            lfont.lfQuality = DEFAULT_QUALITY;
            lfont.lfPitchAndFamily = FF_DONTCARE;
            strcpy(lfont.lfFaceName, "Arial");
    
            m_font.CreateFontIndirect(&lfont);
    
            isfirst = 1;// font nur einmal anlegen
    
        }
    
        //Hintergrundfarbe einstellen
        dc2.SetBkColor(RGB(212,208,200,));
    
        // text auf den Bildschirm zaubern
        dc2.SelectObject(m_font);
        dc2.TextOut(x_start,y_start,member_wert);
    
        return;
    
    }
    

Anmelden zum Antworten