Witam
Niedawno zacząłem sobie pisać w API no i trafiłem na problem - wygląda na banalny ale jakos nie moge obczajć o co biega
Program nie chodzi tak jak powinien - wydaje mi sie że powinien narysować kółka pod katem 45 stopni zaczynając od lewego górnego rogu ale program rysuje tylko 1 kółko w rogu no i nie odpowiada wogule - musze resetowac uruchomiony program - powiedzcie mi co robię nie tak bo juz 2 dzień siedze nad tym i nie mogę nic wykminić :(
program progs;
uses
Windows,
Messages;
Const
nazwa : PCHAR ='blabla' ;
Var
i , j : integer ;
Function WinMain( hw:HWND ; un:UINT ; wP:WPARAM ; lP:LPARAM ):LRESULT; stdcall;
Var
dc : HDC ;
ps : PAINTSTRUCT;
begin
Result := 0;
case un of
WM_CREATE:
begin
SetTimer (hw, 1, 1000, Nil) ;
end;
WM_TIMER :
InvalidateRect(hw, Nil, FALSE) ;
WM_PAINT :
begin
i:=i+10;
j:=j+10;
dc := BeginPaint (hw, ps) ;
Ellipse(dc, i, j, i+20, j+20);
EndPaint (hw, ps) ;
end;
WM_DESTROY :
begin
KillTimer (hw, 1 ) ;
PostQuitMessage (0) ;
end;
else
Result := DefWindowProc(hw, un, wP, lP);
end;
end;
Procedure init;
Var
hw : HWND;
wndclass : TWNDCLASS;
begin
wndclass.style := CS_HREDRAW or CS_VREDRAW ;
wndclass.lpfnWndProc := @WinMain ;
wndclass.cbClsExtra := 0 ;
wndclass.cbWndExtra := 0 ;
wndclass.hInstance := hInstance ;
wndclass.hIcon := LoadIcon (0 , IDI_APPLICATION) ;
wndclass.hCursor := LoadCursor (0 , IDC_ARROW) ;
wndclass.hbrBackground := COLOR_WINDOW ;
wndclass.lpszMenuName := Nil ;
wndclass.lpszClassName := nazwa ;
if RegisterClass(wndclass)=0 then
MessageBox (0, 'Program wymaga windy NT',
nazwa, MB_ICONERROR) ;
hw:= CreateWindow (nazwa, 'blablabla',
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
0, 0, hInstance, 0) ;
ShowWindow (hw, SW_SHOW) ;
UpdateWindow (hw) ;
end;
Var
msg : TMsg;
BEGIN
i:=1;
j:=1;
init;
while (GetMessage (msg, 0, 0, 0)) do ;
begin
TranslateMessage (msg) ;
DispatchMessage (msg) ;
end;
Halt(msg.wParam);
END.