Page 4 of 15

Re: Обновление панели задач

Posted: Mon Jun 30, 2008 1:55 am
by Leency
Как-то слишком часто стала перерисовываться новая панель, притом вся.

Re: Обновление панели задач

Posted: Mon Jun 30, 2008 1:48 pm
by barsuk
Это из-за того, что панель отслеживает активное окно (раньше этой возможности не было).
Поскольку при любом рисовании все кнопки теряются, приходится выполнять рисование всего окна и определение всех кнопок.

Re: Обновление панели задач

Posted: Mon Jun 30, 2008 7:25 pm
by Leency
barsuk wrote:Это из-за того, что панель отслеживает активное окно (раньше этой возможности не было).
Поскольку при любом рисовании все кнопки теряются, приходится выполнять рисование всего окна и определение всех кнопок.
А почему бы не перерисовывать две кнопки: соответствующее ставшему неактивным и активированое окно?

Re: Обновление панели задач

Posted: Mon Jun 30, 2008 9:22 pm
by barsuk
Конечно, я бы сделал так, но есть следующая сложность: сейчас код @panel выглядит так:
1) вычисление координат кнопки
2) рисование произвольной кнопки
3) определение кнопки функцией 8.
Даже если я перерисовываю 2 кнопки, остальные надо снова определять(см. функцию 13/1), а значит, вычислять их координаты. Для этого придется либо замусорить код условными конструкциями вроде:
1) вычисление координат кнопки
2) если эту кнопку нужно рисовать, то рисование произвольной кнопки
3) определение кнопки функцией 8.
Либо продублировать код, добавив функцию "просто определение всех кнопок без рисования".
Первый вариант ухудшит скорость работы, а второй - увеличит размер программы. Какой способ мне следует выбрать?

Re: Обновление панели задач

Posted: Mon Jun 30, 2008 9:51 pm
by vectoroc
1-ый. скорость теоретически только увеличится, поскольку перерисовка - более дорогая операция

Re: Обновление панели задач

Posted: Tue Jul 01, 2008 9:05 am
by <Lrz>
я придерживаюсь первого варианта перерисование лишний раз всей панели, не оправданно.

Re: Обновление панели задач

Posted: Tue Jul 01, 2008 4:11 pm
by barsuk
Сделал по первому варианту. Теперь при смене активного окна мелькания нет.
Но, кажется, при запуске или закрытии окон панель рисуется два раза. Так или нет?

Re: Обновление панели задач

Posted: Tue Jul 01, 2008 4:38 pm
by Leency
barsuk wrote:Сделал по первому варианту. Теперь при смене активного окна мелькания нет.
Но, кажется, при запуске или закрытии окон панель рисуется два раза. Так или нет?
Шикарно :wink:
На счёт двух раз не знаю.

Re: Обновление панели задач

Posted: Wed Jul 02, 2008 5:36 pm
by Gluk
"Так или нет?" - спроси у отладчика.. брикпоинт поставь на перерисовке..

Re: Обновление панели задач

Posted: Wed Jul 02, 2008 6:40 pm
by barsuk
Gluk wrote:"Так или нет?" - спроси у отладчика.. брикпоинт поставь на перерисовке..
1 раз перерисовывается. Все в порядке.

Re: Обновление панели задач

Posted: Thu Jul 03, 2008 11:01 pm
by barsuk
Немного оптимизировал код. Выкладываю исходники.

Re: Обновление панели задач

Posted: Fri Jul 04, 2008 6:59 pm
by Leency
Не отображается Alt+Tab, хотя и работает.

Re: Обновление панели задач

Posted: Fri Jul 04, 2008 11:43 pm
by G@K
При запуске приложения панель прорисовывается 2 раза (сначала добавляется кнопка - потом все стирается и рисуется заново )
при закрытии один раз (все стирается и рисуется заново но уже без кнопки)

Re: Обновление панели задач

Posted: Thu Jul 17, 2008 4:43 pm
by winnt
Есть недоделка.. при нажатии кнопки WIN меню открывается.. но если кнопку держать X секунд меню откроется N раз ) наверно запускается в цикле пока нажата клавиша

Re: Обновление панели задач

Posted: Fri Jul 18, 2008 6:10 am
by Albom
Может сделать запуск меню по отпусканию клавиши вин? Тогда можно также сделать Win+D (свернуть/развернуть все окна), Win+R (запуск приложения), Win+E (запуск Eolite)...