AGB  ·  Datenschutz  ·  Impressum  







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

[nonVCL] Endlosschleife mit 2 Fenstern

Ein Thema von lbccaleb · begonnen am 17. Jan 2013 · letzter Beitrag vom 19. Jan 2013
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#1

[nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 13:03
Hallo,

hab mal wieder ein kleines Problem und kann den Fehler nicht finden

Also ich habe eine Simple nonVCL Anwendung mit einer MainForm und 2 Buttons.
Auf klick der Buttons öffnet sich ein weiteres Fenster.

Bisdahinn alles schick.

Wenn aber nun eins der beiden Fenster geöffnet ist, und ich die MainForm schliesse hängt sich das Programm in einer Endlosschleife fest und das obwohl ich vor dem schliessen ein WM_CLOSE an die Fenster schicke.

Mein Problem ist, ich finde einfach den Fehler nicht. Wieso sich das Programm dann festhängt.

Kann mir da einer weiterhelfen und weiß wo genau mein Fehler da liegt, und wie ich das korrigieren kann?

Habe das kleine Testprojekt angehangen.
Angehängte Dateien
Dateityp: zip test.zip (19,1 KB, 8x aufgerufen)
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 13:33
Wenn die Mainform "first form ist" dann solltest du nur hier die messagen behandeln
andernfalls hängt die Anwendung in den anderen Form's bei GetMessage.

Ausblenden.. bzw entfernen in Form1 und Form2

Delphi-Quellcode:
while GetMessage(msg, 0, 0, 0) do
      begin
        if IsDialogMessage(hTest1Wnd, msg) = FALSE then
          begin
            TranslateMessage(msg);
            DispatchMessage(msg);
          end;
      end;
Frage mich auch warum du einen zugriff auf die Hauptform überhaupt zuläßt
Schalte diese doch auf enabled = False wenn du schon modale Forms öffen willst.

Auch darf dann in Form1 und Form2 ein
Delphi-Quellcode:
    WM_DESTROY:
      begin;
        PostQuitMessage(0);
      end;
nicht behandelt werden da du dann die gesamte Anwendung dadurch beendest.

Ein
Delphi-Quellcode:
    WM_CLOSE:
      begin
        DestroyWindow(hWnd);
      end;
sollte ausreichen um das Fenster korrekt zu beenden.

gruss

Geändert von EWeiss (17. Jan 2013 um 13:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 14:18
Also ich will die Form nicht disablen, da alle noch nutzbar sein sollen, auch wenn die Child Fenster geöffnet sind.

Aber durch dich hab ich trotzdem endlich die Lösung gefunden.
Die eigentlich auch klar war

Ich muss nachtürlich in der Nachrichtenschleife der Childs auf die WM_CLOSE Message reagieren. Dann funktioniert es wie es soll:

Delphi-Quellcode:
    while GetMessage(msg, 0, 0, 0) do
      begin
        if IsDialogMessage(hTest1Wnd, msg) = FALSE then
          begin
            if Msg.message = WM_CLOSE then Break;
            TranslateMessage(msg);
            DispatchMessage(msg);
          end;
      end;
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 14:21
GetMessage sollte nur in der Hauptform behandelt werden.

Aber gut jeder wie er will

gruss
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 14:33
Sorry doppel post..
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)

Geändert von lbccaleb (17. Jan 2013 um 14:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 14:35
Ich weiß nicht genau wie ich GetMessage aus den Childs rausbekommen soll?!
Wie würdest du das denn machen?

Was ist denn mein Message Handler in den Fenstern?

Edit:

Würdest du vllt. oben das gepostete Bsp. mal anpassen wie du es meinst? Das wäre sehr nett

Edit2: Ohh wieso hat er das Edit als neuen Beitrag verfasst
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)

Geändert von lbccaleb (17. Jan 2013 um 14:38 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 14:48
Bitte

Zitat:
Was ist denn mein Message Handler in den Fenstern?
Wenn ich nicht falsch liege der aus dem der Thread gestartet wurde.
Pro Thread kann/könnte man einen Message Handler verwenden da du das 2 Fenster aus dem Thread der MainForm aufrufst
benötigst du hier keinen weiteren Handler. (meiner erfahrung nach )

gruss

Geändert von EWeiss (11. Jul 2019 um 17:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#8

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 15:00
Macht doch bitte aus
Zitat:
if IsDialogMessage(hAppWnd, msg) = FALSE then
Delphi-Quellcode:
if not IsDialogMessage(hAppWnd, msg) then
  ...
Ich bekomme immer Augenkrebs bei Boolean-Vergleichen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 15:02
Zitat:
Ich bekomme immer Augenkrebs bei Boolean-Vergleichen
Oder Netzhautablösung Hehehehhe

Spass beiseite ist nur ein kosmetischer Fehler.
Wenn der Compiler damit nicht klar kommt dann taugt er einfach nix.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: [nonVCL] Endlosschleife mit 2 Fenstern

  Alt 17. Jan 2013, 15:06
Vielen Dank!

Ich war immer in dem Glauben das ich für jedes Fenster nen eigenen Message Handler brauche. Da hab ich mich wohl kräftig geirrt
Ist aufjedenfall abgespeichert
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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