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

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Лена89
Сообщения: 51
Зарегистрирован: 20 июн 2007, 09:36

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

Сообщение Лена89 » 04 дек 2007, 14:12

Здравствуйте!

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

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

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

Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

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

Сообщение Romeo » 04 дек 2007, 15:02

EditBox сам выделяет строку когда в него попадает фокус. Это стандартное поведение, можешь поэксперементировать с любыми диалогами Windows. Таким образом, если твой EditBox находится первым в Z-order'е, то выделенный текст - норма, так как система при открытии диалога сама выставляет фокус на первый элемент Z-order'а, и EditBox соответственно реагирует на эту фокусировку выделением всего своего текста. Вполне возможно, что во втором диалоге, о котором ты упоминала, EditBox не является первым в Z-order'е и потому не выделяет свой текст при открытии диалога. Но он всё равно выделит его, если ты доберёшься до этого EditBox'а нажимая Tab, либо кликнешь по нему мышкой.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

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

Сообщение BBB » 04 дек 2007, 15:15

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

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

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

Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

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

Сообщение Romeo » 04 дек 2007, 15:24

Мне кажется не стоит бороться со стандартным поведение элемента управления, куда проще поменять требования, тем более когда они придуманы самим собой :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

Лена89
Сообщения: 51
Зарегистрирован: 20 июн 2007, 09:36

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

Сообщение Лена89 » 05 дек 2007, 15:22

Спасибо, все получилось!

Ответить