CEdit-Box und Fließkommazahlen



  • Hallo

    Gibt es eine einfach Möglichkeit ? In einer CEdit-Box Fließkommazahlen zu erlauben?

    Also so dass "klefjj" nicht erlaubt ist aber "2.9" schon ?

    Ich wüsste jetzt nur Eine Eingenklasse von CEdit abzuleiten und OnChar zu überschrteiben...
    Geht das leichter ?

    Gruß
    Martin



  • Hallo

    Ok achja ich hab das jetzt schnell so gelöst.

    afx_msg void CEditFloat::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
       if ( (nChar >= '0' && nChar <='9') ||  (nChar == '.' && NoPointInText() )|| nChar == VK_BACK)
       {  
           CEdit::OnChar(nChar, nRepCnt, nFlags);
       }
       else
       {
           ShowBalloonTip(_T("Unacceptable Character"),_T("You can only type a number here."),TTI_ERROR);
           MessageBeep(-1);
       }
    }
    
    bool CEditFloat::NoPointInText()
    {
        CString text;
        GetWindowText(text);
    
        if (text.Find('.') == -1)
            return true;
        else
            return false;
    }
    

    Dabei ist mir aufgefallen dass die CEdit-box die Fehlermeldung nicht lokalisiert.
    Also hab ichs fürs erste gleich gemacht.

    Das was mich halt etwas stört an der Lösung ist:
    Dass es ja auf einem anderem System mit andere Sprache vielleicht nicht das "." als Trennzeichen gilt.
    Kann man das irgendwie auslesen ?


Log in to reply