AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Transparentes Fenster vor anderem Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

Transparentes Fenster vor anderem Fenster

Ein Thema von simjoh · begonnen am 3. Jul 2007 · letzter Beitrag vom 11. Jul 2007
 
simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#1

Transparentes Fenster vor anderem Fenster

  Alt 3. Jul 2007, 20:08
Hallo,

verzweifle gleich. Ich will mein Fenster vor das Fenster einer anderen Anwendung setzten. Zudem ist mein Fenster transparent, das funzt mit

Delphi-Quellcode:
procedure TFormTransparent1.DoInvisible;
var
  AControl : TControl;
  A, Margin, X, Y, CtlX, CtlY : Integer;
begin
  Margin := ( Width - ClientWidth ) div 2;
  //First, get form region
  FullRgn := CreateRectRgn(0, 0, Width, Height);
  //Find client area region
  X := Margin;
  Y := Height - ClientHeight - Margin;
  ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight );
  //'Mask' out all but non-client areas
  CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF );

  //Now, walk through all the controls on the form and 'OR' them
  // into the existing Full region.
  for A := 0 to ControlCount - 1 do begin
    AControl := Controls[A];
    if ( AControl is TWinControl ) or ( AControl is TGraphicControl )
        then with AControl do begin
      if Visible then begin
        CtlX := X + Left;
        CtlY := Y + Top;
        CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height );
        CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR );
      end;
    end;
  end;
  //When the region is all ready, put it into effect:
  SetWindowRgn(Handle, FullRgn, TRUE);
  
end;

procedure TFormTransparent1.FormDestroy(Sender: TObject);
begin
  //Clean up the regions we created
  DeleteObject(ClientRgn);
  DeleteObject(FullRgn);
  DeleteObject(CtlRgn);
end;

procedure TFormTransparent1.DoVisible;
begin
  //To restore complete visibility:
  FullRgn := CreateRectRgn(0, 0, Width, Height);
  CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY);
  SetWindowRgn(Handle, FullRgn, TRUE);
end;

procedure TFormTransparent1.FormCreate(Sender: TObject);
begin
  //We start out as a transparent form....
  DoInvisible;
end;
ganz gut, dann kann man auch noch auf die Objekte auf meinem Fenster klicken, wenn man an denen vorbeiklickt kommt aber immer das fremde Fenster in den Vordergrund.

Ich möchte gerne, dass mein Fenster immer vor nur diesem einen Fenster ist und man durchklicken kann. Die Objekte auf meinem Fenster sollen also sichtbar bleiben, auh wenn man durchklickt.

Hab noch was vergessen: Das Fenster, welches transparent sein soll, ist nicht das Hauptfenster, sondern wird vom Hauptfenster per Button "geshowed".

Hab mal ein Beipiel drangehängt.

HELP!!
Angehängte Dateien
Dateityp: zip trans_101.zip (206,4 KB, 29x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz