Страница 1 из 1

Выделение строки

Добавлено: 04 дек 2007, 14:12
Лена89
Здравствуйте!

Строка в EditBox выводится выделенная (высвеченная), а этого не нужно. Где-то, что-то сделала, в настройках, а сейчас не могу «отыграть назад». Может, кто подскажет, как сделать, что бы строка выводилась обычной (невыделенной). :)
Работаю в Visual С++ 6.0.

PS В этом же приложении, просто в др. диалоговом окне в EditBox строка выводится как надо.

Всего наилучшего!

Re: Выделение строки

Добавлено: 04 дек 2007, 15:02
Romeo
EditBox сам выделяет строку когда в него попадает фокус. Это стандартное поведение, можешь поэксперементировать с любыми диалогами Windows. Таким образом, если твой EditBox находится первым в Z-order'е, то выделенный текст - норма, так как система при открытии диалога сама выставляет фокус на первый элемент Z-order'а, и EditBox соответственно реагирует на эту фокусировку выделением всего своего текста. Вполне возможно, что во втором диалоге, о котором ты упоминала, EditBox не является первым в Z-order'е и потому не выделяет свой текст при открытии диалога. Но он всё равно выделит его, если ты доберёшься до этого EditBox'а нажимая Tab, либо кликнешь по нему мышкой.

Re: Выделение строки

Добавлено: 04 дек 2007, 15:15
BBB
По моим представлениям, если надо убрать выделение в момент перехода на данный EditBox, то возможно ловить этот момент получения EditBox-ом фокуса и программно "сбивать" выделение. Хотя, м/б визуально на какое-то мгновение будет заметно "мигание" - очень кратоквременное выделение.

Установка нужного выделения (в т.ч. снятие выделения) делается через
SendMessage (hWnd, EM_SETSEL, .......)

или, в случае использования MFC, через
CEdit::SetSel (...)

Re: Выделение строки

Добавлено: 04 дек 2007, 15:24
Romeo
Мне кажется не стоит бороться со стандартным поведение элемента управления, куда проще поменять требования, тем более когда они придуманы самим собой :)

Re: Выделение строки

Добавлено: 05 дек 2007, 15:22
Лена89
Спасибо, все получилось!