Delphi c применением API
Условие задачи:
Вопрос 1 С помощью API-функций создать графическое приложение, которое выводит 8-10 окружностей с разными атрибутами (цвет,
толщина, стиль), с обязательной перерисовкой изображения при манипуляциях с окном
program Project3;
uses
windows,
messages;
{$R *.RES}
var
MyWin: HWND;
MyDC: HDC;
function WindowFunc(MyWin: HWND; Mess,wParam,lParam: longint):longint; export; stdcall;
var ps : TPaintStruct;
i : Integer;
Pen : HPEN;
brush : HBRUSH;
begin
WindowFunc:=0;
case Mess of
WM_DESTROY: begin
PostQuitMessage(0);
Exit;
end;
WM_Paint: begin
BeginPaint(MyWin, ps);
for i := 0 to 9 do
begin
Pen := SelectObject(ps.hdc, CreatePen(Random(8), Random(10)+1, Random($ffffff + 1)));
brush := SelectObject(ps.hdc, CreateSolidBrush(Random($ffffff + 1)));
Ellipse(ps.hdc,
250 + i * 5,
250 + i * 5,
500 - i * 5,
500 - i * 5);
DeleteObject( SelectObject(ps.hdc, brush));
DeleteObject( SelectObject(ps.hdc, pen));
end;
EndPaint(MyWin, ps);
end;
end;
WindowFunc:=DefWindowProc(MyWin, Mess, wParam, lParam);
end;
procedure WinMain;
var
Mess: TMsg;
MyWClass: TWndClass;
begin
MyWClass.lpfnWndProc:= @WindowFunc;
MyWClass.lpszClassName:= 'MyClass';
MyWClass.lpszMenuName:= nil;
MyWClass.hCursor:= LoadCursor(0,IDC_ARROW);
MyWClass.hbrBackground:= Hbrush (COLOR_WINDOW);
MyWClass.hIcon:= LoadIcon(0, IDI_ASTERISK);
MyWClass.Style:= cs_VRedraw OR cs_HRedraw OR cs_DblClks;
MyWClass.cbClsExtra:= 0;
MyWClass.cbWndExtra:= 0;
MyWClass.hInstance:= hInstance;
if RegisterClass(MyWClass)=0 then Exit;
MyWin:= CreateWindow('MyClass', 'My first window',
WS_OVERLAPPEDWINDOW,
100, 100, 700, 700, 0, 0,
hInstance, nil);
ShowWindow(MyWin, CmdShow);
UpdateWindow(MyWin);
while GetMessage(Mess, 0, 0, 0) do
begin
TranslateMessage(Mess);
DispatchMessage(Mess);
end;
end;
begin
WinMain;
end.
все вроде есть а ошибку при компиляции выдает...
Checking project dependencies...
Compiling Project2.dproj (Debug, Win32)
dcc command line for "Project2.dpr"
c:\program files\embarcadero\rad studio\9.0\bin\dcc32.exe -$O- -$W+ -$YD --no-config -M -Q -TX.exe -AGenerics.Collections=System.Generics.Collections;
Generics.Defaults=System.Generics.Defaults;WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG -I"c:\program
files\embarcadero\rad studio\9.0\lib\Win32\release";"C:\Users\DOMA\Documents\RAD Studio\9.0\Imports";"c:\program files\embarcadero\rad
studio\9.0\Imports";"C:\Users\Public\Documents\RAD Studio\9.0\Dcp";"c:\program files\embarcadero\rad studio\9.0\include";
C:\Users\DOMA\Documents\synapse39\source\lib -LE"C:\Users\Public\Documents\RAD Studio\9.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\9.0\Dcp"
-NSSystem.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap;Winapi; -O"c:\program files\embarcadero\rad
studio\9.0\lib\Win32\release";"C:\Users\DOMA\Documents\RAD Studio\9.0\Imports";"c:\program files\embarcadero\rad studio\9.0\Imports";
"C:\Users\Public\Documents\RAD Studio\9.0\Dcp";"c:\program files\embarcadero\rad studio\9.0\include";C:\Users\DOMA\Documents\synapse39\source\lib
-R"c:\program files\embarcadero\rad studio\9.0\lib\Win32\release";"C:\Users\DOMA\Documents\RAD Studio\9.0\Imports";"c:\program files\embarcadero\rad
studio\9.0\Imports";"C:\Users\Public\Documents\RAD Studio\9.0\Dcp";"c:\program files\embarcadero\rad studio\9.0\include";
C:\Users\DOMA\Documents\synapse39\source\lib -U"c:\program files\embarcadero\rad studio\9.0\lib\Win32\release";"C:\Users\DOMA\Documents\RAD
Studio\9.0\Imports"
Delphi 3.
Полёт нормальный!

Попробуй на более ранних версиях!
… По коду: Координаты центра окружностей нужно пересчитывать, а то получается как на скрине!