Мы можем поэкспериментировать с этой строкой (вставить ее в Блокнот или что-то в этом роде):
a!b@c#d$e%f^g&h*i(j)k-l=m_n+o{p}q[r]s|t\u`v~w/x<y>z?0.1;2'3:4"5
Я нашел это !
, $
, %
, (
, -
, +
, {
, }
, [
, |
, \
, и ?
все они имеют некоторый эффект на разрыв строки или кластеризацию символов. Как ни странно, существует несколько типов влияния - они различаются по тому, могут ли они ломать линии и останавливается ли Control+Arrow до или после. (И упущение ]
не случайно. Открывающая скобка обладает особыми свойствами, но закрывающей не так уж и много.)
Каждый элемент редактирования в Windows имеет процедуру разрыва слов. Такая процедура отвечает за:
- Определение поведения данного персонажа в отношении переноса слов
- Определение, является ли символ разделителем
- Нахождение начала следующего / предыдущего слова / кластера относительно текущей позиции
Большинство приложений используют Windows по умолчанию, которая, насколько я могу судить, не настраивается. Заданную процедуру редактирования или процедуру преобразования слов в элементе управления расширенным текстом можно установить с помощью сообщения окна EM_SETWORDBREAKPROC
. Обычно это делается приложением, которому принадлежит элемент управления, поскольку адрес процедуры будет гарантированно действителен только в этом процессе. Программно, вы можете создать поток внутри процесса целевого приложения, который устанавливает пользовательскую процедуру прерывания для ваших целевых элементов управления, но, похоже, нет менее хитрого способа.