Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fenster nicht minimieren (https://www.delphipraxis.net/123142-fenster-nicht-minimieren.html)

Optiplex 28. Okt 2008 14:42

Re: Fenster nicht minimieren
 
Zitat:

Zitat von Die Muhkuh
Gibt es überhaupt einen sinnvollen Grund, warum man das verhindern sollte? Dafür ist die Funktion ja da.

Die Antwort hat dir Sherlock bereits gegeben, es gibt Anwendungen,da möcht man einfach ein Fenster
egal in welcher Form auf dem Desktop liegen haben, und dieses soll dann natürlich nicht einfach minimiert werden können.

Optiplex

Meflin 28. Okt 2008 16:23

Re: Fenster nicht minimieren
 
Zitat:

Zitat von Optiplex
Die Antwort hat dir Sherlock bereits gegeben, es gibt Anwendungen,da möcht man einfach ein Fenster
egal in welcher Form auf dem Desktop liegen haben, und dieses soll dann natürlich nicht einfach minimiert werden können.

Argml. Sorry, aber wenn ich als Benutzer auf "Desktop anzeigen" klicke, dann soll gefälligst auch der Desktio angezeigt werden, und nicht irgendeine Form, die meint, sie müsse sich trotzdem auf den Desktop pflanzen :roll: Es ist einfach nur ein scheiß Stil, das Standardverhalten des Betriebssystems derart abzuändern.

Btw bezweifle ich, dass Deskbands eine Lösung für dich sind. Du kannst nämlich nur festlegen, ob es unten, oben, rechts oder links ist, und es geht dann immer über die komplette Breite/Höhe. Außerdem wird es *immer* angezeigt, andere Anwendungen können nicht in den Bereich des Deskbands verschoben oder maximiert werden. Aber es dürfte denke ich die einzige Lösung sein, die zuverlässig sicherstellt, dass dein Zeug auch nach "Desktio anzeigen" noch angezeigt wird.

jfheins 28. Okt 2008 16:34

Re: Fenster nicht minimieren
 
Um noch mehr zur Verwirrung beizutragen: Drück mal [Windows]+M ;)

Win+M minimiert alle Fenster.

Win+D (bzw. "Desktop anzeigen") Holt den Desktop in den Vordergund.

Ein nicht zu vernachlässigender Unterschied ;)

(Da du ja bereits das Minimieren verhinderst, nehme ich mal an, dass dir dies bei Win+M gelingt ?)

Du könntest jetzt natürlich die Message-Loop von dem Progman Fenster subclassen und die DTM_RAISE message (WM_USER + 83) abfangen.

Empfehlenswert ist das jedoch nicht (allg. das Verhalten sich nicht minimieren zu lassen.)

Quellen:
http://blogs.msdn.com/oldnewthing/ar...28/143771.aspx
und http://www.eggheadcafe.com/forumarch...st23443993.asp

Optiplex 29. Okt 2008 08:18

Re: Fenster nicht minimieren
 
Zitat:

Zitat von Tyrael Y.
WM_SIZE könnte es auch sein mit SIZEICONIC bzw. SIZE_MINIMIZED

Hallo Tyrael Y. das habe ich getestet, hat aber nichts geholfen.



Zitat:

Zitat von Meflin
Argml. Sorry, aber wenn ich als Benutzer auf "Desktop anzeigen" klicke, dann soll gefälligst auch der Desktio angezeigt werden, und nicht irgendeine Form, die meint, sie müsse sich trotzdem auf den Desktop pflanzen :roll: Es ist einfach nur ein scheiß Stil, das Standardverhalten des Betriebssystems derart abzuändern.

Meflin, ich will das Standardverhalten nicht ändern, es soll auch kein großes Fenster über dem Desktop liegen.Soweit mir bekannt bleiben Widgets bei 'Desktop anzeigen' ebenfalls auf dem Desk sichbar und minimieren sich nicht. Ansonsten hast du recht dass Deskbands nicht die Lösung für mein Problem ist.

jfheins,
die Links muss ich mir noch ansehen, ich gebe dir noch Bescheid ob sie mir weiterhelfen.

Danke für die Antworten
Optiplex

Frankfurtoder 29. Okt 2008 08:29

Re: Fenster nicht minimieren
 
Soll das Fenster dann niemals minimiert werden oder einfach nur dieses Desktop Anzeigen trotzen? Ansonsten könntest du doch prüfen ob das Fenster minimiert wurde und es wieder aufrufen.

Optiplex 29. Okt 2008 11:55

Re: Fenster nicht minimieren
 
Zitat:

