На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual C++ / MFC / WTL (далее Раздела)
1) На Раздел распространяются все Правила Форума.
2) Перед тем, как создать новый топик, убедитесь, что Вы читали Правила создания тем в Разделе.
3) Вопросы, не связанные с программированием (настройки MS Visual Studio, книги, библиотеки и т.д.),
обсуждаются в разделе C/C++: Прочее
4) Вопросы разработки .NET (Windows Form, C++/CLI и т.п.) приложений на Visual C++/C# обсуждаются в разделе .NET.
5) Нарушение Правил может повлечь наказание со стороны модераторов.

Полезные ссылки:
user posted image FAQ Раздела user posted image Обновления для FAQ Раздела user posted image Поиск по Разделу user posted image MSDN Library Online
Модераторы: ElcnU
  
> Запретить повторный ввод символа в EditControl
    Здравствуйте. Не получается запретить повторный ввод "." в EditControl, может кто подскажет, как это реализовать?
    ExpandedWrap disabled
      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);
      }
      Цитата Heckfy @
      Не получается запретить повторный ввод "." в EditControl,

      У Edit-а есть уведомление "EN_CHANGE", которое высылается
      его родительскому окну каждый раз, когда содержимое
      Edit меняется. Причём даже в том случае, когда содержимое Edit
      меняется не только посредством клавиатуры, но и при помощи copy/paste.
      EN_CHANGE
      (Уточни сам, "OnEnChangeEdit1()" это тот самый обработчик или нет)
      Тогда при изменении содержимого Edit:
      1. Считаем строку Edit
      2. Проверим содержимое строки на допустимые символы - в том числе и на несколько точек.
      3. Все недопустимые символы удалим.
      4. Пропишем исправленную строку обратно в Edit
      Сообщение отредактировано: ЫукпШ -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0183 ]   [ 16 queries used ]   [ Generated: 29.03.24, 15:22 GMT ]