Автоматический выбор текста CMFCPropertyGridProperty и CEdit - PullRequest
0 голосов
/ 12 января 2012

То, что я прочитал здесь (Когда пользователь выбирает элемент управления для редактирования, .... и выделяет его текст с помощью обратного видео), и если я правильно понимаю, CEdit должен выделить (надеюсь, этотак же, как выберите) текст, когда я нажимаю на него.

Я использую CMFCPropertyGridCtrl с CMFCPropertyGridProperty.Но когда я нажимаю на сетку (одно значение свойства), она ничего не выбирает.

Что я обнаружил: Свойство внутренне создает CEdit, который предназначен для ручного редактирования значения свойства.Он создан, его шрифт установлен и т. Д. Затем вызывается SetFocus и после этого UpdateWindow - это перерисовывает окно редактирования и устанавливает курсор перед первым символом.После этого снова вызывается щелчок мышью, чтобы щелкнуть окно редактирования - это кажется правильным.Но текст не выделен.

Я также попытался создать свой собственный класс свойств, производный от CMFCPropertyGridProperty.Я назвал SetSel после всего этого.Он действительно выделяет мой текст, но затем отменяет его выбор (в следующей перерисовке).Я также достиг того, что после перерисовки был выбран только текст от начала до щелчка мыши (когда я щелкал после 4-го символа, были выбраны только первые 4 символа).

Мои вопросы:

СледуетДействительно ли автоматически выбирать текст после первого щелчка мышью?(есть ли у вас ресурсы?)

Разве вы не знаете, почему это не работает в CMFCPropertyGridProperty?

CMFCPropertyGridCtrl и CMFCPropertyGridProperty можно найти в afxpropertygridctrl.h / .cppв каталоге исходного кода MFC.

1 Ответ

0 голосов
/ 13 января 2012

Итак, что я наконец-то узнал:

CEdit, вероятно, не выделяет текст после нажатия на него. Это должно быть сделано вручную, например, с помощью функции SetSel.

Но в CMFCPropertyGridCtrl, если вы щелкнете, он передается в CMFCPropertyGridProperty и повторяется щелчок. Так что, если я использовал SetSel, он отменяет выбор текста. Поэтому мне пришлось написать свой собственный класс, который наследует CMFCPropertyGridProperty и пропускает этот шаг (повторный щелчок). Для этого достаточно SetFocus и SetSel (который также устанавливает курсор на окно CEdit).

...