Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Shake your... cursor


Автор: Phantom 26.8.2003, 22:00
Подскажите как установить курсор (каретку) в нужное мне место в обьекте Edit?

Автор: mr.DUDA 26.8.2003, 22:08
С помощью метода CEdit::SetSel(posStart, posEnd, bNoScroll):
Код
int  nPos = 2;
MyEdit.SetSel(nPos, nPos);

Автор: RAN 26.8.2003, 22:17
Посылается сообщение EM_SETSEL, выделяющая фрагмент текста.
wParam = (WPARAM) (INT) nStart; //стартовая позиция
lParam = (LPARAM) (INT) nEnd; //конечная позиция

Фокус в том, что wParam = lParam = <позиция>; и таким образом ничего не выделяется, а курсор оказывается в заданной позиции.

Автор: mr.DUDA 26.8.2003, 22:23
ЗЫ, именно это я и предлагаю, только на MFC, и без сообщений smile.gif

Автор: RAN 26.8.2003, 22:26
Оффтопик:
mr.DUDA, не раз говорилось о том, что часто ответы пишутся одновременно. Так что мой мог оказаться выше, но ты был первым. My congratulations smile.gif

Автор: Phantom 26.8.2003, 22:27
Вот теперь бы ещё понять как послать сообщение smile.gif

Автор: RAN 26.8.2003, 22:31
HRESULT hr = SendMessage( <дескриптор edit'а>, EM_SETSEL, wParam, lParam);

Если в диалоге, то можно

SendDlgItemMessage( <дескриптор диалога>, <ID Edit'а>, EM_SETSEL, wParam, lParam);

Автор: mr.DUDA 26.8.2003, 22:35
Phantom, если решил делать ч/з сообщения, то так:
Код
int nPos = 2;   // например, курсор перед 3-м символом
SendMessage(hWndEdit, EM_SETSEL, nPos, nPos);

И не забудь поставить фокус ввода на окно Edit'а, если до этого его там не было smile.gif:
Код
SetFocus(hWndEdit);


ЗЫ, теперь я второй biggrin.gif
RAN, ты будешь специалистом по WinAPI, я устраняюсь tounge.gif .


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)