Winapi и рисование

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Winapi и рисование

Сообщение CynicRus » 08.06.2017 00:39:29

Приветствую уважаемых форумчан. Играюсь с WinApi под Лазарусом 1.6 + FPC 3.0.2.
Нарисовал формочку, и пытаюсь мышкой на этой формочке рисовать.
Код: Выделить всё
  function WindowProc(wnd: HWND; msg: integer; wparam: WPARAM;
    lparam: LPARAM): LRESULT; stdcall;
  var
    x, y,p,j: integer;
    Dc: Hdc;
    hpenNew, hPenOld: HPen;
  begin
    x := 0;
    y := 0;
    hpenNew := CreatePen(PS_GEOMETRIC, 0, RGB(255, 255, 255));
    DC := GetDC(wnd);
    hpenOld := HPEN(SelectObject(dc, hpenNew));
    case msg of
       WM_LBUTTONDOWN:
      begin
        p := LOWORD(lParam);
        j := HIWORD(lParam);
        MoveToEx(dc, p, j, nil);
      end;
      WM_MOUSEMOVE:
      begin
        if (wParam and MK_RBUTTON) > 0 then
        begin
          x := LOWORD(lParam);
          y := HiWORD(lParam);
        //  DC := GetDC(wnd);
          //SetPixelV(dc, x, y, RGB(255, 255, 255));
          LineTo(dc,x,y);
        end;
      end;
      WM_Destroy:
      begin
        PostQuitMessage(0);
        Result := 0;
        Exit;
      end;
      else
        Result := DefWindowProc(wnd, msg, wparam, lparam);
    end;
    SelectObject(dc, hpenOld);
    //release dc to system
    ReleaseDC(wnd, dc);
    //delete new pen
    DeleteObject(hpenNew);
  end;

Незнаю почему, но вместо того, чтобы линия рисовалась от точки установленной с помощью MoveToEx, она всегда рисуется из 0.0. Собственно вопрос, что я делаю не так?
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: Winapi и рисование

Сообщение Снег Север » 08.06.2017 07:30:02

Потому, что при каждом новом вызове функция инициализируется заново и "забывает" координаты точки, до которой она рисовала в прошлом вызове. Ваш Кэп.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Vlad04 и гости: 29

Рейтинг@Mail.ru