Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.236.100.210] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте. Не получается запретить повторный ввод "." в EditControl, может кто подскажет, как это реализовать?
void COPPDlg::OnEnChangeEdit1() { UpdateData(TRUE); //считать из EditControl d1.Replace(',', '.'); //замена запятой на точку d=atof(_bstr_t((LPCTSTR)d1)); //присвоение переменной значения из EditControl } BOOL COPPDlg::PreTranslateMessage(MSG* pMsg) { switch (pMsg->message) { case WM_CHAR: if ((pMsg->wParam != 48) && (pMsg->wParam != 49) && (pMsg->wParam != 50)//запрет ввода символов, кроме цифр, точки и запятой && (pMsg->wParam != 51) && (pMsg->wParam != 52) && (pMsg->wParam != 53) && (pMsg->wParam != 54) && (pMsg->wParam != 55) && (pMsg->wParam != 56) && (pMsg->wParam != 57) && (pMsg->wParam != VK_OEM_PERIOD) && (pMsg->wParam != VK_OEM_COMMA) && (pMsg->wParam != '.') && (pMsg->wParam != ',') && (pMsg->wParam != 8) && (pMsg->wParam != 39) && (pMsg->wParam != 37)) { return(1); } } return CDialogEx::PreTranslateMessage(pMsg); } |
Сообщ.
#2
,
|
|
|
Цитата Heckfy @ Не получается запретить повторный ввод "." в EditControl, У Edit-а есть уведомление "EN_CHANGE", которое высылается его родительскому окну каждый раз, когда содержимое Edit меняется. Причём даже в том случае, когда содержимое Edit меняется не только посредством клавиатуры, но и при помощи copy/paste. EN_CHANGE (Уточни сам, "OnEnChangeEdit1()" это тот самый обработчик или нет) Тогда при изменении содержимого Edit: 1. Считаем строку Edit 2. Проверим содержимое строки на допустимые символы - в том числе и на несколько точек. 3. Все недопустимые символы удалим. 4. Пропишем исправленную строку обратно в Edit |