Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Über Handle Fenstergröße verändern (https://www.delphipraxis.net/99996-ueber-handle-fenstergroesse-veraendern.html)

Xzeer 20. Sep 2007 18:12


Über Handle Fenstergröße verändern
 
Hallo,

Nachdem ich nun so einigermaßen weiß, wie Handles funktionieren, habe ich noch eine Frage.

Kann ich über ein Handle die Fenstergröße ändern?

Als Beispiel:

Delphi-Quellcode:
procedure Bsp;
var
   window: hwnd;
begin
   window:=findwindow(nil, 'Dokumente') //der Explorer öffnet ja Standartmässig den Dokumente Ordner
   sendmessage(-> größe ändern <-);
end;
Wie kann ich das hinbekommen?

DGL-luke 20. Sep 2007 18:22

Re: Über Handle Fenstergröße verändern
 
MSDN-Library durchsuchenSetWindowPos

Wen du das Handle eines Fenster hast, kannst du damit fast alles machen ;-)

Xzeer 20. Sep 2007 18:39

Re: Über Handle Fenstergröße verändern
 
ok, es klappt.

Ich hab es jetzt mal so gemacht:

Delphi-Quellcode:
procedure Bsp;
var
   window: hwnd;
begin
   window:=findwindow(nil, 'Dokumente') //der Explorer öffnet ja Standartmässig den Dokumente Ordner
   setwindowpos(window,hwnd_top,0,0,0,0,swp_showwindow);
end;
Das Fenster steht dann in der rechten oberen Ecke und ist sehr klein.

Wofür genau stehen eigentlich die 4 Zahlen, also ich glaube die ersten beiden sind die Koordinate der rechten oberen Ecke des Fensters und die zweiten beiden geben die größe des fensters an, oder?

Benutze ich den Befehl so richtig?

s-off 20. Sep 2007 20:08

Re: Über Handle Fenstergröße verändern
 
Hallo,

Zitat:

Zitat von Leos-Studio
window:=findwindow(nil, 'Dokumente') //der Explorer öffnet ja Standartmässig den Dokumente Ordner

1. Bei mir lautet der Name des Ordners 'Eigene Dateien'
2. Unter Windows<=98 war das nicht so
3. Kann das der User mit Angabe von '/e,PFAD' als Argument beim Start beliebig ändern
4. Schau Dir mal den Hinweis zu dem Begriff 'Standart' an :wink:

Fazit: Solltest Du Deine Anwendung für mehrere Benutzer zugänglich machen wollen, wirst Du mit einer Suche nach dem Explorer-Fenster über die Caption höchstwahrscheinlich kein Glück haben.
Lasse die Caption lieber aussen vor und gehe über die Klasse (unter WinXP bspw. 'ExploreWClass').

Zitat:

Zitat von Leos-Studio
Wofür genau stehen eigentlich die 4 Zahlen, also ich glaube die ersten beiden sind die Koordinate der rechten oberen Ecke des Fensters und die zweiten beiden geben die größe des fensters an, oder?

Die Hilfe sagt dazu folgendes:
Zitat:

Zitat von Delphi-Hilfe
X
[in] Specifies the new position of the left side of the window, in client coordinates.
Y
[in] Specifies the new position of the top of the window, in client coordinates.
cx
[in] Specifies the new width of the window, in pixels.
cy
[in] Specifies the new height of the window, in pixels.

Also hast Du wohl recht :-D

Rastaman 20. Sep 2007 20:16

Re: Über Handle Fenstergröße verändern
 
Wenn du willst, dass es oben links in der Bildschirmecke ganz klein plaziert wird, dann machst dus richtig.

Allerdings solltest du über den letzten Parameter wissen:
Man kann folgende (nur die wichtigen) Flags setzen:
- SWP_NOACTIVATE -> Fenster bekommt keinen Focus
- SWP_NOMOVE -> Die Koordinatenparameter, also die ersten 2, werden ignoriert
- SWP_NOSIZE -> Die Größenangaben, also die zweiten 2, werden ignoriert

Die kannst du alle beliebig mit "or" verbinden.


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