Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.15;
Скачать: CL | DM;

Вниз

CreatePolygonRgn и динамический массив   Найти похожие ветки 

 
ed   (2003-04-30 18:24) [0]

Добрый день.
Приведенный ниже пример не работает (регион не появляется):
var
P: array of TPoint;
begin
SetLength(P, 3);
P[0] := Point(0, 0);
P[1] := Point(100, 100);
P[3] := Point(0, 100);
SetWindowRgn(Handle, CreatePolygonRgn(P, Length(P), WINDING), True);
.....

Причем, если использовать статический массив, то все OK. Может подскажете, как быть, если количество точек "полигона" заранее не известно.
Заранее спасибо.


 
default ©   (2003-04-30 18:58) [1]

var
P: array of TPoint;
begin
SetLength(P, 4);
P[0] := Point(0, 0);
P[1] := Point(100, 100);
P[2] := Point(0, 100);
P[3] := P[0];
SetWindowRgn(Handle, CreatePolygonRgn(P, 4, WINDING), True);




 
bxMax   (2003-04-30 19:04) [2]

попробуй так:
var
P: ^TPoint;
begin
getmem(P, 3*sizeof(tpoint));
P^ := Point(0, 0);
(P+sizeof(TPoint))^ := Point(100, 100);
(P+sizeof(TPoint)*2)^ := Point(0, 100);
SetWindowRgn(Handle, CreatePolygonRgn(P, Length(P), WINDING), True);
freemem(p);


 
default ©   (2003-04-30 19:08) [3]

procedure TForm1.Button1Click(Sender: TObject);
var
MP: Array of TPoint;
HR: HRGN;
begin

SetLength(MP, 3);
MP[0] := Point(0, 0);
MP[1] := Point(100, 100);
MP[2] := Point(0, 100);
HR := CreatePolygonRgn(MP[0], 3, WINDING);
SetWindowRgn(Handle, HR, True);
DeleteObject(HR)

end;

вот так надо


 
PVOzerski ©   (2003-04-30 19:12) [4]

А суть дела в том, что стандартный (с т. зр. поздних версий Delphi, но не WinAPI) динамический массив как переменная - это лишь указатель на довольно сложную структуру (в одномерном случае собственно массив как блок данных доступен по адресу 0-го элемента).



Страницы: 1 вся ветка

Текущий архив: 2003.05.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
3-46592
Belkova
2003-04-22 20:55
2003.05.15
IBSecurityService


3-46591
saha
2003-04-23 12:49
2003.05.15
Запрос select c like


3-46665
denary
2003-04-23 01:31
2003.05.15
Открыть таблицу в эксклюзивном режиме


1-46726
Loki
2003-05-04 23:07
2003.05.15
TWebBrowser


3-46657
Шапранов Сергей Николаевич
2003-04-24 17:36
2003.05.15
максимальное количество записей в Парадоксе