ShIvADeSt А ведь точно, вё гениальное - просто.
Я почему-то смотрел на примеры, где выставляли длину масива равную количеству всех элементов, поэтому я сделал такой позорный код для извлечения первого и последнего индекса из кучи:
Код: function GetLastItems(hWnd: THandle): TSmallPoint;
var
i: DWORD;
first: DWORD;
last: DWORD;
count: Integer;
ret: DWORD;
begin
Result.x := DWORD(-1);
Result.y := DWORD(-1);
first := DWORD(-1);
last := DWORD(-1);
count := SendMessageW(hWnd, LB_GETCOUNT, 0, 0);
for i := 0 to count -1 do
begin
ret := SendMessageW(hWnd, LB_GETSEL, i, 0);
if (first = DWORD(-1)) and (ret > 0) then
begin
first := i;
Break;
end;
end;
for i := count -1 downto 0 do
begin
ret := SendMessageW(Wnd, LB_GETSEL, i, 0);
if (last = DWORD(-1)) and (ret > 0) then
begin
last := i;
Break;
end;
end;
Result.x := first;
Result.y := last;
end;