C++ SetFont() Fehler ?



  • Was ist hier falsch?

    void CMaxiFontViewerDlg::SetFont()
    {
    CRect rRect;
    int iHeight;
    if (m_Name !="")
    {
    m_ctlText.GetWindowRect(&rRect);
    iHeight = rRect.top - rRect.bottom;
    if (iHeight < 0)
    iHeight = 0- - iHeight;
    m_fSamp.Detach();
    m_fSamp.CreateFont((iHeight - 5), 0, 0, 0, FW_NORMAL,
    0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,
    CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PRECIS |
    FF_DONTCARE, m_Name);
    m_ctlText.SetFont(&m_fSamp);
    }
    }



  • Daran wird es wohl kaum liegen, aber dieses

    if (iHeight < 0)
        iHeight = 0- - iHeight;
    

    bewirkt doch eigentlich überhaupt nichts, oder?

    Denn das bedeutet ja das gleiche wie iHeight = 0 + iHeight, also iHeight = iHeight.

    Eddie.



  • Also erstens heißt ees nicht height = 0 - - height, und übrigens auch nicht height = 0- height. Einfach ist doch height = -height, oder height *= -1, oder sowas. Ist einfach küzer. Außerdem ist es auch gar nicht unbeding tnötig, es hier zu benutzen. DA die Koordinaten Standardmäßig von oben nach unten ansteigen (oben ist der y-Wert 0), wäre es sinnvoler zu rechnen :
    iHeight = rRect.bottom - rRect.top;
    und nicht andersherum. Und dann dürte man auch keine negativen ERgebnisse kriegen.



  • Hallo,
    vergleiche mal damit:

    m_fMyFont.Detach();
    m_fMyFont.CreateFont(20,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,
    OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,
    DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,
    "MS Sans Serif");
    ------------------------------------
    m_ctlAuswahl.SetFont(&m_fWahlFont);
    m_strAuswahl = "Der Text";
    UpdateData(FALSE);

    MfG
    Daniel



  • @<Daniel> das habe ich gebraucht! thx


Anmelden zum Antworten