SetSel на EN_SETFOCUS или WM_SETFOCUS не работает - PullRequest
1 голос
/ 23 декабря 2010

Я столкнулся со следующей мистической вещью в Winapi / MFC, у меня есть поле для редактирования, содержимое которого я должен выбрать на Tab, Lclick, Rclick, Mclick и т. Д.

В некотором родеочевидный путь - обработать сообщение SETFOCUS и вызвать SetSel (0, -1), который должен выделить весь текст.Но это не работает!

Что не так?Я пробовал гуглить, кажется, что все переопределяют Lclilks или обрабатывают SetSel в родительских окнах, но это неправильно с точки зрения инкапсуляции, также ломаются множественные щелчки (пользователь хочет вставить что-то в середине текста) и т. Д.1005 *

Почему мой подход не работает, я пробовал 10 разных способов, пытался перехватить все возможные фокусные сообщения, просматривал информацию на MSDN, но ничего не работает, как ожидалось.

Также мне нужновоссоздать каретку в фокусе, которая также, похоже, не работает.

SETFOCUS сообщение попадает в ловушку в порядке.Если я добавлю __asm int 3, он будет ломаться каждый раз.

Кажется, что проглотил каррет и сетсель.

1 Ответ

3 голосов
/ 23 декабря 2010

Опубликовать редактирование EM_SETSEL при обработке WM_SETFOCUS. Ввод мыши, вероятно, обрабатывается после переключения фокуса. Или опубликовать сообщение пользователя и при получении создать каретку, а затем сделать выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...