Конференция "WinAPI" » Rect текста [D6, WinXP]
 
  • Compiler (07.01.08 23:11) [0]

    function GetRectText(DC:hDC; Text:string):Trect;
    begin
    Result.Left:=0;
    Result.Top:=0;
    Windows.DrawText(DC, PChar( Text ),-1,
          Result, DT_CALCRECT or DT_NOCLIP or DT_WORDBREAK);
    end;

    var
     MainWnd,l:HWND;  R:Trect;  Text:string;
    begin
    ...
    Text:='бла-бла-бла';
    l:=CreateWindowEx(0,'STATIC',Pchar(Text),SS_LEFT or WS_VISIBLE or WS_CHILD,
    100,100,100,100,MainWnd,1010,hinstance,nil);
    SendMessage(L,WM_SETFONT,GetStockObject(ANSI_VAR_FONT),0);
    R:=GetRectText(GetDC(MainWnd),Text);
    SetWindowPos(l,0,0,0,r.Right,r.Bottom,SWP_NOMOVE);
    ...


    Определяет неверно.
    В VCL при
    R:=GetRectText(Form1.canvas.handle,Text);

    все работает. Как заставить учитывать ширину и высоту шрифта
  • Leonid Troyanovsky © (08.01.08 11:48) [1]

    > Compiler   (07.01.08 23:11)  

    http://podgoretsky.com/DM/delphimaster.html

    --
    Regards, LVT.
  • Compiler (08.01.08 17:29) [2]

    > http://podgoretsky.com/

    Там в качестве DC везде Form1.canvas.handle. Или я плохо ищу? А без объекта TCanvas можно обойтись?
  • Dib@zol © (08.01.08 18:45) [3]
    А чего ты собсна ждёшь от SetWindowPos, если у тебя в последнем параметре указано, что окно двигать не надо??? Замени на SWP_SHOWWINDOW и будет те щастье.
 
Конференция "WinAPI" » Rect текста [D6, WinXP]
Есть новые Нет новых   [134431   +14][b:0][p:0.001]