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

...
  • Это из-за того, что панель отслеживает активное окно (раньше этой возможности не было).
    Поскольку при любом рисовании все кнопки теряются, приходится выполнять рисование всего окна и определение всех кнопок.
  • barsuk wrote:Это из-за того, что панель отслеживает активное окно (раньше этой возможности не было).
    Поскольку при любом рисовании все кнопки теряются, приходится выполнять рисование всего окна и определение всех кнопок.
    А почему бы не перерисовывать две кнопки: соответствующее ставшему неактивным и активированое окно?
    Из хаоса в космос
  • Конечно, я бы сделал так, но есть следующая сложность: сейчас код @panel выглядит так:
    1) вычисление координат кнопки
    2) рисование произвольной кнопки
    3) определение кнопки функцией 8.
    Даже если я перерисовываю 2 кнопки, остальные надо снова определять(см. функцию 13/1), а значит, вычислять их координаты. Для этого придется либо замусорить код условными конструкциями вроде:
    1) вычисление координат кнопки
    2) если эту кнопку нужно рисовать, то рисование произвольной кнопки
    3) определение кнопки функцией 8.
    Либо продублировать код, добавив функцию "просто определение всех кнопок без рисования".
    Первый вариант ухудшит скорость работы, а второй - увеличит размер программы. Какой способ мне следует выбрать?
  • 1-ый. скорость теоретически только увеличится, поскольку перерисовка - более дорогая операция
  • я придерживаюсь первого варианта перерисование лишний раз всей панели, не оправданно.
  • Сделал по первому варианту. Теперь при смене активного окна мелькания нет.
    Но, кажется, при запуске или закрытии окон панель рисуется два раза. Так или нет?
    Attachments
    @panel.7z (3.81 KiB)
    Downloaded 293 times
  • barsuk wrote:Сделал по первому варианту. Теперь при смене активного окна мелькания нет.
    Но, кажется, при запуске или закрытии окон панель рисуется два раза. Так или нет?
    Шикарно :wink:
    На счёт двух раз не знаю.
    Из хаоса в космос
  • "Так или нет?" - спроси у отладчика.. брикпоинт поставь на перерисовке..
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • Gluk wrote:"Так или нет?" - спроси у отладчика.. брикпоинт поставь на перерисовке..
    1 раз перерисовывается. Все в порядке.
  • Немного оптимизировал код. Выкладываю исходники.
    Attachments
    panel.7z (14.18 KiB)
    Downloaded 286 times
  • Не отображается Alt+Tab, хотя и работает.
    Из хаоса в космос
  • При запуске приложения панель прорисовывается 2 раза (сначала добавляется кнопка - потом все стирается и рисуется заново )
    при закрытии один раз (все стирается и рисуется заново но уже без кнопки)
    Все сложное - просто!
  • Есть недоделка.. при нажатии кнопки WIN меню открывается.. но если кнопку держать X секунд меню откроется N раз ) наверно запускается в цикле пока нажата клавиша
  • Может сделать запуск меню по отпусканию клавиши вин? Тогда можно также сделать Win+D (свернуть/развернуть все окна), Win+R (запуск приложения), Win+E (запуск Eolite)...
  • Who is online

    Users browsing this forum: Ahrefs [Bot] and 4 guests