| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > работа с кареткой |
| Автор: yngwie19 19.4.2009, 17:38 |
| Скажите как правильно использовать DestroyCaret() ? Когда вызываю эту функцию то GetLasError возвращает ("Отказано в доступе") |
| Автор: 586 19.4.2009, 20:00 |
| Что возвращает DestroyCaret - TRUE или FALSE? Функция работает? Вызывать GetLastError следует тогда, когда функция возвращает FALSE. |
| Автор: yngwie19 19.4.2009, 21:55 |
| 586, функция возвращает FALSE, может потаму что Я не вызвал функцию CreateCaret() ? поэтому не работает . ? |
| Автор: 586 19.4.2009, 22:25 |
| Где эта функция вызывается и для чего? |
| Автор: yngwie19 19.4.2009, 22:33 | ||
| 586, CreateCaret() вызывать не нужно? Ну вот посмотри ээто твой пример который ты мне давал в нем эта функция в обработке WM_CREATE:
|
| Автор: 586 19.4.2009, 22:45 |
Это для того, чтобы скрыть каретку RichEdit'а? В момент вызова hMainWnd WM_CREATE, RichEdit ещё не создан. А вообще, для cкрытия кареток лучше использовать функцию HideCaret. |
| Автор: GremlinProg 19.4.2009, 22:57 |
нет, 586, не пройдет пара BeginPaint-EndPaint уже ее скрывает и показывает вновь, нужно удалять, причем удалять после установки фокуса в RichEdit либо не удалять, но тогда и предотврящать ее создание, но это я уже повторяюсь либо вообще не показывать RichEdit, а рисовать только его содержимое в основном окне (кстати, по моему, выделение в этом случае уже не будет отображаться, даже если оно и существует, ну и соответственно сенсорики тоже не будет) последнее, по-моему - наименее кривой способ, относительно остальных |
| Автор: yngwie19 19.4.2009, 23:05 |
| GremlinProg, а сообщение о нажатой левой кнопки мыши не вернет курсор обратно? |
| Автор: GremlinProg 19.4.2009, 23:20 | ||
ты о чем? куда обратно? |
| Автор: yngwie19 19.4.2009, 23:39 |
| GremlinProg, ну если мы его уничтожим, что при нажатии левой кнопки мыши он не вернется в RichEdit? |
| Автор: GremlinProg 19.4.2009, 23:44 |
| если уничтожать, то уничтожать свякий раз при установке фокуса, т.е. на событие WM_SETFOCUS, смотри свои темы, я же об этом писал |
| Автор: yngwie19 20.4.2009, 08:18 |
| GremlinProg, при обработке WM_SETFOCUS GetLastError() акже возвращает "Отказано в доступе" |
| Автор: GremlinProg 20.4.2009, 11:34 | ||
процедура окна RichEdit'а:
|
| Автор: yngwie19 20.4.2009, 18:43 |
а это зачем, что это вообще за функция |
| Автор: GremlinProg 20.4.2009, 19:24 |
| это подсказка тебе, что код актуален только при использовании субклассинга (любого субклассинга) |
| Автор: yngwie19 20.4.2009, 22:15 |
| GremlinProg, боюсь даже спросить что такое субклассинг |
| Автор: yngwie19 20.5.2009, 12:23 | ||
GremlinProg, ну вот вроде разобрался с субклассингом, но мочему-то все равно курсор не исчезает.
|
| Автор: GremlinProg 20.5.2009, 12:29 | ||
попробуй просто не вызывать процедуру окна предка на WM_SETFOCUS:
|
| Автор: yngwie19 20.5.2009, 12:51 |
| все равно не исчезает. Попробуй пожалуйста сам. Код выше рабочий |
| Автор: Andrey44 20.5.2009, 13:01 | ||
А может попробовать на WM_SETFOCUS реагировать смещением каретки за пределы контрола?
? |
| Автор: GremlinProg 20.5.2009, 13:34 | ||
| кстати, yngwie19, сейчас вот подумал может ты имеешь ввиду еще и курсор в виде каретки? так им так же можно спокойно управлять:
Добавлено через 4 минуты и 50 секунд тут я смешал понятия, имелась ввиду конечно каретка, а не курсор курсора касается только последний пост |
| Автор: mes 20.5.2009, 13:40 |
GremlinProg, боюсь ошибиться, но всегда полагал, что каретка это маркер позиции при редактировании в текстовом контроле, а по коду изменяете "мышкин" маркер. |
| Автор: GremlinProg 20.5.2009, 13:46 | ||
да, обычно так и полагают, когда говорят о текстовых редакторах, видимо поэтому я и не сразу обратил внимание замечание в посте yngwie19:
в общем случае, курсор и каретка - это не одно и то же |
| Автор: yngwie19 20.5.2009, 14:21 |
| вообщем что-то у меня не получается, и Я сам запутался в этих понятиях. Мне нужно удалить вот это: http://ipicture.ru/Gallery/Viewfull/19186510.html |
| Автор: GremlinProg 20.5.2009, 14:55 | ||
| в приложении exe а здесь код, проекта, логика по-прежнему не изменилась: перекрываем WM_SETFOCUS
ресурс только зашит прямо в exe, чтобы не таскать за ним rtf'ы |
| Автор: yngwie19 20.5.2009, 15:15 |
| GremlinProg, Спасибо тебе большое, у меня все получилось завтра +1 поставлю, т.к сегодня уже нельзя. А скажи пожалуйста как сделать чтобы когда мышка проходит наж этим субклассированным окном, то она принимала бы другой облик ну например в виде стрелки. |
| Автор: GremlinProg 20.5.2009, 15:19 | ||
уже сказал: http://forum.vingrad.ru/index.php?showtopic=256173&view=findpost&p=1873249 |
| Автор: yngwie19 20.5.2009, 15:43 |
| Большое тебе спасибо!!!! |
| Автор: yngwie19 22.5.2009, 09:22 | ||
Кстати А почему у меня вот так не меняется?
Мне нужно это окно заново перерисовать.? |
| Автор: GremlinProg 22.5.2009, 10:25 |
richedit, как и edit, не использует курсор класса он меняет его в процедуре окна: http://forum.vingrad.ru/index.php?showtopic=256173&view=findpost&p=1873249 |