проверка CEdit без создания подклассов - PullRequest
1 голос
/ 14 мая 2009

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

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

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

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

спасибо ..

Ответы [ 3 ]

1 голос
/ 14 мая 2009

Давным-давно я создал этот . Конечно, это очень устарело, но идеи все еще сохраняются:

alt text

0 голосов
/ 14 мая 2009

Переопределить PreTranslateMessage в вашем диалоге. Если в сообщении указано WM_KEYDOWN, а GetFocus () возвращает HWND вашего элемента управления редактированием, сожмите сообщение, когда вам не нравится клавиша.

0 голосов
/ 14 мая 2009

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

...