Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Fenster bzgl. nur eines Fensters in den Vordergrund bringen (https://www.delphipraxis.net/91193-fenster-bzgl-nur-eines-fensters-den-vordergrund-bringen.html)

simjoh 1. Mai 2007 06:00


Fenster bzgl. nur eines Fensters in den Vordergrund bringen
 
Hallo,

mit

Delphi-Quellcode:
SetWindowPos(Form1.handle, HWND_TOPMOST, Form1.Left,Form1.Top, Form1.Width, Form1.Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
setzt man ja ein Fenster in den Vordergrund von allen Fenstern. Wie kann man ein Fenster nur bezüglich eines Fensters in den Vordergrund bringen?

Ich will nicht alle Fenster auf dem Desktop in den Hintergrund bringen müssen. Hat jemand einen Tipp?

Danke.

Herzliche Grüße
Markus

bitsetter 1. Mai 2007 09:00

Re: Fenster bzgl. nur eines Fensters in den Vordergrund brin
 
Hallo,

der Code hier soll dein Fenster vor ein fremdes Fenster setzen.
Delphi-Quellcode:
type
  PWinPos = ^TWinPos;
  TWinPos = Record
    hForm, hFindWin, hFirstWin : HWND;
end;

function SetWinPos(hWnd: THandle; WinPos: PWinPos): Boolean; stdcall;
begin
  Result := true;
  if IsWindowVisible(hWnd) then
  begin
    if hWnd = WinPos^.hFindWin then
    begin
      SetWindowPos(WinPos^.hForm, WinPos^.hFirstWin, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
      Result := false;
    end;
    WinPos^.hFirstWin := hWnd;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  WinPos: TWinPos;
begin
  WinPos.hForm := Form1.Handle;
  WinPos.hFindWin := ...;//Handle des Fensters vor dem dein Fenster gesetzt werden soll
  WinPos.hFirstWin := HWND_TOPMOST;
  EnumWindows(@SetWinPos, integer(@WinPos));
end;
Du kannst damit dein Fenster also zwischen den anderen setzen.

Oder du kannst so
Delphi-Quellcode:
  SetWindowPos(Form1.Handle, (*hWnd*), 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
ein anders Fenster vor dein Fenster setzen.

simjoh 2. Mai 2007 17:31

Re: Fenster bzgl. nur eines Fensters in den Vordergrund brin
 
Hallo bit,

klappt wunderbar, herzlichen Dank. Wo hast du sowas her, oder is es selbstgemacht? Ich weiß nie, wo ich suchen muss.

Herzliche Grüße
Markus

bitsetter 2. Mai 2007 23:54

Re: Fenster bzgl. nur eines Fensters in den Vordergrund brin
 
Hi,

nein ist selbstgemacht, aber dass man mit SetWindowPos() ein Fenster weiter in den Vorder- oder Hintergrund setzen kann ist ja allgemein bekannt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz