[C++ Builder] blokada odswierzania okna

0

Witam

Mam program w openglu napisany w builderze 6 i wyswietlany na formie, program ten wywoluje drugi program poprzez funkcje spawn. Okno drugiego programu czesciowo zaslania okno pierwsze. Po zakonczeniu dzialania programu drugiego okno pierwsze sie odswierza co odbieramy jako mrugniecie (opengl).
jak pozbyc sie tego efektu, probowalem blokowac wm_paint ale wtedy opengl sie blokuje i nie renderuje dopoki nie wywolam wm_paint (render chodzi w idle_loop lub timerze)
LockWindowUpdate(Form1->Handle) tez nie dziala tzn mruga jak odblokowuje, a nie moge caly czas miec zablowkoanego odswierzania

0

nikt nic nie wie ;(

0

obawiam sie ze pierwsze okno po prostu musi sie odrysowac od nowa, bo jego zawartosc byla zniszczona. mozesz sprobowac wymusic nie-przestawanie odswiezania w zaslonietym regionie, tak zeby caly czas byl "swiezy".. jest szansa ze wtedy mrugniecia nie bedzie, ale obawiam sie ze w sumie to bedzie wygladalo jeszcze gorzej :)

0

nie wiem czy to coś da ale zapobiega np mruganiu image
DoubleBuffered = true;

0

postaram sie dokładniej to opisać.
program A wywołuje funkcją spawn program B, który zasłania tylko dolną część programu A (program A oczekuje na zakończenie B ) po wyjściu program a dostaje komunikat wm_paint.
próba zablokowania komunikatu wm_paint skutkuje zawieszeniem programu, program sypie komunikat wm_paint dopuki nie zostanie przerysowana forma, co z kolei powoduje mrugnięcie.
może jest sposob oszukania programu, wysyłając komunikat, ze forma została przerysowana, nie przerysowując jej, lub wymuszenie przerysowania tylko w dolnej części programu gdzie pokazany był program B.

mam nadzieje ze nie zamotałem za bardzo.
@arkady_c
DoubleBuffered = true; nic nie zmienia.

@quetzalcoatl
jak juz opisałem blokada odświerzania skutkuje 'zwisem' do momentu przerusowania ..

0

Przy wyświetlaniu czasami blokuje sie komunikat (przechwytuje)
WM_ERASEBKGND , który powoduje odświeżanie tła okna powodując miganie .

1 użytkowników online, w tym zalogowanych: 0, gości: 1