Проверка текста редактируемого элемента управления, когда пользователь вводит MFC

Вопрос / Проблема: У меня есть элемент управления редактирования (текстовое поле), в который пользователь вводит имя пользователя. Я пытаюсь сравнить введенное имя пользователя с теми, которые перечислены в моем элементе управления списком. Если имя пользователя соответствует, текст моей кнопки должен измениться с Create User в Update User,

Моя проблема в том, чтобы найти правильное событие / время для сравнения строк, не создавая бесконечный цикл.

Что я пробовал: Я пытался использовать события управления редактированием EN_CHANGE а также EN_UPDATE, Оба эти события вызывают исключение переполнения стека или бесконечный цикл. Я думал, что одно из этих событий будет вызываться каждый раз, когда что-то набирается, или в моем элементе управления редактирования используется клавиша возврата.

В моем EN_CHANGE / EN_UPDATE Событие, я сравниваю строки имени пользователя и устанавливаю текст кнопки. В любом случае это называется бесконечным числом раз:

void Users::OnEnUpdateLoginName()  //EN_UPDATE Event
{
bool match = false;

//Compare the edit control text with each List Control text.
for(int i = 0; i<m_UserList.GetItemCount(); i++)
{
if(strcmp(m_UserList.GetItemText(i,0),m_loginName)==0)
match = true;
}

//If the usernames match, change the button's text to "Update User"if(match)
{
CWnd *currentSelection = GetDlgItem(TXTC_LOGIN_NAME);
currentSelection->SetWindowTextA("Update User");
}
else
{
CWnd *currentSelection = GetDlgItem(TXTC_LOGIN_NAME);
currentSelection->SetWindowTextA("Create User");
}
}

пример редактирования.

Если текст красного цвета совпадает, измените текст кнопки, выделенный синим цветом.

Должен ли я использовать другое событие для проверки строки в режиме реального времени при вводе пользователем?

1

Решение

У моего кода было две проблемы. Мне нужно было использовать UpdateData, так что данные для всех моих диалоговых элементов управления будут текущими. Я также обновлял неправильные переменные. Спасибо @rrirower

1

Другие решения


По вопросам рекламы [email protected]