Конференция "WinAPI" » Как определить позицию чужого окна БЕЗ РАМКИ (рабочую область)? [D7]
 
  • kalexi (25.01.10 20:17) [0]
    Сабж. Т.е допустим

    GetWindowRect(hWindow, r);



    дает позицию 100;100 (top;left). Тогда GetPixel(DC, top, left) определит цвет не рабочей области формы а Border'а. Кам можно определить положение рабочей области формы?
  • kalexi (25.01.10 20:43) [1]
    GetClientRect - top и left = 0
  • Игорь Шевченко © (25.01.10 22:49) [2]

    > GetClientRect - top и left = 0


    Было бы странно обратное.

    procedure TForm1.Button1Click(Sender: TObject);
    var
     Rect: TRect;
     WinRect: TRect;
    begin
     Rect := ClientRect;
     GetWindowRect (Handle, WinRect);
     MapWindowPoints(Handle, HWND_DESKTOP, Rect, 2);
     OffsetRect(Rect, -WinRect.Left, -WinRect.Top);
     ShowRect(Rect);
    end;

  • Игорь Шевченко © (26.01.10 02:24) [3]
    Плохо прочитал вопрос.

    Для того, чтобы найти абсолютные координаты клиентской части окна hWnd по его известному ClientRect (0-0, clientwidth-clientheight), достаточно одного вызова MapWindowPoints (hWnd, HWND_DESKTOP, ClientRect, 2);
 
Конференция "WinAPI" » Как определить позицию чужого окна БЕЗ РАМКИ (рабочую область)? [D7]
Есть новые Нет новых   [134431   +16][b:0][p:0.001]