Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Herausfinden, ob Fenster sichtbar ist

  Alt 25. Sep 2008, 18:11
Hallo, dafür eignet sich die GetClipBox API.

Delphi-Quellcode:
type
  TVisibleStatus = (vsHidden, vsVisible, vsPartVisible);

function TForm1.GetVisibleStatus(wnd: HWND): TVisibleStatus;
var
  Clip: Integer;
  hDC: THandle;
  ClipRect, ClientRect: TRect;
begin
  hDC := GetDC(wnd);
  Clip := GetClipBox(hDC, ClipRect);
  case Clip of
    NULLREGION: Result := vsHidden; // Fenster ist komplett versteckt
    SIMPLEREGION:
      begin
        ClientRect := GetClientRect;
        if EqualRect(ClipRect, ClientRect) then // vollständig sichtbar
          Result := vsVisible //ClientRect ist sichtbar
        else //teils sichtbar
          Result := vsPartVisible; //ClientRect ist sichtbar
      end;
    COMPLEXREGION: // Region besteht aus mehr als einem Rechteck, Fenster ist teils sichtbar
      Result := vsPartVisible;
  end;
  ReleaseDC(Handle, hDC);
end;
Thomas
  Mit Zitat antworten Zitat