SCHMaster

|
Posted: Thu Mar 17, 2005 03:33 Post subject: |
|
|
Parcan
Гм... Ну если ты пишешь на API, то можно, в принципе и так - один хрен ты их создаешь (окна) в runtime (c VCL делфя эту всю работу за тебя делают). Можно и по другому (хоть на APIах, хоть на Делфях) - создать поверхность (можно окно, можно поверхность - DC, если юзаешь юнит Graphics, то можно и TCanvas обломаться, присвоив MyCanvas.Font.Handle:=HFONT), и выполнять все те-же функции с ней. В качестве примера (это, без обработки всяких искл. ситуевин, "с лету", но пахать должно)
Code: | function GetObjectSize(Fnt:HFont; aCaption:String; var aSize:TSize):boolean;
var
aCanvas:TCanvas;
begin
aCanvas:=TCanvas.Create;
try
aCanvas.Font.Handle:=Fnt;
aSize.X:=0;
aSize.Y:=0;
result:=GetTextExtentPoint32(GetDC(MyHandle),PChar,MyCaption),Length(MyCaption), aSize);
finally
aCanvas.Free;
end;
end; |
Если на АРЯХ, то вместо aCanvas - CreateCompatableDC но, я так думаю, ты с VCL вошкаешься, так что можно не гиммороиться с API |
|