Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Определения введёных символов в edit и запись их в listbox-ы

11K
28 октября 2008 года
zuze
84 / / 07.03.2008
Вот код

Код:
// Обработка нажатия клавиши
if (msg.message == WM_KEYDOWN)
{  
   TCHAR szText[MAX_PATH] = {0};
   szText[0] = msg.wParam;

   if (IsCharUpper(msg.wParam))
      _tcscat_s(szText,MAX_PATH,_T("- заглавная буква"));
   else
   if (IsCharLower(msg.wParam))
      _tcscat_s(szText,MAX_PATH,_T("- строчная буква"));
   else
      _tcscat_s(szText,MAX_PATH,_T("- не буква"));

   if (IsCharAlpha(msg.wParam))
      SendDlgItemMessage(hwnd, ID_LISTBOX1, LB_ADDSTRING, 0, (LPARAM)szText);
   else
      SendDlgItemMessage(hwnd, ID_LISTBOX2, LB_ADDSTRING, 0, (LPARAM)szText);
}  
// Конец событий обработки нажатия клавиши


Этот код вставлен в цикл обработки сообщений

И у меня этот код работает не правельно:

1. Как переделать код чтобы он ловил символы, только тогда когда я действительно их ввёл в edit.
(в этом коде символы к сожалению всегда ловятся, даже когда я нажимаю на кнопку, а курсор не стоит в поле ввода)
2. Не правельно обробатываются комбинации. Например символ ^ я ввожу. Он вводится нажатием Shift+6, а в результате в listbox2 записывается не
^ - не буква, а так - не буква
6 - не буква
Как это поправить.
11K
28 октября 2008 года
zuze
84 / / 07.03.2008
Я начал разбиратся с 1 пунктом

Сделал так

Код:
// Поле для ввода строки
case ID_EDIT1:
       if (HIWORD(wparam) == EN_CHANGE)
       {
         TCHAR szText[MAX_PATH] = {0};
          szText[0] = wparam;
          if (IsCharUpper(wparam))
     _tcscat_s(szText,MAX_PATH,_T(" - заглавная буква"));
          else
          if (IsCharLower(wparam))
      _tcscat_s(szText,MAX_PATH,_T(" - строчная буква"));
          else
      _tcscat_s(szText,MAX_PATH,_T(" - не буква"));

    if (IsCharAlpha(wparam))
      SendDlgItemMessage(hwnd, ID_LISTBOX1, LB_ADDSTRING, 0, (LPARAM)szText);
    else
      SendDlgItemMessage(hwnd, ID_LISTBOX2, LB_ADDSTRING, 0, (LPARAM)szText);
       }
break;


Но почему-то при вводе символа 'А' запись такая <здесь в место символа 'А' какой-то непонятный символ> - не буква и заносится в listbox2, а должна занасится в listbox1 и содержание записи должно быть такое А - заглавная буква.
11K
28 октября 2008 года
zuze
84 / / 07.03.2008
Я решил сделать так привязать к кнопке, так всё работает.

Мне не принципиально как должны заполнятся данные во время ввода или после нажатия на кнопку.

Вот часть кода отвечающего за добавление нажатий клавишь в listbox-ы

Код:
// Кнопка "Счёт"
case ID_COUNT1:
     GetDlgItemText(hwnd, ID_EDIT1, s, 256);
     for (int i = 0; i < GetWindowTextLength(GetDlgItem(hwnd,ID_EDIT1)); i++)
     {
    symbols[0] = s;
    if (IsCharUpper(symbols[0]))
       lstrcat(symbols, L" - заглавная буква");
    else
    if (IsCharLower(symbols[0]))
       lstrcat(symbols, L" - строчная буква");
    else
       lstrcat(symbols, L" - не буква");

        if (IsCharAlpha(symbols[0]))
        {
       SendDlgItemMessage(hwnd, ID_LISTBOX1, LB_ADDSTRING, 0, (LPARAM)symbols);
       memset(symbols, 0, sizeof(symbols));
    }
    else
    {
       SendDlgItemMessage(hwnd, ID_LISTBOX2, LB_ADDSTRING, 0, (LPARAM)symbols);
       memset(symbols, 0, sizeof(symbols));
    }
}
break;


Если кто знает и как при вводе текста тоже самое сделать за пояснения буду только рад.

Всё вопрос решён, может конешно не идеально но работает.
342
29 октября 2008 года
Yos
209 / / 21.06.2003
Для разбора возьмем самый первый пример, так как он, на мой взгляд отвечает всем Вашим требованиям, хотя непонятно зачем правдо это надо :)

1. Нужно акромя проверки символа делать еще и проверку хэндла самого edit, и делать все это только если они совпали.
2. Внимательно почитайте про сообщение WM_KEYDOWN, думаю все станет на свои места...
20K
09 мая 2010 года
Avadd
1 / / 12.08.2006
Цитата:
SendDlgItemMessage(hwnd, ID_LISTBOX1, LB_ADDSTRING, 0, (LPARAM)szText);


спасибо за строчку, я уж было отчаялся после 2 часов поиска)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог