Child redraw

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Child redraw

Post by mesajflaviu » 12 Dec 2012, 17:21

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 ...



Viorel
Microsoft MVP
Microsoft MVP
Posts: 293
Joined: 13 Jul 2007, 12:26

Re: Child redraw

Post by Viorel » 12 Dec 2012, 17:55

Î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.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Child redraw

Post by Ovidiu Cucu » 12 Dec 2012, 18:17

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).

mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Child redraw

Post by mesajflaviu » 13 Dec 2012, 10:56

Da, intradevar, merge super fain acuma ... si era vorba de o bifa (sau mai bine zis de stiinta :idea: ). Multumesc tuturor.

Rehan125
Junior
Junior
Posts: 1
Joined: 18 Dec 2013, 10:55
Judet: Caraş-Severin

Re: Child redraw

Post by Rehan125 » 18 Dec 2013, 10:59

Î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.
There are many options are also available but no one is as efficient and professional as 300-206 is. More details visit this page BlackBerry and also see on Amazon is a wonderful this page OSS-DB ,Best of luck.

Post Reply