| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > EDITTEXT Разрешить только ввод float |
| Автор: Riddik 24.5.2013, 12:23 | ||
| Как лучше всего реализовать ввод только float значений - т.е. цифр и точки? EDITTEXT в диалоговом окне, в ф-ии обработчике жду уведомления EN_CHANGE, там смотрю введённые значения:
Жутко коряво. Есть ли способ удалять неверный символ по-другому? Да ешё SetDlgItemTextW снова шлёт уведомления и при каждом вводе два раза обработка идёт. Не эффективно. |
| Автор: GremlinProg 24.5.2013, 14:27 |
Можно подать b в функцию _input по шаблону "%f" и смотреть, на каком символе закончился разбор b: если FILE::_ptr указывает на последний символ ( '\0' ), то все норм., просто число недописано, в противном случае - FILE::_ptr будет указывать на неверный символ. Но я бы не рекомендовал делать посимвольную проверку уже просто потому, что пользователю может потребоваться сформировать float в экспоненциальной форме - это с буквой 'E' и знаком показателя после нее. Не уверен, что такая запись пройдет посимвольную проверку. Т.е. вполне возможно, что например значение 0.345E-16 пользователь вести уже не сможет. Делайте разбор значения по нажатию "Enter". |
| Автор: Riddik 24.5.2013, 15:00 |
| Спасибо) |