function TVrMessageDlg.GetTextSize(hWnd, hFont: HWND; const Text: String): TSize;
var
p1, p2, LineCnt: Integer;
hDC: THandle;
Line: string;
Size: TSize;
begin
Result.cx:= 0;
Result.cy:= 0;
if IsWindow(hWnd) and (FhFont <> 0) then
begin
hDC:= GetDC(hWnd);
SelectObject(hDC, FhFont);
LineCnt:= 0; //количество строк в тексте
p2:= 1;
while p2 <= length(Text) do
begin
while (p2 <= length(Text)) and (Text[p2] in [#13]) do inc(p2);
if p2 <= length(Text) then
begin
p1:= p2;
while (p2 <= length(Text)) and not(Text[p2] in [#13]) do inc(p2);
Line:= Copy(Text, p1, p2 - p1);
if GetTextExtentPoint32(hDC, PChar(Line), Length(Line), Size) then
begin
if Result.cx < Size.cx then
Result.cx:= Size.cx;
Result.cy:= Size.cy;
end;
inc(LineCnt);
end;
end;
Result.cy:= Result.cy * LineCnt;
end;
end;