Funktion nach dem Laden des Dialogs ausführen
-
Hi,
ich stehe auf dem Schlauch.
Ich habe eine dialogbasierte Anwendung und möchte direkt nach dem Laden des Dialogs eine Funktion ausführen.
So simpel es klingt ( und wahrscheinlich ist ), ich weiß nicht, wie ich das realisiere, da ich kein WM finde, die direkt nach dem Laden des Dialogs ausgeführt wird....
So etwas wie WM_POSTLOADDIALOG
Ich bin für alle hinweise dankbar...
Grüße & Danke
BOA
-
OnInitDialog (nach CDialog::OnInitDialog sind alle Controls initialisiert).
-
_matze schrieb:
OnInitDialog (nach CDialog::OnInitDialog sind alle Controls initialisiert).
Hi Matze,
OnInitDialog nutze ich ja für verschiedene "initiale" Dinge.
Der Dialog selbst ist innerhalb der OnInitDialog aber noch nicht sichtbar.Ich möchte den Dialog sichtbar haben und danach sofort eine Funktion ausführen, da dies etwas optisches sein soll, was auf dem Dialog stattfindet...
Mir fällt nur TIMER ein, aber das finde ich irgendwie unsauber...
Grüße & Danke
BOA
-
BOA schrieb:
Mir fällt nur TIMER ein, aber das finde ich irgendwie unsauber...
Ja, daran habe ich auch gerade gedacht. Schön ist es nicht, da hast du Recht. Da muss es doch noch irgendwas geben...
-
OnShowWindow
Wird immer aufgerufen wenn Dialog angezeigt wird oder nicht.
Muss dir was einfallen lassen das deine Func nur einmal abläuft.
-
Unix-Tom schrieb:
OnShowWindow
Wird immer aufgerufen wenn Dialog angezeigt wird oder nicht.
Muss dir was einfallen lassen das deine Func nur einmal abläuft.
Habe ich schon ausprobiert. OnShowWindow wird beim ersten Anzeigen des Dialogs nach Erstellung nicht ausgeführt.
-
BOA schrieb:
_matze schrieb:
OnInitDialog (nach CDialog::OnInitDialog sind alle Controls initialisiert).
Hi Matze,
OnInitDialog nutze ich ja für verschiedene "initiale" Dinge.
Der Dialog selbst ist innerhalb der OnInitDialog aber noch nicht sichtbar.Ich möchte den Dialog sichtbar haben und danach sofort eine Funktion ausführen, da dies etwas optisches sein soll, was auf dem Dialog stattfindet...
Auch dann ist OnInitDialog korrekt. Setze das Template auf Visible, oder führe ShowWindow aus in OnInitDialof (das ist legal), und führe aus was Du willst.
Ichverstehe alerdings nicht, was den Unterschied macht, ob der Dialog "schon" sichtbar ist oder nicht.
-
Martin Richter schrieb:
BOA schrieb:
_matze schrieb:
OnInitDialog (nach CDialog::OnInitDialog sind alle Controls initialisiert).
Hi Matze,
OnInitDialog nutze ich ja für verschiedene "initiale" Dinge.
Der Dialog selbst ist innerhalb der OnInitDialog aber noch nicht sichtbar.Ich möchte den Dialog sichtbar haben und danach sofort eine Funktion ausführen, da dies etwas optisches sein soll, was auf dem Dialog stattfindet...
Auch dann ist OnInitDialog korrekt. Setze das Template auf Visible, oder führe ShowWindow aus in OnInitDialof (das ist legal), und führe aus was Du willst.
Ichverstehe alerdings nicht, was den Unterschied macht, ob der Dialog "schon" sichtbar ist oder nicht.
Hi,
danke für alle Antworten.
Welches Template soll ich auf visible setzen?
Der Showwindow - Hinweis funktioniert leider nicht, da ich nur ein graues Fenster ohne Steuerelemente sehe, wenn ich das von OnInitDialog aufrufe.Der Unterschied ist der, dass der Nutzer nicht denkt, es würde nichts passieren. Im Hintergund soll eine Dateioperation gleich nach Start erfolgen, die ein wenig Zeit in Anspruch nehmen kann.
Ist der Dialog sichtbar, läuft eine Progressbar. Der Nutzer weiß, aha hier lüppt was... Ich warte mal und drück nicht wie ein Bekloppter mal alle Tasten...
Grüße
BOA
-
BOA schrieb:
Der Showwindow - Hinweis funktioniert leider nicht, da ich nur ein graues Fenster ohne Steuerelemente sehe, wenn ich das von OnInitDialog aufrufe.
Und wenn du nach
ShowWindow
nochRedrawWindow
aufrufst?
-
_matze schrieb:
BOA schrieb:
Der Showwindow - Hinweis funktioniert leider nicht, da ich nur ein graues Fenster ohne Steuerelemente sehe, wenn ich das von OnInitDialog aufrufe.
Und wenn du nach
ShowWindow
nochRedrawWindow
aufrufst?Dann ja....
Guter Hinweis, danke...Ich glaube, dass ist ein gangbarer und saubererer Weg, als mit dem Timer.
Ich schau mal, ob das nun alles so funzt, wie ich mir das vorstelle...
Grüße und Danke
BOA
P.S.: Schön, dass es Euch noch alle gibt. War schon lange nicht mehr on hier...
-
Du willst also im Dialogthread eine Dateioperation ausführen?
Du hast dort nur einen Thread und da wird eben der Dialog nicht gezeichnet.
Erstelle einen eigenen Thread und benachrichtige den Dialog das nun alles fertig ist.