Подскажите, пожалуйста, как программно заставить Editbox принимать от юзера только цифры. Статически, в редакторе ресурсов при компоновке диалога можно указать, что контрол только с цифрами работает. Но как то же самое сделать программно в ран-тайме ?
Здравствуйте, Аноним, Вы писали:
А>Подскажите, пожалуйста, как программно заставить Editbox принимать от юзера только цифры. Статически, в редакторе ресурсов при компоновке диалога можно указать, что контрол только с цифрами работает. Но как то же самое сделать программно в ран-тайме ?
Переопределить WM_KEYDOWN и WM_KEYUP и проверять внутри что было нажато. Если не цифра — тогда в клавишу в ноль.
С уважением AWOD.
Re: Edit контрол и работа с цифрами
От:
Аноним
Дата:
26.02.06 10:17
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Подскажите, пожалуйста, как программно заставить Editbox принимать от юзера только цифры. Статически, в редакторе ресурсов при компоновке диалога можно указать, что контрол только с цифрами работает. Но как то же самое сделать программно в ран-тайме ?
SetWindowLong(hEdit, GWL_STYLE, GetWindowLong(hEdit, GWL_STYLE) or ES_NUMBER)
Здравствуйте, Alexey Mukovnin, Вы писали:
AM>Здравствуйте, awod, Вы писали:
A>>Переопределить WM_KEYDOWN и WM_KEYUP и проверять внутри что было нажато. Если не цифра — тогда в клавишу в ноль.
AM>А следом придёт WM_CHAR...
А разве после того как я все коды клавишь занулю, то WM_CHAR не прийдёт с нулём?
Здравствуйте, awod, Вы писали:
A>А разве после того как я все коды клавишь занулю, то WM_CHAR не прийдёт с нулём?
Э-э-э... Да вроде нет WM_CHAR будет поставлено в очередь после вызова TranslateMessage для WM_KEYDOWN (если, конечно, коду в WM_KEYDOWN соответствует какой-либо символ), и придёт в оконную процедуру edit'а с исходным, неизменённым кодом. Независимо от того, как внутри этой процедуры было обработано WM_KEYDOWN.
AM>Э-э-э... Да вроде нет WM_CHAR будет поставлено в очередь после вызова TranslateMessage для WM_KEYDOWN (если, конечно, коду в WM_KEYDOWN соответствует какой-либо символ), и придёт в оконную процедуру edit'а с исходным, неизменённым кодом. Независимо от того, как внутри этой процедуры было обработано WM_KEYDOWN.