Länge eines Strings



  • Hallo,

    ich will die Länge eines CString (in Pixel) erfragen. Am besten in Verbindung mit einem CFont-Objekt (also wieviele Pixel man braucht, um diesen CString mit der angegebenen Schrift darzustellen). Weiß jemand wie sowas geht? Die Höhe eines Zeichens davon könnte ich auch noch gebrauchen 😉

    Auf jeden Fall vielen Dank im Voraus 🙂



  • Mhh, eventuell gehts so:

    mit CFont::GetLogFont( LOGFONT * pLogFont ) die LOGFONT Struct des selectierten Fonts abholen, in pLogFont->lfWidth sollte die durchschnittliche Breite eines Buchstaben stehen. Danach sollte

    CString::GetLength() * pLogFont->lfWidth

    Die gesuchte Breite des Strings ergeben.

    Hab sowas selbst noch nicht versucht, aber das ist so das was mir nach kurzem stöbern in der MSDN so spontan einfällt.



  • Hi,

    danke für deine Antwort 🙂

    das Problem ist aber, dass ich auf keinen Fall die durchschnittliche Breite will (ein i ist ja weniger breit als ein m oder so...) sondern eben die exakte Länge...



  • Hi!
    Versuch mal so:

    CDC* pDC = GetDC();
    CSize csSize = pDC->GetTextExtent(strDeinString);
    int iStringWidth = csSize.cx;
    


  • Genau das, was ich brauche 🙂 Vielen Dank.



  • Du solltest aber vorher noch den CFont in den CDC selektieren wenn du das mit verschiedenen Fonts machen willst...


Log in to reply