tagPOINT P[5];
//заполнение массива P
...
RECT R;
R.left=P[0].x-10; R.top=P[0].y-29;
R.right=P[2].x+8; R.bottom=P[2].y+27;
InvalidateRect(hWnd,&R,false);
UpdateWindow(hWnd);
Перерисовка: часть 2
Код:
Но желаемый результат не достигается. В чем проблема ?
Цитата:
Originally posted by Dunkel
Возникла следующая задача: нужно перерисовать определенную прямоугольную область на форме. Делаю так:
Но желаемый результат не достигается. В чем проблема ?
Возникла следующая задача: нужно перерисовать определенную прямоугольную область на форме. Делаю так:
Код:
tagPOINT P[5];
//заполнение массива P
...
RECT R;
R.left=P[0].x-10; R.top=P[0].y-29;
R.right=P[2].x+8; R.bottom=P[2].y+27;
InvalidateRect(hWnd,&R,false);
UpdateWindow(hWnd);
//заполнение массива P
...
RECT R;
R.left=P[0].x-10; R.top=P[0].y-29;
R.right=P[2].x+8; R.bottom=P[2].y+27;
InvalidateRect(hWnd,&R,false);
UpdateWindow(hWnd);
Но желаемый результат не достигается. В чем проблема ?
Тут фишка в чем:
Если после твоего происходит выход из процедуры то все путем
а если нет то обновления не будет так как обновление может произойти только в WNDPROC когда последняя получит сообщение wm_paint и обработает его
Выход есть: создай отдельный поток для обновления указанной области
А зачем UpdateWindow(hWnd)
сама функция InvalidateRect(hWnd,&R,false) посылает сообщение WM_PAINT окну hWnd.
Цитата:
Originally posted by Borland_prog
Тут фишка в чем:
Если после твоего происходит выход из процедуры то все путем
а если нет то обновления не будет так как обновление может произойти только в WNDPROC когда последняя получит сообщение wm_paint и обработает его
Выход есть: создай отдельный поток для обновления указанной области
А зачем UpdateWindow(hWnd)
сама функция InvalidateRect(hWnd,&R,false) посылает сообщение WM_PAINT окну hWnd.
Тут фишка в чем:
Если после твоего происходит выход из процедуры то все путем
а если нет то обновления не будет так как обновление может произойти только в WNDPROC когда последняя получит сообщение wm_paint и обработает его
Выход есть: создай отдельный поток для обновления указанной области
А зачем UpdateWindow(hWnd)
сама функция InvalidateRect(hWnd,&R,false) посылает сообщение WM_PAINT окну hWnd.
Проблема решилась простой заменой последнего параметра функции InvalidateRect на TRUE.