|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #1 : 06-07-2007 08:42 » |
|
Проблема заключается в том, что ты хочешь работать со стандартным контроллом нестандартными методами. ON_EN_CHANGE - говорит тебе о том, что техт уже изменён. Если ты пользуешься MFC, то там предусмотрен механизм валидирования вводимых данных - макросы DDX. Для ввода только цифр есть стиль контролла. Короче можно придумать безобидные методы. Посмотри, если не поможет будем дальше разбираться. Я подобную задачу решал, именно перехватывая WM_CHAR.
|
|
« Последнее редактирование: 06-07-2007 08:46 от Джон »
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #3 : 06-07-2007 09:50 » |
|
Tuborg, предлагаю выход проще )
1) Пусть стиль будет Number , а "pt" напиши рядом с контролом в CStatic-контроле.
2 )Или после окончания ввода удали все не цифровые символы и припиши pt
--- 3) а есть ещё более симпатишныйвариант (но сложнее) - делай вариант 2 после каждого введённого символа. Только тут придётся перед удалением нецифровых сначала запоминать положение каретки в строке, а после удаления - пытаться ставить курсор на место. Иначе вводить будет неудобно. И мерцать может при этом способе.
|
|
« Последнее редактирование: 06-07-2007 09:55 от Алексей1153++ »
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #4 : 06-07-2007 09:59 » |
|
Tuborg, однозначно - делай свой контрол на базе CComboBox - себе дешевле будет.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Tuborg
Команда клуба
Offline
|
|
« Ответ #5 : 06-07-2007 10:27 » |
|
методы Алексей1153++ пробовал, пришёл к выводу что надо WM_CHAR отслеживать. Я за свой контрол. Тут вон что отрыл - http://www.netcode.ru/cpp/?artID=1029. Как этим событием грамотно пользоваться? Оно же перехватывает сообщения небось от всего окна? А мне надо понять когда сообщение пришло именно в фокусе ввода моего combo?
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #6 : 06-07-2007 11:23 » |
|
Ну твой же контролл это и есть окно, именно в нём и буделшь ОнЧар отлавливать.
Я тут ща подумал... Прикинул... (Сам-то я такое не делал) Там может быть такая фишка. Тебе надо будет свой СEdit сделать и сказать своему кобобоксу, чтобы он его использовал вместо своего. ХОтя сначала попробуй напрямую.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #7 : 06-07-2007 11:46 » |
|
Джон,Tuborg, я делал с едитом. Вне едита ничего не получится, переопределять надо именно CEdit, тогда выходит на ура. Даже код могу поискать, если что ) А вот заменять у комбы едит своим - не доводилось...
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #8 : 06-07-2007 12:01 » |
|
С едитым я тоже делал. Может с комбиком посложней будет.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #10 : 06-07-2007 18:37 » |
|
вот файлы моего класса CEditNumAndPoint , который произведён от CEdit. У меня он был предназначен для ввода IP , поэтому пропускает только цифры и точки. Причём, если прилетают чары ',' '<' 'Б' 'б' 'ю' 'Ю' '>' '?' '/'
- то они также преобразуются в точку. Комментариев я писал маловато... Но где что находится, думаю разберёшся, код небольшой. Если что - спрашивай сюда
|
|
« Последнее редактирование: 06-07-2007 18:50 от Алексей1153++ »
|
Записан
|
|
|
|
|