Zitat von jfheins
Du könntest jetzt natürlich die Message-Loop von dem Progman Fenster subclassen und die DTM_RAISE message (WM_USER + 83) abfangen.

Empfehlenswert ist das jedoch nicht (allg. das Verhalten sich nicht minimieren zu lassen.)

Quellen:
http://blogs.msdn.com/oldnewthing/ar...28/143771.aspx
und http://www.eggheadcafe.com/forumarch...st23443993.asp

Hallo jfheins,
ich will nicht das allg. Verhalten von Windows ändern, ich möchte nur, dass mein kleines Fenster sichtbar bleibt und diese "ToggleDesktop" Nachricht ignoriert.

Zitat:

Zitat von Frankfurtoder
Ansonsten könntest du doch prüfen ob das Fenster minimiert wurde und es wieder aufrufen.

Dies könnte man machen, hat nur einem Schönheitsfehler, dass die Minimize Animation zu sehen ist , dies wirkt Amateurhaft

Gruss Optiplex

jfheins 29. Okt 2008 16:20

Re: Fenster nicht minimieren
 
Okay, also nochmal :mrgreen:

1. Würde es immernoch nicht mögen. Persönliche Meinung ;)

2. Was passiert wenn du statt "Desktop anzeigen" mal Win+M drückst?

3. Um es abzufangen, wenn der Desktop in den Vordergung geholt wird (nicht dasselbe wie alle Minimieren) könntest du versuchen, dich in die Nachrichtenschleife vom Desktop ("Progman") einzuhängen und auf die DTM_RAISE Nachricht zu reagieren. (bspw. mit einem Postmessage an deine anwendung, die sich dann beim verarbeiten dieser message in den vordergrund holt)

Meflin 29. Okt 2008 17:35

Re: Fenster nicht minimieren
 
Zitat:

Zitat von Optiplex
Soweit mir bekannt bleiben Widgets bei 'Desktop anzeigen' ebenfalls auf dem Desk sichbar und minimieren sich nicht. Ansonsten hast du recht dass Deskbands nicht die Lösung für mein Problem ist.

Doch, die Widgets sind dann "verschwunden" und auch die Sidebar wird nicht mehr angezeigt (so lange, bis man wieder ein anderes Fenster öffnet/maximiert und "normal" minimiert) ;)

Optiplex 30. Okt 2008 08:20

Re: Fenster nicht minimieren
 
Zitat:

Zitat von jfheins
2. Was passiert wenn du statt "Desktop anzeigen" mal Win+M drückst?

3. Um es abzufangen, wenn der Desktop in den Vordergung geholt wird (nicht dasselbe wie alle Minimieren) könntest du versuchen, dich in die Nachrichtenschleife vom Desktop ("Progman") einzuhängen und auf die DTM_RAISE Nachricht zu reagieren. (bspw. mit einem Postmessage an deine anwendung, die sich dann beim verarbeiten dieser message in den vordergrund holt)

Hallo jfheins,

Win+M bekommt man mit WM_Syscommand in den Griff. Wie hängt man sich in die Nachrichtenschleife von "Progman" ein, da bin ich mit meinem Wissen an eine Grenze gestoßen :oops:, vielleicht kann du mir da ein bischen Nachhilfe geben. Auf jeden Fall habt ihr mich dahingehend überzeugt, dass ich diese Funktion (falls es gelingt sie zu realisieren) in die Options aufnehmen werde, so dass jeder User selbst bestimmen kann ob er dieses Fenster auf dem Desktop liegen hat oder nicht.

Zitat:

Zitat von Meflin
Doch, die Widgets sind dann "verschwunden" und auch die Sidebar wird nicht mehr angezeigt (so lange, bis man wieder ein anderes Fenster öffnet/maximiert und "normal" minimiert) ;)

Sorry Meflin, da habe ich mich scheinbar getäuscht, da ich kein Vista sondern nur da allte XP habe, hatte ich das anders in Erinnerung.

Optiplex

jfheins 30. Okt 2008 14:46

Re: Fenster nicht minimieren
 
So ungefähr:
Delphi-Quellcode:
var
  OldWndProc: Pointer;

begin // Change WndProc
  OldWndProc := SetWindowLong({Handle}, GWLP_WNDPROC, @NewWndProc);
end;

function NewWndProc(hWnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
begin
  if ({Message})
    // Handle Message
  else // Call old WndProc
    CallWindowProc(OldWndProc, hWnd, uMsg, wParam, lParam);
end;
Das Handle bekommst du über FindWindow ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr.
Seite 2 von 4     12 34      

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