View previous topic :: View next topic |
Author |
Message |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Wed Sep 02, 2009 9:48 am Post subject: |
|
|
Пожалуй, во второй ситуации реализация "прямее". А в случае первой каретка в начале любой строки (в том числе реальной, не-WordWrap-овой строки) по нажатию End неудержимо хочет прыгнуть в конец предыдущей строки.
Пробуем:
http://www.megaupload.com/?d=DXNY0N9J |
|
Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Wed Sep 02, 2009 10:40 am Post subject: |
|
|
DV
Почему бы не передать на обработку программе перехваченный WM_KEYDOWN, когда требуется установить курсор в конце строки? |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Wed Sep 02, 2009 11:38 am Post subject: |
|
|
Instructor wrote: | DV
Почему бы не передать на обработку программе перехваченный WM_KEYDOWN, когда требуется установить курсор в конце строки? |
В принципе, результат тот же, только более "прямым" путём
Пробуем:
http://www.megaupload.com/?d=62KNSFOJ |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Wed Sep 02, 2009 12:31 pm Post subject: |
|
|
Есть интересный трабл но всё равно значительно лучше!
Спасибо оргомадное!
Суть трабла: если нажать End, то курсор уходит нормально в конец текущей строки, если 2-й раз нажать End, то курсор уйдёт в конец следующей.
Это так работает только если курсор изначально установлен в предпоследней строке предложения. |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Wed Sep 02, 2009 12:42 pm Post subject: |
|
|
VladSh wrote: | Есть интересный трабл |
Да, есть такое.
Появилась у меня еще одна идейка: в такой ситуации заставить окно редактирования обработать нажатие End, чтобы узнать, изменится позиция каретки (тогда мы, значит, в начале строки) или нет (тогда мы уже в конце строки). И реагировать на это соответственно. Благо, есть команда WM_SETREDRAW, позволяющая запретить перерисовку окна на то время, пока окно будет гонять картеку туда-сюда.
Если получится, можете поставить свечку за моё здравие ) Шутка  |
|
Back to top |
|
 |
Instructor Site Admin
Joined: 06 Jul 2006 Posts: 6250
|
Posted: Wed Sep 02, 2009 1:44 pm Post subject: |
|
|
DV
Code: | SendMessage(hWndEdit, EM_EXLINEFROMCHAR, 0, (LPARAM)-1); | Возвращает номер строки, на которой находится курсор. |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Thu Sep 03, 2009 9:04 am Post subject: |
|
|
Instructor wrote: | Возвращает номер строки, на которой находится курсор. |
Нифига себе! Какой магией я должен был обладать, чтобы узнать об этом??? Ведь сраный MSDN (MuStDieNow) умалчивает про магический параметр -1.
Пробуем:
http://www.megaupload.com/?d=4Q5EDPKP |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Thu Sep 03, 2009 12:55 pm Post subject: |
|
|
Instructor, DV
Нет парни, вы монстры!
Спасибо!!! |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Fri Sep 04, 2009 7:13 am Post subject: |
|
|
VladSh wrote: | Нет парни, вы монстры!  |
Работает без дефектов? |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Fri Sep 04, 2009 8:19 am Post subject: |
|
|
Да, пока дефектов не наблюдаю. Работает отлично!
Если что-то будет, то опять обращусь куда ж я денусь с подводной лодки-то...  |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Fri Sep 04, 2009 11:39 am Post subject: |
|
|
DV
Есть всё-таки небольшой баг. Если выделить текст, начиная от конца строки (даже несколько символов), то End не работает. Приходится сбрасывать выделение клавишами Left или Right, а потом уже жать End. |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Sat Sep 05, 2009 11:07 am Post subject: |
|
|
VladSh wrote: | Есть всё-таки небольшой баг |
Это была оптимизация
Пробуем:
http://ifolder.ru/13860681 |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Sun Sep 06, 2009 2:52 pm Post subject: |
|
|
Теперь выделение сбрасывается, но курсор становится за последним значащим символом, а не в конец строки (когда в конце строки есть пробел); такое поведение, как будто AltSmartEnd не загружен. |
|
Back to top |
|
 |
DV
Joined: 16 Nov 2006 Posts: 1014 Location: Kyiv, Ukraine
|
Posted: Sun Sep 06, 2009 3:50 pm Post subject: |
|
|
VladSh wrote: | Теперь выделение сбрасывается, но курсор становится за последним значащим символом, а не в конец строки (когда в конце строки есть пробел); такое поведение, как будто AltSmartEnd не загружен. |
??? |
|
Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 3076 Location: Киев, Русь
|
Posted: Sun Sep 06, 2009 5:49 pm Post subject: |
|
|
В конце предложения ставим пробел, затем сразу же, с этого пробела, начинаем выделять кусок строки влево, потом жмём End, глядим, куда прыгнет курсор. |
|
Back to top |
|
 |
|