modale Dialoge öffnen sich nicht oberhalb des Aufrufenden
-
Tja also folgendes.
Wenn ich in meinem Hauptdialog einen anderen, selbsterstellten Dialog modal öffne, dann muss ich immer erst <alt> drücken, damit ich diesen sehen kann.
Gestern war das noch nicht und ich wüsste auch nicht, was ich heute gemacht haben soll, sodass dieses seltsame Verhalten auftritt.
Weis wer, woran das liegt und wie ich es wieder wegbekomme, sodass ich die Dialoge gleich von Startweg sehe?
-
keiner ne Idee woran das liegt? Bei AfxMessageBox passiert dasselbe oO
Komischerweise bei CFileDialog nicht
-
wie erstellst du den diesen selbsterstellten dialog.
ist das ein resourcen dialog der in der *.rc definiert wurde oder einfach so mit create und haste ihm dann die richtigen Styles mitgegeben.wie schrieb CStoll gestern lol zu geil
CStoll schrieb:
zeig doch mal etwas mehr Code, damit man den Fehler in Natura beobachten kann.(meine Kristallkugel hat leider Totalschaden, daher kann ich nicht von hier aus erkennen, was du (falsch) gemacht hast)
NEW EDIT: zitat angepasst
-
zu deinem Quote der Gag mit der Kristallkugel ist alt

Zweites wüsst ich nicht wie ich zu meinem Problem relevanten Code posten soll!
Da gibts keine spezifische Stelle. Wie ich oben schon geschrieben habe, nutze ich DoModal() und rufe nicht selber Create() auf.Ich habe eigentlich auch nichts an den Dialogoptionen geändert, soweit ich mich erinnern kann. Hab den ganzen Tag eigentlich nur an einer abgeleitetet Klasse von CStatic mit OpenGL-Unterstützung gearbeitet.
-
Sooooo ich weis jetzt die Ursache, hab aber keine Ahnung wie das Zustande kommt:
ich habe mir von CStatic ne Klasse abgeleitet, da das Verhalten ein bissel angepasst, aufm Dialog einfach die Conrtrolvariable von CStatic in der Header-Datei der zugehörigen Klasse durch meine neue ersetzt.
Funktioniert auch soweit, beschert mir aber dieses tolle Verhalten.
Ich hab keine Ahnung, was da wieder abgeht in der MFC.
Weis wer woran das liegt????überschrieben in meinem neuen Static habe ich die WM_PAINT, diverse Mausereignisse, das wars
Und komischerweise der CFileDialog von der MFC der kommt ja sofort ?????
-
Pellaeon schrieb:
überschrieben in meinem neuen Static habe ich die WM_PAINT, diverse Mausereignisse, das wars
Und komischerweise der CFileDialog von der MFC der kommt ja sofort ?????Dann hast du womöglich vergessen, in deiner OnPaint() die Standard-Behandlung CStatic::OnPaint() aufzurufen.
PS: Ja, der Witz mit der Kristallkugel ist alt - aber imho die beste Art zu sagen, daß wir nicht hellsehen können

-
CStoll schrieb:
Pellaeon schrieb:
überschrieben in meinem neuen Static habe ich die WM_PAINT, diverse Mausereignisse, das wars
Und komischerweise der CFileDialog von der MFC der kommt ja sofort ?????Dann hast du womöglich vergessen, in deiner OnPaint() die Standard-Behandlung CStatic::OnPaint() aufzurufen.
PS: Ja, der Witz mit der Kristallkugel ist alt - aber imho die beste Art zu sagen, daß wir nicht hellsehen können

Big Thx, das wars.
Aber bitte, kannst du mir einen kurzen Abriss sagen, warum die OnPaint dafür sorgt, dass die anderen DIalog in den Vordergrund kommen?
Ich hatte nämlich eigentlich absichtlich nicht die OnPaint() aufgerufen, weil ich die Oberfläche des Static in meiner Klasse selbst voll zeichne.Hab ich shcon Thx gesagt?

-
Genau begründen kann ich es nicht, nur vermuten. Und vermutlich hängt es damit zusammen, daß WM_PAINT noch etwas mehr macht als "nur" das Bildschirmfenster zu zeichnen.
Mal ein Auszug aus der MSDN zum Thema WM_PAINT:
BeginPaint sets the update region of a window to NULL. This clears the region, preventing it from generating subsequent WM_PAINT messages. If an application processes a WM_PAINT message but does not call BeginPaint or otherwise clear the update region, the application continues to receive WM_PAINT messages as long as the region is not empty. In all cases, an application must clear the update region before returning from the WM_PAINT message.