AKB Forums

Go Back   AKB Forums > Technical sections > Languages, Compilers and Interpreters
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Languages, Compilers and Interpreters C,C++,C#,.NET,Java,PHP,Perl,SQL and more

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Apr 17, 2002, 14:30   #1
Главный инспектор снов
 
Dream_InspectoR's Avatar
 
Join Date: Jan 2002
Location: Yerevan, Armenia
Posts: 330
Rep Power: 7
Reputation: 10
Send a message via ICQ to Dream_InspectoR
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!!!
Dream_InspectoR is offline   Reply With Quote Quote selected
Old Apr 17, 2002, 18:53   #2
Administrator
 
greka's Avatar
 
Join Date: Sep 2001
Location: @work
Posts: 5,347
Rep Power: 10
Reputation: 23
Send a message via ICQ to greka
Post

look at
CWnd::GetUpdateRect

(...Retrieves the coordinates of the smallest rectangle that completely encloses the update region....)
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/
greka is offline   Reply With Quote Quote selected
Old Apr 17, 2002, 19:01   #3
Administrator
 
greka's Avatar
 
Join Date: Sep 2001
Location: @work
Posts: 5,347
Rep Power: 10
Reputation: 23
Send a message via ICQ to greka
Post

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

b/r
__________________
И повешенные могут качаться в неположенную сторону. /С.Е.Лец/
greka is offline   Reply With Quote Quote selected
Old Apr 18, 2002, 12:48   #4
Дошкольник
 
Join Date: Mar 2002
Location: ARMENIA,Yerevan
Posts: 141
Rep Power: 7
Reputation: 10
Arrow

в Win32 API есть такая функция:
InvlidateRect(HWND hWnd,CONST RECT *lpRect,BOOL bErase);
она посылает сообщение WM_PAINT окну дескриптор у которого hWnd и перерисовывает часть окна отмечаной структурой *lpRect (указатель на структуру типа RECT). Параметр bErase указывает перерисовать или нет бэкграунд окна в данном обновленном регионе.
__________________
Не трать время на человека, который не стремится провести его с тобой. Г. Г. Маркес
LION_KING is offline   Reply With Quote Quote selected
Old Apr 19, 2002, 00:53   #5
Главный инспектор снов
 
Dream_InspectoR's Avatar
 
Join Date: Jan 2002
Location: Yerevan, Armenia
Posts: 330
Rep Power: 7
Reputation: 10
Send a message via ICQ to Dream_InspectoR
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!!!
Dream_InspectoR is offline   Reply With Quote Quote selected
Old Apr 19, 2002, 07:26   #6
Дошкольник
 
Join Date: Mar 2002
Location: ARMENIA,Yerevan
Posts: 141
Rep Power: 7
Reputation: 10
Talking

Quote:
Originally posted by Dream_InspectoR:

2 Lion King
Duq sxal eq haskacel harc@...
н-да... бывает...
__________________
Не трать время на человека, который не стремится провести его с тобой. Г. Г. Маркес
LION_KING is offline   Reply With Quote Quote selected
Old Apr 23, 2002, 05:18   #7
Дошкольник
 
Join Date: Mar 2002
Location: Yerevan
Posts: 111
Rep Power: 7
Reputation: 10
Post

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

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

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


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 04:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link