Delphi-PRAXiS
Seite 1 von 3  1 23      

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 an Bildschirmrand / Taskleiste andocken mit nonVCL (https://www.delphipraxis.net/42673-fenster-bildschirmrand-taskleiste-andocken-mit-nonvcl.html)

idontwantaname 22. Mär 2005 12:51


Fenster an Bildschirmrand / Taskleiste andocken mit nonVCL
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo :hi:

Man findet in diesem Beitrag der Cody-Library den Quellcode, um ein Fenster an den Bildschirmrand bzw. an dei Taskleiste andocken zu lassen. Ich habe diesen Code nun in nonVCL umgesetzt.
Delphi-Quellcode:
function WndProc(WndHWND: HWnd; uMsg: UInt; wParam: WParam; lParam: LParam): LResult; stdcall;
const
  DISTANCE = 20;
var
  MyWndPos: PWindowPos;
  WorkAreaRect: TRect;
begin
   Result := 0;

   case uMsg of
    WM_WINDOWPOSCHANGING: begin
      // Nötige Informationen holen
      SystemParametersInfo(SPI_GETWORKAREA, 0, @WorkAreaRect, 0);
      MyWndPos := PWINDOWPOS(lParam);

      // Oben und Unten
      if (MyWndPos.y <= DISTANCE) and
         (MyWndPos.y >= -DISTANCE) then
           MyWndPos.y := 0;
      if (MyWndPos.y + MyWndPos.cy > (WorkAreaRect.Bottom - DISTANCE)) and
         (MyWndPos.y + MyWndPos.cy < (WorkAreaRect.Bottom + DISTANCE)) then
           MyWndPos.y := WorkAreaRect.Bottom - MyWndPos.cy;

      // Links und Rechts
      if (MyWndPos.x <= DISTANCE) and
         (MyWndPos.x >= -DISTANCE) then
           MyWndPos.x := 0;
      if (MyWndPos.x + MyWndPos.cx > (WorkAreaRect.Right - DISTANCE)) and
         (MyWndPos.x + MyWndPos.cx < (WorkAreaRect.Right + DISTANCE)) then
           MyWndPos.x := WorkAreaRect.Right - MyWndPos.cx;
    end;

    WM_DESTROY: begin
      PostQuitMessage(0);
    end;

     else Result := DefWindowProc(WndHWND, uMsg, wParam, lParam);
   end;
end;

Luckie 22. Mär 2005 12:56

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir wird da nichts angedockt. Oder verstehe ich den Sinn nicht so gnaz?

idontwantaname 22. Mär 2005 13:00

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
hm, komisch, bei mir geht es :gruebel:

hab oben im Quellcode einen Fehler gemacht, habs aber schon geändert

Luckie 22. Mär 2005 13:03

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Liste der Anhänge anzeigen (Anzahl: 1)
Screenshot anbei.

idontwantaname 22. Mär 2005 13:06

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
du kannst es schon unter die taskleiste schieben, nur wenn du in die nähe der taskleiste kommst (bzw. bildschirmrand), um genau zu sein 20 pixeln, dann "dockt" das fenster eben an

Luckie 22. Mär 2005 13:10

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Sorry, da dockt nichts an.

idontwantaname 22. Mär 2005 13:14

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
hm, das verstehe ichjetzt echt nicht

warten wir einfach auf die "testergebnisse" der anderen, dann sehen wir weiter

idontwantaname 23. Mär 2005 14:58

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Liste der Anhänge anzeigen (Anzahl: 1)
*pusch*

@luckie: im anhang ist meine compilierte exe, versuchs damit

Luckie 23. Mär 2005 15:55

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Auch damit geht es nicht.

Thorben77 23. Mär 2005 15:59

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir dockt da auch nix... :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.
Seite 1 von 3  1 23      

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