Schriftbreite errechnen



  • moin,
    ich hab eine CListBox in die ich daten per AddString reinfülle.
    Soweit so gut nur kann es sein das der Text länger ist als die ListBox breit ist.
    Wie errechne ich jetzt (möglichst unkompliziert) das Zeichen welches (und folgende) nicht mehr in die Zeile passt und per AddString in die nächste Zeile muss.

    Für Beispiele mit Quellcode bin ich immer Dankbar 😃

    mfg





  • so, ich hab mir das mal angeschaut und jetzt folgendes gemacht

    HDC hdc;
    hdc = GetDC(this);
    CString s = "hallo";
    SIZE size;
    GetTextExtentPoint32(hdc, s, s.GetLength(), &size);
    s.Format("%d", size.cx);
    MessageBox(s);
    

    wenn ich das ganze kompilier, sagt er mir GetDC akzeptiert keine 1 Parameter...
    in der MSDN hab ich herraus gefunden es gibt mehrere GetDC formen gibt. wenn ich 'this' aus weglasse, sagt er mir das 'class CDC *' nicht in 'struct HDC' konvertiert werden kann.
    ich kenn mich mit zeigern nicht (alzugut) aus. kann mir jemand sagen, wie ich das problem löse kann?

    so hab jetzt mein problem enger eingrenzen können, wer kann mir sagen wie ich CWnd in CDC bzw. HDC umwandel. 😕

    danke im vorraus

    [ Dieser Beitrag wurde am 12.06.2003 um 18:05 Uhr von Emperor_L0ser editiert. ]



  • ich hab das ganze jetzt umgebaut und es sieht so aus

    CDC* dc;
    dc = m_clbList.GetDC();  
    CString s = "hallo";
    SIZE size;
    size = dc->GetOutputTextExtent(s);
    m_clbList.AddString(s);
    s.Format("%d", size.cx);
    MessageBox(s);
    

    Es sollte jetzt nach meinen wünschen die breite in pixel von "hallo" in der messagebox erscheinen, tut es aber nicht. stattdessen steh die breite des textes wenn ich "hallo" per TextOut(); ausgeben würde.


Anmelden zum Antworten