Ограничение редактирования содержимого
Я просканировал все страницы в MSDN, но все еще не нашел ответы на следующие вопросы.
- Минимальная длина символа для элемента управления редактированием.
- Указание диапазона для входных значений в редактировании управления.
- Разрешить только алфавиты в элемент управления редактирования.
- Настройка всплывающей подсказки для управления кнопками.
Подскажите пожалуйста как это сделать в Win32.
1 ответ
Это трудно сделать правильно. Наивный подход справился бы
WM_KEYDOWN
сообщения для перехвата возврата и удаления ключей (VK_BACK
а такжеVK_DELETE
). Тем не менее, вам также нужно обрабатывать пользователя, выбирая часть существующего текста, а затем удаляя его (с помощью возврата или удаления), обрезая его или заменяя его (вводя ключ или вставляя какой-либо другой текст). Я не думаю, что это стоит, и даже если бы вы могли сделать это хорошо, это, вероятно, будет сбивать с толку, когда вы нарушаете все эти нормальные поведения. (Это также может быть невероятно раздражающим. Представьте, что у вас есть некоторая текстовая "полоса" в элементе управления, но вы хотите изменить ее на "baz". Если элемент управления принудительно устанавливает минимальную длину 3, то попытка вернуться на последний выигранный символ Это не сработает. Вам придется сначала изменить его на "barz" и прежде чем удастся удалить символ "r". Тьфу.)Если вашему элементу управления требуется минимальная длина, лучше применять его на отдельном этапе проверки (например, когда пользователь нажимает кнопку ОК или перемещает фокус на другой элемент управления) и отображать соответствующее сообщение об ошибке.
Я не уверен, имеете ли вы в виду, что в элемент управления для редактирования можно вводить только определенные символы или вы хотите ограничить его диапазоном числовых значений. Для первого см. 3.
Если вы хотите ограничить значения определенным числовым диапазоном, я снова рекомендую сделать это во время отдельного шага проверки. В противном случае вы снова можете помешать пользователю вставлять и удалять символы обычным способом. По возможности избегайте использования элемента управления "Редактировать" и используйте элемент управления "Ползунок".
Вы должны были бы создать подкласс элемента управления Edit, обрабатывать
WM_CHAR
сообщения и отклонить символы, которые вы не хотите. Вам дополнительно нужно будет справитьсяWM_PASTE
сообщения и выполнить аналогичные проверки.Это не имеет ничего общего с элементами управления Edit и, вероятно, должно быть отдельным вопросом. Что вы пробовали? Вы читали http://msdn.microsoft.com/en-us/library/bb760250.aspx?