AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ShowWindow Verständnisfrage

Ein Thema von Popov · begonnen am 2. Mär 2012 · letzter Beitrag vom 3. Mär 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

ShowWindow Verständnisfrage

  Alt 2. Mär 2012, 21:38
Kann mir das einer erklären. Irgendwie verstehe ich das nicht.

Was ich will ist paar Fenster ohne Fokusverlust sichtbar machen, deshalb ShowWindow und nicht Show.

http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Zitat:
Die Funktion ShowWindow darf pro Programm nur einmal mit dem Parameter ShowWindow aus der Funktion WinMain aufgerufen werden. Spätere Aufrufe von der Funktion ShowWindow müssen einen in der Tabelle aufgeführten Werte verwenden, statt einem, der durch den Parameter CmdShow aus der Funktion WinMainfestgelegt ist.
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: ShowWindow Verständnisfrage

  Alt 2. Mär 2012, 21:54
Was ich will ist paar Fenster ohne Fokusverlust sichtbar machen, deshalb ShowWindow und nicht Show.
Wie meinst Du das? Möchtest Du mehrere Fenster sichtbar machen, die alle gleichzeitig den Eingabefokus haben?
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: ShowWindow Verständnisfrage

  Alt 2. Mär 2012, 21:59
Nein, ich will aus Form1 Form2, Form3, usw. aufrufen ohne das Form1 den Fokus verliert. Eigentlich nichts wildes.
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: ShowWindow Verständnisfrage

  Alt 2. Mär 2012, 22:23
So wie ich das kenne, soll ein Fenster beim ersten Aufruf mit showwindow mit den nCmdShow-Daten aus WinMain aufgerufen werden. Jeder weitere Aufruf von ShowWindow muss die Angabe einer nCmdShow-Message haben. Mögliche nCmdShow-Messages findest Du in der angegebenen Tabelle.

Dieses Vorgehen ist eigentlich recht einfach, da beim ersten Aufruf die grundlegenden Daten für den WindowState aufgerufen werden sollen. Spätere Aufrufe mit ShowWindow sollen den WindowSate verändern.

Zitat:
The first time an application calls ShowWindow, it should use the WinMain function's nCmdShow parameter as its nCmdShow parameter. Subsequent calls to ShowWindow must use one of the values in the given list, instead of the one specified by the WinMain function's nCmdShow parameter.
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: ShowWindow Verständnisfrage

  Alt 2. Mär 2012, 22:33
Genau so habe ich es verstanden.

Bzw. nicht verstanden.

Sorry.
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: ShowWindow Verständnisfrage

  Alt 2. Mär 2012, 22:50
experimentiere doch mal ein wenig mit Show und ShowWindow im vergleich.
Ich hänge Dir mal ein "schell-mal-dahin-geklatscht"-Projekt an. Dabei habe ich bei ShowWindow vermieden WinMain aufzurufen und somit nicht die Vorgaben aus der IDE aufgerufen.
Wenn Du nun Deine Form über ShowWindow aufrufst wirst Du bemerken, dass Du sie mit einem normalen Form2.Hide nicht wieder verstecken kannst.
Nach einem Klick auf den Button für das normale Delphi-Form.Show kannst Du das Form auch wieder normal verstecken. Wenn Du nun z.B. Form2 noch mal mit ShowWindow aufrufst wirst Du Dein erwartetes Ergebnis erhalten, aber dennoch immer mit Focus, obwohl ich es als nicht aktiv aufgerufen habe.
Du wirst Dich mit ShowWindow also vollkommen selbst um Deine Fenster kümmern müssen. Daher verwende ich ShowWindow nur wenn ich von außerhalb über das Handle auf eine Form einer App zugreifen muss.

//Edit: Ich denke mal, so ähnlich wie es beim Anklicken der Buttons mit Delphi-FormX.Show realisiert ist, möchtest Du es auch gern haben.
Angehängte Dateien
Dateityp: zip Show und ShowWindow.zip (9,7 KB, 11x aufgerufen)
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: ShowWindow Verständnisfrage

  Alt 2. Mär 2012, 23:28
Ok, jetzt verstehe ich zumindest grob was du meinst. Inwieweit ich da noch tiefer einsteige muß ich morgen gucken.

Das ganze ist mir vielleicht deshalb nicht aufgefallen, weil ich die Fenster einerseits mit ShowWindow anzeige, aber mit ShowWindow(xyz.Handle, SW_HIDE) wieder schließe. Und das geht.

Meine vordringlichste Frage wäre hier: ist das insoweit ok, solange ich beides über ShowWindow erledige?

Natürlich ist mein obiges Beispiel stark vereinfacht dargestellt. Um genauer zu sein sollen (meine Fenster) aufpoppen ohne dabei dem gerade aktiven Fenster den Fokus zu klauen. Es sind einfache Messagefenster die für paar Sekunden erscheinen und wieder verschwinden sollen.
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: ShowWindow Verständnisfrage

  Alt 3. Mär 2012, 00:01
Eigentlich spricht nichts dagegen mit den SW_Commands zu arbeiten, solange Du Dich auch selbst um die korrekte Initialisierung kümmerst.

Solltest Du Dich vielleicht doch noch für die Delphi-Variante entscheiden, d.h. mit Form.Show und Form.Hide arbeiten, dann solltest Du bei Deinen Message-Forms noch über den Objekt-Inspektor den PopUp-Mode auf pmExplicit setzen, damit Dein Form auch im Vordergrund angezeigt wird und den Focus über den Code wieder an Deine MainForm zurückgeben.

Jede Technik hat ihren eigenen Aufwand. Du musst Dich meines Erachtens nur entscheiden an welcher Stelle er für Dich übersichtlicher/praktikabler ist.
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#9

AW: ShowWindow Verständnisfrage

  Alt 3. Mär 2012, 00:15
...Objekt-Inspektor den PopUp-Mode auf pmExplicit setzen
Ich glaube das ist paar Nummern weiter als D7

Zitat:
Jede Technik hat ihren eigenen Aufwand. Du musst Dich meines Erachtens nur entscheiden an welcher Stelle er für Dich übersichtlicher/praktikabler ist.
Ja, das Ganze ist inzwischen ein Mix aus Delphi und Api, aber es funktioniert. Das TopMost erledige auch über Api.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 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