Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |
Это не прокатит если в Edit вставить текст с помощью мыши. 15.09.01 10:54 Число просмотров: 1022
Автор: Glory <Mr. Glory> Статус: Elderman
|
|
Лучше написать обработчик события OnChange, и если позиция курсора нужна в символах, тогда просто узнавать длину строки и все. А если в пикселах - тогда геморой получится, потому что заранее неизвестна гарнитура шрифта в Edit'e.
|
|
<programming>
|
как узнать положение курсора в editbox'е ? 12.09.01 17:17
Автор: ggg <ggg> Статус: Elderman
|
в смысле не мыши, а клавиатуры (мигает который) :)
я не нашёл стандартного средства
может я плохо искал
если есть идеи насчёт нестандартных средств - поделитесь плиз :)
может кому что то в голову прийдёт более разумное чем мне :)
p.s.
я переопределяю класс editbox'а и мне это нужно узнать из моей новой WindowProc
|
 |
как узнать положение курсора в editbox'е ? 15.09.01 04:22
Автор: Степан Статус: Незарегистрированный пользователь
|
> в смысле не мыши, а клавиатуры (мигает который) :) > > я не нашёл стандартного средства > может я плохо искал > > если есть идеи насчёт нестандартных средств - поделитесь > плиз :) > может кому что то в голову прийдёт более разумное чем мне > :) > > p.s. > я переопределяю класс editbox'а и мне это нужно узнать из > моей новой WindowProc
Можно так: на соыбтия onKeyDown цепляешь счетчик. И в зависимости от нажатой кнопки i+1 или i-1. вот и все.
|
 |  |
Это не прокатит если в Edit вставить текст с помощью мыши. 15.09.01 10:54
Автор: Glory <Mr. Glory> Статус: Elderman
|
|
Лучше написать обработчик события OnChange, и если позиция курсора нужна в символах, тогда просто узнавать длину строки и все. А если в пикселах - тогда геморой получится, потому что заранее неизвестна гарнитура шрифта в Edit'e.
|
 |  |  |
всё не так просто :) 16.09.01 17:37
Автор: ggg <ggg> Статус: Elderman
|
я забыл сказать что едитбокс может быть многостроковым :)
тогда ещё возможны вверх вниз pgup pgdn
выход нашёлся, но очень кривой :)
если коротко, то вот так (у меня там ещё дргуие есть задачи и соответствующие варианты) :
1) если одна строка, то удаляю всё до конца (эмулирую VK_DELETE) и потом узнаю длину строки и восстанавливаю прежнее состояние
2) если несколько строк, то эмулирую VK_RIGHT (или VK_LEFT - если курсор на последней строке) и в момент когда меняется номер текущей строки запрашиваю позицию первого символа в этой строке, а потом восстанавливаю прежнее состояние
проблема теперь в том как заставить едитбокс в процессе этих извращений не мигать (когда он перерисовывается)
если кто то подскажет не очень кривой способ - заранее большое спасибо :)
p.s.
с помощью LockWindowUpdate() удалось заставить не мигать скроллбары :)
содержимое окна всё равно иногда мигает
|
 |  |  |  |
А чем em_lineindex,linefromchar,getsel не подошли? 18.09.01 00:20
Автор: Бяша <Biasha> Статус: Member
|
|
|
 |  |  |  |  |
так я их и использую 18.09.01 01:47
Автор: ggg <ggg> Статус: Elderman
|
но ими нельзя напрямую получить положение курсора в тексте
можно только номер текущей строки и номер первого символа в этой строке
а getsel можно использовать только когда есть выделенный блок
|
 |  |  |  |  |  |
странно... Но работает. 18.09.01 04:26
Автор: Бяша <Biasha> Статус: Member
|
> но ими нельзя напрямую получить положение курсора в тексте > можно только номер текущей строки и номер первого символа в > этой строке Так точно.
> а getsel можно использовать только когда есть выделенный > блок странно...
я всегда считал (а значит где-то это прочитал), что, в случае отсутствия выделения, в *wParam запишут позицию курсора в тексте. Но сейчас гляжу в мсдн и ничего подобного там не написано...
Удивительно, неужели это недокументированный прикол...
Должно быть, просто, считается, что всегда какой-то текст выделен, а именно - текст, на котором палочка моргает.
|
 |  |  |  |  |  |  |
#$%@&$#*$ !!! :))) спасибо огромное :)) 18.09.01 10:03
Автор: ggg <ggg> Статус: Elderman
|
|
|
|
|