Как обновить окно

Тема в разделе "WASM.WIN32", создана пользователем IvanCheremisov, 12 июл 2005.

  1. IvanCheremisov

    IvanCheremisov New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2005
    Сообщения:
    2
    Адрес:
    Russia
    Подскажите как обновить окошко, ести я рисую покадровую анимацию.

    Рисуется линия с координатами X1, Y1, X2, Y2. Вычисляются новые координаты, стирается линия, рисуется линия с новыми координатами.

    Код такой:

    ;--------------------------------------------

    TimerProc proc hWin:lol: WORD, hID:lol: WORD

    .if dID==1

    ;...

    ;Вычисление координат X1, Y1, X2, Y2

    ;...

    invoke DrawLine

    .endif

    ret

    TimerProc endp

    ;--------------------------------------------

    DrawLine proc

    LOCAL ps:PAINTSTRUCT



    invoke CreatePen, PS_SOLID, 10, 0

    mov pPen, eax

    invoke BeginPaint, hWnd, addr ps

    mov hdc, eax

    invoke SelectObject, hdc, pPen



    ;Рисование

    invoke MoveToEx, hdc, X1, Y1, addr ps

    invoke LineTo, hdc, X2, Y2



    invoke DeleteObject, pPen

    invoke DeleteDC, hdc



    ret

    DrawLine endp

    ;---------------------------------------------

    WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM

    mov eax, uMsg

    ;...

    .elseif eax==WM_PAINT

    invoke DrawLine

    ;...

    ;Жму на кнопку Start:

    SetTimer, hWnd, 1, 10, addr TimerProc

    ;...

    ;Жму на Stop:

    KillTimer, hWnd, 1

    ;...

    ;--------------------------------------------

    Может что-то неправильно. Я на ассемблер только начал изучать.
     
  2. tigsid

    tigsid Member

    Публикаций:
    0
    Регистрация:
    11 июн 2004
    Сообщения:
    62
    По моему здесь надо вместо BeginPaint использовать GetDC/ReleaseDC.

    Или сделать так

    .elseif eax==WM_PAINT

    ;Вычисление координат X1, Y1, X2, Y2

    invoke DrawLine



    TimerProc proc

    invoke InvalidateRect,hWnd, 0, 1
     
  3. IvanCheremisov

    IvanCheremisov New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2005
    Сообщения:
    2
    Адрес:
    Russia
    Спасибо, заработало!