Редактируемый комбинированный список MFC выделяет текст самостоятельно.Не хочу этого - PullRequest
1 голос
/ 25 июля 2011

Я протестировал это в одном из своих приложений MFC для песочницы и подтвердил этот результат.

Если элемент выбран в редактируемом комбинированном ящике, в следующий раз, когда комбинированный ящик получит сообщение о смене окон, он отправит выбранный текстСообщение Windows, которое выделяет весь текст.

Получение и выбор текста окна из редактирования в редактируемом комбинированном списке ненадежны, поэтому мы вместо этого добавляем элемент и выбираем его, чтобы изменить текст комбинированного списка, который реагирует так же, как ипользователь выбирает элемент.В следующий раз, когда все пересчитывается при движении, SetWindowPos вызывает выбор текста для редактирования.

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

Так что единственное, о чем я могу думать, это иметь флаг члена, который переопределяет сообщение seltext и ничего не делает, если флаг установлен, но этоужасное решение.

Любой совет, как предотвратить выделение текста?

1 Ответ

0 голосов
/ 22 июня 2016

Это легко сделать. Вам необходимо создать подкласс окна редактирования, принадлежащего полю со списком, а не саму поле со списком. Как сказал Марк, вы можете получить это, вызвав GetComboBoxInfo и используя поле hwndItem. Тогда вы можете перехватить EM_SETSEL.

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