Не работает UpdateWindow(hwnd); в процедуре таймера.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено GOROX 23 сентября 2004 г. 21:29

По таймеру рисуются графики данных взятых с порта.
Графики накладываються друг на друга
Таймерная процедура выводит их, вызывая перед этим UpdateWindow(hwnd).
hwnd - хандл окна, но обновление экрана не происходит, хотя существует case WM_PAINT:
который перерисовывает сетку графиков при сворачивании и разв. окна.


//***********************************************
//* оконная процедура для обработки сообщений
//***********************************************
LRESULT CALLBACK WinProc
(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
HDC dc;

case WM_PAINT:

{
dc=BeginPaint(hwnd,&p);

setka(hwnd,GetDC(hwnd),1,1,20,10);
setka(hwnd,GetDC(hwnd),1,1,20,350);

EndPaint(hwnd,&p);
}

break;

//***** создаем ОСНОВНУЮ процедуру таймера *****

void timerproc(HWND hwnd,UINT msg,UINT_PTR idevent,DWORD dwtime)
{

static HDC dc;
dc=GetDC(hwnd);

UpdateWindow(hwnd);

//сохраняем текущие размеры клиентской области
GetClientRect(hwnd, &rect1);

//откроем порт для чтения и запишем в буфер buf_in
port1(hwnd,GetDC(hwnd));

exchange_char_int(buf_in,buf_int_in,1200);

//перепишем маску заголовка в buf_int_prom
for(mm=0;mm<=11;mm++)
{
buf_int_prom[mm]=maska[mm];
}

//выявим заголовок в буфере buf_int_in и получим смещение m
m=zagolovok(hwnd,GetDC(hwnd),buf_int_in,600,buf_int_prom);
//
//перепишем buf_in в buf_out со смещением m
buf_out=buf_in+m+12;

read_file_out_screen(hwnd,GetDC(hwnd),1,1,20,10);

//8 выводим значение скорости
//8.1 перепишем buf_int_in в buf_int_vel со смешением m+12+540 10 байт
buf_int_vel=buf_int_in+m+12+540;
screen_velocity(hwnd,GetDC(hwnd),930,10);

}//**** конец void timerproc(HWND hwnd,UINT msg,UINT_PTR idevent,DWORD dwtime)

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru