Page 1 of 1

Child redraw

Posted: 12 Dec 2012, 17:21
by mesajflaviu
Am intalnit o problema interesanta (care poate fi din cauza solutiei alese de mine, nu zic nu): intr-o aplicatie MDI, cu view-ul derivat din CScrollView, am pus o fereastra nemodala (deasupra tuturor) derivata din CDialog, in care afisez ce user-ul "are" in mouse pe CMyView, dar la scara mai mare (este un fel de magnify window). Totul merge OK. Am pus in acest dialog doua butoane. Baiul este ca aceste butoane se redeseneaza in ritmul in care redesenez dialog-ul, si apare pe aceste butoane fenomenul de "flickering" ... n-am putut scapa de acest flickering nici cum: am pus butoane "custom draw" (in care am implementat double-buffering-ul [acum aplic aceasta metoda pe oriunde am loc :D ]), am pus butoane normale, am pus butoane CBitmapButton, toate au acest flickering ...

Intrebarea mea este, pot sa "spun" acestor butoane, ca atunci cand redesenez dialog-ul, sa nu se redeseneze si ele ?

O alta solutie ar fi fost sa pun aceste butoane langa meniul sistem (langa butonul "close", pe windows title), dar si aceasta solutie implica tot felul de complicatii ...

Re: Child redraw

Posted: 12 Dec 2012, 17:55
by Viorel
Încercă să setezi stilul WS_CLIPCHILDREN pentru dialogul modal.

Zonele ocupate de butoane pot fi excluse și explicit cu ajutorul funcțiilor de tipul ExcludeClipRect.

Re: Child redraw

Posted: 12 Dec 2012, 18:17
by Ovidiu Cucu
Banui ca desenezi direct in zona client a dialogului.
Intradevar, ai putea scapa de flicareala asa cum ti-a sugerat Viorel. Cred totusi ca mai bine e sa nu desenezi in zona client ci intr-un control. Poate fi un control static (derivezi din CStatic) sau unul custom (derivezi direct din CWnd) sau un control ActiveX (OCX).
In felul asta e mai bine si pentru user, care n-o sa vada in dialogul ala amestecate mere cu pere (imagini cu butonele).

Re: Child redraw

Posted: 13 Dec 2012, 10:56
by mesajflaviu
Da, intradevar, merge super fain acuma ... si era vorba de o bifa (sau mai bine zis de stiinta :idea: ). Multumesc tuturor.

Re: Child redraw

Posted: 18 Dec 2013, 10:59
by Rehan125
Încercă să setezi stilul WS_CLIPCHILDREN pentru dialogul modal.

Zonele ocupate de butoane pot fi excluse și explicit cu ajutorul funcțiilor de tipul ExcludeClipRect.