Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Feb 28, 2020 3:55 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 220 posts ]  Go to page Previous 1 2 3 4 5 615 Next
Author Message
PostPosted: Mon Jun 30, 2008 1:55 am 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5083
Как-то слишком часто стала перерисовываться новая панель, притом вся.

_________________
Через тернии к звездам


Top
   
PostPosted: Mon Jun 30, 2008 1:48 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Это из-за того, что панель отслеживает активное окно (раньше этой возможности не было).
Поскольку при любом рисовании все кнопки теряются, приходится выполнять рисование всего окна и определение всех кнопок.


Top
   
PostPosted: Mon Jun 30, 2008 7:25 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5083
barsuk wrote:
Это из-за того, что панель отслеживает активное окно (раньше этой возможности не было).
Поскольку при любом рисовании все кнопки теряются, приходится выполнять рисование всего окна и определение всех кнопок.
А почему бы не перерисовывать две кнопки: соответствующее ставшему неактивным и активированое окно?

_________________
Через тернии к звездам


Top
   
PostPosted: Mon Jun 30, 2008 9:22 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Конечно, я бы сделал так, но есть следующая сложность: сейчас код @panel выглядит так:
1) вычисление координат кнопки
2) рисование произвольной кнопки
3) определение кнопки функцией 8.
Даже если я перерисовываю 2 кнопки, остальные надо снова определять(см. функцию 13/1), а значит, вычислять их координаты. Для этого придется либо замусорить код условными конструкциями вроде:
1) вычисление координат кнопки
2) если эту кнопку нужно рисовать, то рисование произвольной кнопки
3) определение кнопки функцией 8.
Либо продублировать код, добавив функцию "просто определение всех кнопок без рисования".
Первый вариант ухудшит скорость работы, а второй - увеличит размер программы. Какой способ мне следует выбрать?


Top
   
PostPosted: Mon Jun 30, 2008 9:51 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
1-ый. скорость теоретически только увеличится, поскольку перерисовка - более дорогая операция

_________________
Image


Top
   
PostPosted: Tue Jul 01, 2008 9:05 am 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
я придерживаюсь первого варианта перерисование лишний раз всей панели, не оправданно.


Top
   
PostPosted: Tue Jul 01, 2008 4:11 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Сделал по первому варианту. Теперь при смене активного окна мелькания нет.
Но, кажется, при запуске или закрытии окон панель рисуется два раза. Так или нет?


Attachments:
@panel.7z [3.81 KiB]
Downloaded 133 times
Top
   
PostPosted: Tue Jul 01, 2008 4:38 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5083
barsuk wrote:
Сделал по первому варианту. Теперь при смене активного окна мелькания нет.
Но, кажется, при запуске или закрытии окон панель рисуется два раза. Так или нет?
Шикарно :wink:
На счёт двух раз не знаю.

_________________
Через тернии к звездам


Top
   
PostPosted: Wed Jul 02, 2008 5:36 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
"Так или нет?" - спроси у отладчика.. брикпоинт поставь на перерисовке..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Wed Jul 02, 2008 6:40 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Gluk wrote:
"Так или нет?" - спроси у отладчика.. брикпоинт поставь на перерисовке..

1 раз перерисовывается. Все в порядке.


Top
   
PostPosted: Thu Jul 03, 2008 11:01 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Немного оптимизировал код. Выкладываю исходники.


Attachments:
panel.7z [14.18 KiB]
Downloaded 124 times
Top
   
PostPosted: Fri Jul 04, 2008 6:59 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5083
Не отображается Alt+Tab, хотя и работает.

_________________
Через тернии к звездам


Top
   
PostPosted: Fri Jul 04, 2008 11:43 pm 
Offline

Joined: Tue Sep 12, 2006 9:44 pm
Posts: 37
При запуске приложения панель прорисовывается 2 раза (сначала добавляется кнопка - потом все стирается и рисуется заново )
при закрытии один раз (все стирается и рисуется заново но уже без кнопки)

_________________
Все сложное - просто!


Top
   
PostPosted: Thu Jul 17, 2008 4:43 pm 
Offline

Joined: Wed Jan 04, 2006 12:25 pm
Posts: 59
Есть недоделка.. при нажатии кнопки WIN меню открывается.. но если кнопку держать X секунд меню откроется N раз ) наверно запускается в цикле пока нажата клавиша


Top
   
PostPosted: Fri Jul 18, 2008 6:10 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 753
Может сделать запуск меню по отпусканию клавиши вин? Тогда можно также сделать Win+D (свернуть/развернуть все окна), Win+R (запуск приложения), Win+E (запуск Eolite)...


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 220 posts ]  Go to page Previous 1 2 3 4 5 615 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited