Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters

Reply
 
Thread Tools

Kak pererisowywat' chast' okna w VC++
Old 17.04.2002, 14:30   #1
Главный инспектор снов
 
Dream_InspectoR's Avatar
 
Join Date: 01 2002
Location: Yerevan, Armenia
Posts: 329
Rep Power: 0
Question Kak pererisowywat' chast' okna w VC++

Predpolozhim u menja est' dialog, na kotorom setka nxn (n w kwadrate elementow) prichem w kazhdom elemente stoit bitmap (BitBlt i wse takoe) kazhdyj raz w OnPaint pererisowywat' wse n*n elementow nespodruchno (nabljudaetsja "trtroc").
Wopros
Mozhet kto znaet kak uznar' kakja chast' okna byla poterjana ( w rezul'tate perekrywanija, ili uxoda uz widimoj oblasti desktopa) chtob pererisowywat' tol'ko etu chast'?
__________________
Kill'em!!! Kill'em all!!!

Old 17.04.2002, 18:53   #2
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
Post

look at
CWnd::GetUpdateRect

(...Retrieves the coordinates of the smallest rectangle that completely encloses the update region....)
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/

Old 17.04.2002, 19:01   #3
Академик
 
greka's Avatar
 
Join Date: 09 2001
Location: inside myself
Posts: 5,369
Rep Power: 6
Post

also search "DrawMeOffScreen" in the MSDN and read apropriate article - it will be useful.

b/r
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/

Old 18.04.2002, 12:48   #4
Дошкольник
 
Join Date: 03 2002
Location: ARMENIA,Yerevan
Age: 47
Posts: 141
Rep Power: 0
Arrow

в Win32 API есть такая функция:
InvlidateRect(HWND hWnd,CONST RECT *lpRect,BOOL bErase);
она посылает сообщение WM_PAINT окну дескриптор у которого hWnd и перерисовывает часть окна отмечаной структурой *lpRect (указатель на структуру типа RECT). Параметр bErase указывает перерисовать или нет бэкграунд окна в данном обновленном регионе.
__________________
Не трать время на человека, который не стремится провести его с тобой. Г. Г. Маркес

Old 19.04.2002, 00:53   #5
Главный инспектор снов
 
Dream_InspectoR's Avatar
 
Join Date: 01 2002
Location: Yerevan, Armenia
Posts: 329
Rep Power: 0
Post

2 Greco El
10x for assistance, GetUpadateRect is that what were I looking for.
2 Lion King
Duq sxal eq haskacel harc@. harc@ ajn er, te Ajd invalidaterect-in ich amenapoqr koordinat kareli e poxancel wor lriv pagi korats region@.
__________________
Kill'em!!! Kill'em all!!!

Old 19.04.2002, 07:26   #6
Дошкольник
 
Join Date: 03 2002
Location: ARMENIA,Yerevan
Age: 47
Posts: 141
Rep Power: 0
Talking

Quote:
Originally posted by Dream_InspectoR:

2 Lion King
Duq sxal eq haskacel harc@...
н-да... бывает...
__________________
Не трать время на человека, который не стремится провести его с тобой. Г. Г. Маркес

Old 23.04.2002, 05:18   #7
Дошкольник
 
Join Date: 03 2002
Location: Yerevan
Posts: 111
Rep Power: 0
Post

А вообще, техника перерисовывани без "моргания" в MSDN-е неплохо охвачена, при поиске на слово "flicker" дает немало ресурсов.

Кстати, если же в сетке дочерние окошки сидят, то очень помогате WS_CLIPCHILDREN, а если вся перерисовка родная - и если вышеуказанные советы не помогают (зависит от конкретной ситуации, немного не совсем ясно, в чем именно у тебя проблема), поскольку в общем, моргать не должно, даже если ты перерисовываешь все - ОnPaint() овский DC уже и так клипнутый. А если моргает, значит может ты рисуешь в другой DC, отдельно полученный, то есть если сменишь его на BeginPaint-овский, все пройдет.

Еще есть вариант, что даже если ты все сделаешь правильно, то тебя может раздражать моргание даже той частично перерисовываемой области, это тоже решаемо - можно просто рисовать в memory DC, используя его как кэш, а потом битблитом кидать в нужное место.
Reply




Реклама:
реклама
Buy text link .

All times are GMT. The time now is 15:10.
Top

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.