Einzelnen Beitrag anzeigen

Neotracer

Registriert seit: 14. Jul 2010
17 Beiträge
 
Delphi 7 Personal
 
#7

AW: Control Handle unter dem Mauscursor

  Alt 2. Jan 2012, 18:43
ScreenToClient/ClientToScreen baut irgendwie Mist.
Ich übergebe das MainWindow und er rechnet mit dem ersten Child... bei calc.exe zumindest.

Habe mit jetzt eigene Funktionen geschrieben. Geht wunderbar.

Delphi-Quellcode:
procedure ScreenToClient2(wnd: HWND; var pt: TPoint);
var
  r: TRect;
begin
  if GetWindowRect(wnd, r) then
  begin
    pt.X := pt.X - r.Left;
    pt.Y := pt.Y - r.Top;
  end;
end;

procedure ClientToScreen2(wnd: HWND; var pt: TPoint);
var
  r: TRect;
begin
  if GetWindowRect(wnd, r) then
  begin
    pt.X := pt.X + r.Left;
    pt.Y := pt.Y + r.Top;
  end;
end;

function WindowFromRelativePoint(wnd: HWND; pt: TPoint): HWND;
begin
  ClientToScreen2(wnd,pt);
  result := WindowFromPoint(pt);
end;
  Mit Zitat antworten Zitat