2009-09-26 2 views
9

Я использую VC9, у меня есть элемент управления CEdit, содержимое которого сбрасывается по умолчанию (скажем - «заполнять») одним нажатием кнопки, а затем я называю SetFocus для элемента управления CEdit. Проблема в том, что курсор мигает в начале текста по умолчанию, и я хочу, чтобы он мигал конец строки по умолчанию.CEdit control MFC, помещая курсор в конец строки после SetWindowText

Как это можно сделать?

ответ

12

Для этого вы можете использовать CEdit::SetSel.

Пример:

CEdit* e = (CEdit*)GetDlgItem(IDC_EDIT1); 
e->SetWindowText("hello world"); 
e->SetFocus(); 
e->SetSel(0,-1); // select all text and move cursor at the end 
e->SetSel(-1); // remove selection 
+0

спасибо, что исправил его :) – 2009-09-26 10:23:52

+0

Может ли кто-нибудь сказать мне, как сделать то же самое для 'CCombobox'? –

+0

@ItbanSaeed, попробуйте метод 'SetEditSel'. –

6

Вы можете использовать CEdit::SetSel для достижения этой цели:

CEdit* e = (CEdit*)GetDlgItem(IDC_EDIT1); 

e->SetWindowText("hello world"); 

// e->SetSel(0,-1); // you don't need this line 

e->SetFocus(); 
e->SetSel(-1); 

Это будет поместить курсор в конец строки.

0

У меня было странное открытие, но все еще имело отношение к нему. Это решение не сработало для меня изначально. Даже после вызова SetSel (-1) мой курсор перемещался в верхнюю часть поля редактирования. Затем я сделал перестановку кода и начал работать.

Изучение состояло в том, что если я обновляю любой другой элемент управления после обновления элемента управления редактированием, курсор переместится в начало поля редактирования. Но если поле редактирования обновляется последним, курсор остается в конце поля редактирования.

Как я был код что-то вроде

  1. Добавить текст для редактирования & обработки вызовов SetSel (-1)
  2. обновления статического управления

И курсор не остался бы в конец. Но когда я изменил его на

  1. обновление статического управления
  2. Добавить текст для редактирования & обработки вызовов SetSel (-1)

Мой курсор отображался в конце окна редактирования.

У меня было это на уме с того дня, когда у меня было это открытие, чтобы обновить базу знаний здесь. Надеюсь, что это поможет случайной душе, чей курсор прыгает в верхней части окна редактирования даже после вызова API.

Смежные вопросы