Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не исчезает каретка? 
V
    Опции темы
torero
Дата 1.6.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



      У меня "вид" на основе класса CView, и я добавил в него вертикальный скроллинг. Вначале я создаю
   каретку-  CreateSolidCaret(1,ydl);  , а при скроллинге делаю так:
                                  
                                        HideCaret();.                                 // прячу каретку.
                                        SetCaretPos(point);                     // ставлю в новую точку.
                                        ShowCaret();                                // делаю каретку видимой.
   
    Но старая каретка не прячется, а остаётся в виде статической чёрточки( не мигает). С новой кареткой
    всё в порядке. Можно сделать так: после HideCaret() закрасить окно, а после ShowCaret() вывести в окно
    информацию,  т.е.  Invalidate();  Но может быть можно, как то проще убрать  старый курсор с  экрана?
    В чём здесь причина. Причём, если положение каретки я меняю, щёлкая мышкой то там, то сям, то
    старая каретка исчезает  полностью, значит проблема связана со скроллингом.
PM MAIL   Вверх
DigitSphinx
Дата 1.6.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

Репутация: нет
Всего: 3



Цитата(torero @  1.6.2007,  17:42 Найти цитируемый пост)
 значит проблема связана со скроллингом.

А может какраз с прорисовкой !
ИМХО Invalidate(); хорошее решение !


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Earnest
Дата 3.6.2007, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Скорее всего, нужно каретку прятать перед выполнением скроллинга и показывать после его завершения.
А для изменения позиции как раз прятать не надо.
Очень похоже, что у тебя там не каретка остается, а след от нее, скопированный при скроллинге.


--------------------
...
PM   Вверх
torero
Дата 5.6.2007, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



      Да, Earnest, это только след. Если это нормально, то я его уберу сам.    Меня это просто  удивило, ведь после мышки и клавиш след не остаётся и  я подумал, может быть у меня дефект в трансляторе.
PM MAIL   Вверх
Earnest
Дата 7.6.2007, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Ну, теоретически, Виндоус вроде должны сами прятать каретку перед скроллингом, так же как мышиный курсор. Но, видимо, этого не делают. Может, не предполагают, что в окне есть каретка. С другой стороны, если химичить с выводом на экран (скроллинг, двойной буфер и прочая), можно "достичь" такого же эффекта и с мышем.
Т.е. иногда остается грязь...  


--------------------
...
PM   Вверх
torero
Дата 8.6.2007, 03:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



     Спасибо, всё понял.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.