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 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:

Ultimator 23. Mär 2005 16:02

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Komisch, bei mir dockt es :-|

MagicAndre1981 23. Mär 2005 16:09

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir geht es aber auch nicht!

Ich habe WinXP MCE 2005.

MfG
André

Jarmen_Kell 23. Mär 2005 16:11

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Da ihr vermutlich Win benutzt: Vllt. hats was mit dem "TaskLeiste Fixieren" bzw nicht fixieren zu tun?!?

MasterC 23. Mär 2005 16:38

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
In der VCL nennt sich das ganze ScreenSnap, bei mir geht das jedenfalls.

schuetze09 23. Mär 2005 16:56

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir geht es auch (Win2000 SP4)

PierreB 23. Mär 2005 17:02

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Hm, ich hab auch Win2000 SP4 aber es dockt nicht an. :gruebel:

idontwantaname 24. Mär 2005 10:50

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Äm, jetzt kenn ich mich nicht mehr aus :gruebel:

ich hab Win XP Home ohne SP und geht problemlos. Findet ihr im Quellcode Fehler ??

wfoertsch 24. Mär 2005 11:08

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Hi,
bei mir gehts...


Windows XP SP2

Taskleistenstellungen:
Fixieren Aus
Auto. Ausblenden Aus
Immer im Vodergrund An
Ähnliche Elemente gr. Aus
Schnellstartleiste An


gruss
Wolle

MisterNiceGuy 24. Mär 2005 12:12

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir gehts auch, WinXP SP1

LoL 24. Mär 2005 12:27

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir gehts Win2k SP4

mirage228 24. Mär 2005 12:29

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir gehts auch

Win XP Prof. SP2

Taskleiste:
Fixieren -> Ja

mfG
mirage228

idontwantaname 24. Mär 2005 12:48

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Hab es jetzt noch mal getestet:

Fixeren aus / ein: Geht
Automatisch ausblenden aus / ein: Geht

Also, ich kann echt nicht nachvollziehen, wieso es nicht geht.
Habt ihr, die bei denen es nicht geht, mehrere Monitore ??

PierreB 24. Mär 2005 12:50

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Nein, leider nur einen.

Matze 24. Mär 2005 12:58

Re: Fenster an Bildschirmrand / Taskleiste andocken mit nonV
 
Bei mir WinXP SP1 geht es auch nicht.

Komisch, ich wüsste auch nicht, an was das liegen kann.

DP-Maintenance 3. Apr 2005 10:42

DP-Maintenance
 
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Windows API" verschoben.
Beitrag befindet sich nun hier in der Code-Library.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 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