Eingaben im Editfeld von MFC

ozzijoe

Grünschnabel
Nur ein kleines Problem, aber ich bin Neuling mit VC++/MFC :

In einem Dialog moechte ich ueber ein Editfeld nur die Eingabe von Dezimalzahlen zulassen. Ich habe im Klassen-Assistenten unter Member-Variablen dem Steuerelement eine float-Variable zugeordnet. Der Dialog funktioniert auch prinzipiell, es lassen sich aber in dem Feld nur ganze Zahlen eingeben (kein Komma bzw. Punkt, Minuszeichen). Was muss ich aendern?

Danke fuer einen Tip!

Joe
 
Ändere ddas float-Member in einen CString (mit dem Assistenten). Dann können auch Minuszeichen und Kommata eingeben werden - allerdings auch Buchstaben usw.
An den float-Wert kommst du beispielweise so dran:
Code:
float fMeinFloat = atof( LPCTSTR( m_strEdit ) );
 
Danke! Hat aber den Nachteil, dass eben Buchstaben mit eingegeben werden koennen. Natuerlich kann ich das im eigenen Programm abfangen, aber da haette sich MS ja auch noch was Freundlicheres einfallen lassen koennen.

Joe
 
Stimmt. Man kann die Buchstaben allerdings auch abfangen. Das ist allerdings ein kleines bischen kniffliger, weil man dazu nicht die Hilfe vom Assistenten bekommt. Und zwar fängt man in der PreTranslateMessage() des Dialogs die Messages für das Edit ab und ignoriert alle Zeichen, die einem nicht passen. Leider ist dann immer noch nicht gewährleistet, dass nur wohlgeformte Zahlen zurchkommen, weil damit Sachen wie "1-1-1-1-1-......" usw. nicht verhindert werden. Das muss man auf andere Weise lösen.
 
Zurück