Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3]  Все   Вниз
  Печать  
Автор Тема: Не перерисовывается свой контрол  (Прочитано 51900 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #60 : 14-04-2008 12:55 » 

tom4ik85, поставь несколько контролов рядышком и поводи через них быстро мышом. Комп нагрузи.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
tom4ik85
Участник

ua
Offline Offline
Пол: Мужской

« Ответ #61 : 14-04-2008 13:13 » 

Нагрузил програмкой prime95 и посмотрел - вроде все нормально.
Я по крайней мере не заметил.

* MyCtrl_1.rar (43.41 Кб - загружено 723 раз.)
« Последнее редактирование: 14-04-2008 13:19 от tom4ik85 » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #62 : 14-04-2008 14:18 » 

tom4ik85, капча работает с небольшими по размеру конами хорошо. А вот если элемент (скажем плоттер) будет больше чем, скажем, МС-калькулятор, то: двигаем калькулятор над контролом, активируем капчу контрола и паримся, пытаясь нажать на кнопки калькулятора Отлично
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #63 : 14-04-2008 14:22 » 

tom4ik85, а я глюк нашёл.

ты не просто рисуй контрол, ты прямоугольник исходного контрола то подгоняй тоже!

Смотри, если одну из кнопок сделать размером , скажем, 240*240 , то элемент остаётся зелёный, даже если мышь ушла с "элемента", но ещё находится над исходным контролом
Записан

tom4ik85
Участник

ua
Offline Offline
Пол: Мужской

« Ответ #64 : 14-04-2008 14:46 » 

Это наблюдалось и с другими решениями (таймер и родительское окно).
Там я решал изменяя регион окна отрисовки.
А в этом не получается Жаль
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #65 : 14-04-2008 15:16 » 

tom4ik85, сделай так :
Код:
класс_контрола::OnPaint()
{
   bool bNeedMoveWindow=false;
   CRect abs_r;//абсолютные координаты окна контрола
   GetWindowRect(&abs_r);
   if(abs_r.GetWidth()>нужной_ширины)
   {
       bNeedMoveWindow=true;
       abs_r.right=abs_r.left+нужная_ширина-1;
   }
   if(abs_r.GetHeight()>нужной_высоты)
   {
       bNeedMoveWindow=true;
       abs_r.bottom=abs_r.top+нужная_dscjnf-1;
   }
   if(bNeedMoveWindow)
   {
      ::MapWindowPoints(0,pParent,&abs_r,2);
      MoveWindow(&abs_r,1);
      Invalidate(1);//чуть позднее снова будет вызвано OnPaint, но сюда уже не попадём
   }
}

код не прогонял, возможно с глюком.

Можно разместить и не в OnPaint
Записан

tom4ik85
Участник

ua
Offline Offline
Пол: Мужской

« Ответ #66 : 15-04-2008 10:52 » 

Начал писать статью и не мог не упомянуть про возможность обраротки WM_MOUSELEAVE.
Попробовал, но не заметил чтоб были проблемы с быстрым перемещением. Все нормально отрабатывается.
Может кто-то подскажет или как это увидеть можно или еще какие проблемы с этим способом??
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #67 : 15-04-2008 11:14 » 

Поробуй переместить программно курсор с контрола в точку, заведомо лежащую не на контроле, при помощи
 
SetCursorPos
Записан

tom4ik85
Участник

ua
Offline Offline
Пол: Мужской

« Ответ #68 : 15-04-2008 11:23 » 

нормально отрабатывает
в примере SetCursorPos вызывается по щелчку левой кнопкой мыша

* MyCtrl_1.rar (44.46 Кб - загружено 704 раз.)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #69 : 15-04-2008 11:35 » 

не совсем чистый эксперимент , срабатывает только после отпускания кнопки мыши. А если удерживать - то нифига )

Перемести по таймеру, запусти таймер секунд на 5
Записан

Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #70 : 15-04-2008 11:36 » 

и опять таки разберись с размерами контрола ) Опять "невидимые границы" за пределами рисунка
Записан

Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #71 : 15-04-2008 14:30 » 

Начал писать статью и не мог не упомянуть про возможность обраротки WM_MOUSELEAVE.
Попробовал, но не заметил чтоб были проблемы с быстрым перемещением. Все нормально отрабатывается.
Может кто-то подскажет или как это увидеть можно или еще какие проблемы с этим способом??

Для начала надо описать системы, на которых производилось тестирование. Мой опыт когда это не (всегда) срабатывало:

Я делал такое 5 лет назад в 6ой студии, под w2k+SP (PIII 700 MHz) задача была сделать ресурсонезависимый PropertySheet в стиле начальных настроек проекта студии 2003  (слева captions, справа странички). Расстояние между кнопоками было 0. Просто подсвечивалась вся область. В прицепе рабочий прототип (как был). Мне удавалось раньше заставить его НЕ работать. Ща не получается. Жаль (XP+SP2, PIV  2 GHz).

Смутные сомнения... Попробуй поставить контрол на самый край родительского окна приложения и быстро покинь его. Вроде как в этот момент проблемы были.

зы Вобще-то это должен быть самый "родной" способ. Но (не соврать) тогда не у меня одного с этим проблемы были.

* MyWizard.zip (70.36 Кб - загружено 705 раз.)
« Последнее редактирование: 15-04-2008 14:32 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: 1 2 [3]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines