[ Mikky @ 19.11.2003. 11:22 ] @
Ovo me u stvari zanima za GDI, jer se nebavim 3d programiranjem a mislim da je ovo bolji forum za ovo pitanje od c/c++.
U svakom slucaju poznato je da kad se prozor resizuje dolazi do treperenja usled refresh rate-a. Jedno od resenja ovog problema je back-buffering, odnosno crtanje u memoriju pa kopiranje toga na DC prozora, umesto direktno crtanje na prozor.
Ono sto mene zanima je da li je ovo moguce primeniti i na kontrole, tipa listview, treeview itd. S obzirom da njih crta windows a ne moj program.
Znaci ja na prozoru imam recimo 3 child prozora, jedan treeview, jedan dialog i jedan moj custom prozor. Pri resizovanju glavnog prozora dolazi do jakog treperenja, ja recimo mogu da backbufferujem moj prozor ali kako to da postignem sa ova druga dva? Postoji li nacin da se kaze kontroli da uradi crtanje na DC koji ja odredim? Time bih pored mog prozora i ostale kontrole uradile crtanje po memory DC-u, koji bi posle jednostavno kopirao na glavni prozor, samo ne znam da li je ovo i kako moguce. Ili mozda posoji jos neka fora za koju ne znam?
[ Reljam @ 19.11.2003. 16:02 ] @
Da, ako ceo prozor crtas u offscreen DC, mozes da izbegnes treperenje. Samo, ima jedan 'trik' koji si ti spomenuo - uopste nema potrebe da menjas kontrole, dovoljno je da DC koji im das za crtanje bude onaj baferovan (offscreen), a ne onaj koji crta direktno na ekranu. Zamenu DCa mozes da uradis u WM_PAINT handleru.

Inace, u Longhornu ovo Windows radi automatski za tebe, jer ceo desktop radi kao engine za video igru - back buffering, vertical sync, offscreen compositing, i naravno sve na 3D kartici. I nema vise DCa - konacno.
[ Mikky @ 19.11.2003. 21:08 ] @
Ok ali kako proslediti kontrolama i dialogu zeljeni DC, probao sam ovako, u WndProc mog glavnog prozora kada dobijem WM_PAINT poruku prvo napravim memory DC iscrtam ono sto je moj posao i zatim posaljem WM_PAINT child kontrolama i child dialogu da i oni to urade na mom memory DC:

SendMessage(hDlg, WM_PAINT, hMemDC,0);

Posle toga kopiram memory DC u onaj na ekranu ali dialog i dalje treperi kad se resizuje? Da li mozda treba da subclassujem kontrole ili u dialog proceduri da nekako obradim to sve?