Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.15;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.014 c
3-46633
tERRORist
2003-04-22 21:44
2003.05.15
Формат даты в MySQL


3-46661
Gregory
2003-04-22 22:35
2003.05.15
Пароль к БД Paradox


3-46620
Ann
2003-04-24 09:23
2003.05.15
Запрос


3-46592
Belkova
2003-04-22 20:55
2003.05.15
IBSecurityService


6-46878
AlexMax
2003-03-19 14:11
2003.05.15
Получение информации о входящем сообщении





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский