![]() |
|
|
![]()
|
|
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
У меня "вид" на основе класса CView, и я добавил в него вертикальный скроллинг. Вначале я создаю
каретку- CreateSolidCaret(1,ydl); , а при скроллинге делаю так: HideCaret();. // прячу каретку. SetCaretPos(point); // ставлю в новую точку. ShowCaret(); // делаю каретку видимой. Но старая каретка не прячется, а остаётся в виде статической чёрточки( не мигает). С новой кареткой всё в порядке. Можно сделать так: после HideCaret() закрасить окно, а после ShowCaret() вывести в окно информацию, т.е. Invalidate(); Но может быть можно, как то проще убрать старый курсор с экрана? В чём здесь причина. Причём, если положение каретки я меняю, щёлкая мышкой то там, то сям, то старая каретка исчезает полностью, значит проблема связана со скроллингом. |
|||
|
||||
| DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
А может какраз с прорисовкой ! ИМХО Invalidate(); хорошее решение ! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Скорее всего, нужно каретку прятать перед выполнением скроллинга и показывать после его завершения.
А для изменения позиции как раз прятать не надо. Очень похоже, что у тебя там не каретка остается, а след от нее, скопированный при скроллинге. -------------------- ... |
|||
|
||||
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Да, Earnest, это только след. Если это нормально, то я его уберу сам. Меня это просто удивило, ведь после мышки и клавиш след не остаётся и я подумал, может быть у меня дефект в трансляторе.
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Ну, теоретически, Виндоус вроде должны сами прятать каретку перед скроллингом, так же как мышиный курсор. Но, видимо, этого не делают. Может, не предполагают, что в окне есть каретка. С другой стороны, если химичить с выводом на экран (скроллинг, двойной буфер и прочая), можно "достичь" такого же эффекта и с мышем.
Т.е. иногда остается грязь... -------------------- ... |
|||
|
||||
| torero |
|
|||
|
Бывалый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 177 Регистрация: 1.2.2006 Репутация: нет Всего: нет |
Спасибо, всё понял.
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |