Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Обновить окно


Автор: jimbo 3.6.2010, 17:33
Привет всем!

Пишу на WINAPI. среда MSVS08.

На диалог кидаю Picture control(РС) В сообщении диалога wm_paint рисую на этом РС"е количество палочек в зависимости от количества минут. Для этого, запускаем потом параллельный, в которром смотрим текущее время и если минута изменилась, то надо рисовать. Посылаю сооббщение WM_PAINT своему РС:

Код

DWORD WINAPI Thread(LPVOID lp)
{
HWND hDlg = (HWND)lp;
SYSTEMTIME time;
GetLocalTime(&time);
while(1)
{
Sleep(1000);
SYSTEMTIME tmp;
GetlocalTime(&tmp);
if(tmp.wMinute !=time.wMinute)
{
SendMessage(hDlg,WM_PAINT,0,0);
time = tmp;
}
}
return 0;
}


Собственно все нормально рисуется. но когда приходит следующий wm_paint, старая картинка не стирается, а поверх нее рисуется новая. Скажите, как удалить старую, чтобы у меня не получалась каша? Пробовал
 
Код

InvalidateRect(GetDlgItem(hDlg,IDC_STATIC_PC),0,TRUE);

что-то вообще перестало рисоваться. Как правильно заставить отрисовывать линии ?:(

Автор: 586 3.6.2010, 21:31
Закрась старую картинку функцией FillRect.

Автор: GremlinProg 4.6.2010, 08:22
+ не надо из потока посылать WM_PAINT,
в потоке нужно вызвать только InvalidateRect( hDlg, NULL, TRUE );

Автор: jimbo 4.6.2010, 08:33
Спасибо за совет.

Исправил тем, что рисовал каждую секунду. 

Автор: jimbo 4.6.2010, 09:32
Цитата(GremlinProg @  4.6.2010,  08:22 Найти цитируемый пост)
в потоке нужно вызвать только InvalidateRect( hDlg, NULL, TRUE ); 


ничего не рисуется вообще( 

Если SendMessage(hDlg,WM_PAINT,0,0) перенести до Sleep(1000) то все нормально отрисовывается.smile

Автор: xvr 4.6.2010, 10:53
Цитата(jimbo @  4.6.2010,  09:32 Найти цитируемый пост)
ничего не рисуется вообще( 
Видимо основной поток не крутит цикл выборки сообщений (GetMessage/DispatchMessage)


Автор: GremlinProg 4.6.2010, 12:31
jimbo, показывай код

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)