2009-05-14 3 views
1

Есть ли способ проверить содержимое поля CEdit без подкласса?проверка CEdit без подкласса

Я хочу проверить недействительные имена файлов в поле CEdit и не позволять пользователю вводить его вообще (нажатие клавиши не должно записываться, если вставить в поле, недопустимые символы должны просто не попасть в редактирование коробка).

Есть ли простой способ сделать это?

На боковой ноте, как мне сделать переменную, привязанную к этому полю? Если я добавлю переменную, которая не является контрольной, будет ли эта переменная всегда содержать то, что находится в элементе управления редактированием?

Спасибо ..

ответ

0

Per http://msdn.microsoft.com/en-us/library/f7yhsd2b(VS.80).aspx, «Если вы хотите обрабатывать сообщения уведомления Windows, посланные средствами редактирования его родитель (обычно класс, производный от CDialog), добавить запись сообщений-карта и сообщения-обработчик член-функция для родительского класса для каждого сообщения. " и "ON_EN_UPDATE. Элемент управления редактирования отображает измененный текст. Отправляется после того, как элемент управления отформатировал текст, но перед тем, как он экранирует текст, чтобы при необходимости изменить размер окна." - поэтому, без подкласса CEdit, вы можете проверять и, возможно, блокировать обновления через окно-сообщение-сообщение/обработчик сообщений в родительском элементе.

+0

Итак, как мне изменить текст? Я пробовал делать GetWindowText (temp), а затем делать такие вещи, как temp.Replace ("*", ""); // temp - это CString, затем используется SetWindowTExt (temp). Это не работает, поскольку я получаю переполнение стека .. Я думаю, что это может быть потому, что когда я делаю SetWindowText, он вызывает уведомление снова и снова ... – krebstar

+0

Да, вы находитесь в рекурсии, поэтому вам просто нужно сломать его (НЕ выполняя SetWindowText), например, в тексте, который вы получаете, не осталось звезд (предположим, что удалением звезд является ваша цель). –

1

Некоторое время назад я создал this. Конечно, это очень датированы, но идеи все еще держат:

alt text

+0

Мне нужен был простой способ :( – krebstar

0

Override PreTranslateMessage в вашем диалоге. Когда mesage WM_KEYDOWN и GetFocus() возвращает HWND вашего элемента управления редактированием, есть сообщение, когда вам не нравится ключ.

 Смежные вопросы

  • Нет связанных вопросов^_^