Конференция "WinAPI" » GetWindowRect; Скриншот максимизированного окна [D7, WinXP]
 
  • Lexi (31.03.09 13:27) [0]
    Требуется сохранить скриншот максимизированного окна.

    Faq-и, в частности http://delphisite.ru/faq/poluchenie-izobrazheniya-ekrana я читал, но там не учитывается, что у максимизированного окна нет бордюров, а GetWindowRect выдает размер вместе с ними (top, left = -4), в результате чего на скриншот попадает лишнее.
    Существует ли какое-то стандартное решение этого вопроса?
  • Lexi (31.03.09 14:46) [1]
    Пока сделал так, но неужели нет лучшего решения...
         Width := Rect.Right - Rect.Left;
         Height := Rect.Bottom - Rect.Top;
         if IsZoomed(AHandle) then
           begin
           CXS := GetSystemMetrics(SM_CXSIZEFRAME);
           CYS := GetSystemMetrics(SM_CYSIZEFRAME);
           Width := Width - (CXS * 2);
           Height := Height - (CYS * 2);
           end
         else
           begin
           CXS := 0;
           CYS := 0;
           end;

         fBitmap := NewDIBBitmap(Width, Height, pf32bit);
         Result := BitBlt(fBitmap.Canvas.Handle, 0, 0, Width, Height, DC, CXS, CYS, SRCCOPY);

  • DVM © (01.04.09 00:11) [2]

    > что у максимизированного окна нет бордюров,

    У него есть бордюры и они находятся за краем экрана.
  • Игорь Шевченко © (01.04.09 00:28) [3]

    > Требуется сохранить скриншот максимизированного окна.


    С заголовком ?
 
Конференция "WinAPI" » GetWindowRect; Скриншот максимизированного окна [D7, WinXP]
Есть новые Нет новых   [134435   +34][b:0][p:0.001]