kategoria: ANSI C
[#1] Gadżety i podwójne buforowanie
Hej,

Nurtuje mnie mała rzecz. Otóż chciałbym poprawnie odświeżyć gadżety systemowe w buforze ekranu.

Bufor ekranu tworzę za pomocą AllocScreenBuffer() z intuition.library. Jest to podwójne buforowanie zgodne z systemem.

Jeżeli użytkownik zmieni stan gadżetów, to wówczas chciałbym w drugim buforze odświeżyć te gadżety. Najlepiej przed ich wyświetleniem.

Funkcja ChangeScreenBuffer() poprawnie zwraca FALSE, kiedy użytkownik w danej chwili naciska gadżet i wstrzymuje przełączanie bufora. Kiedy natomiast stan interfejsu użytkownika nie jest aktualnie zmieniany, funkcja zwraca TRUE i przełącza bufor ekranu.

Po przełączeniu bufora wszystkie operacje rysujące są wykonywane w nowym buforze.

Do odświeżenia gadżetów służy funkcja RefreshGList().

Jak wykonać funkcję RefreshGList() tuż przed przełączeniem buforów w taki sposób, by odświeżyła gadżety w buforze, który chcemy wyświetlić? Czy wystarczy przekierować window->RPort->BitMap okienka, czy może screen->RastPort.BitMap ekranu?

Jeszcze chciałbym zaktualizować ramkę okna przed wyświetleniem nowego bufora. Do jakiej bitmapy zagląda funkcja RefreshWindowFrame()?

Przygotowałem w pełni funkcjonalny edytor plansz do gry, ale chciałbym usprawnić w nim kilka funkcji rysujących.
[#2] Re: Gadżety i podwójne buforowanie

@Hexmage960, post #1

Poradziłem sobie póki co w taki sposób, że jednak odświeżam ramkę okienka po przełączeniu buforów. Być może czasami będzie widać grafikę sprzed tego odświeżenia, ale ramka i gadżety będą ostatecznie odświeżone prawidłowo.

Nie potrzebuję w tej chwili często zmieniać bufora.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem