Funktion zum testen, ob Dialogfenster bereits exisitiert (aus SDI heraus)
-
Hallo,
ich möchte in einer SDI Anwendung testen, ob ein anderes Dialogfenster bereits exisitiert oder nicht.
Für einen kleinen Tipp / Code Schnippsel wäre ich sehr dankbar
ciao,
-
Wer erzeugt den Dialog denn?
Du? Dann merk dir doch einfach, dass er offen ist.
Das solltest du aber sowieso schon haben, da du dir den Zeiger ja irgendwo merken musst, um mit dem Dialog zu arbeiten.
-
Hi,
ich wollte über eine Timerfunktion neue Werte in ein Dialogfeld übetragen, wobei das Dialogfeld noch nicht von Anfang an aktiv ist, sondern von dem Benutzer geöffnet werden kann. Wenn ich aber die Funktion UpdateData auf das Dialogfeld anwenden , was evtl. noch nicht geöffnet ist, dann gibt es einen Absturz.
Kann man die UpdateData Funktion mit einer try / catch Variante aufrufen und wenn ja, welcher Fehler müßte in der catch abgefangen werden ?
Gruß,
Matthias
-
Ich glaube, wir haben uns mißverstanden.
Zeig doch mal, wie du das Dialogfeld öffnest, dann kann ich dir daran erklären, was ich meinte.
-
ich würde es etwa so machen:
void OnTimer()//Aufruf durch Timer - generiert Werte und gibt sie an den Dialog { //... if(m_dlg) m_dlg->Update(...); } void OnSetDlg()//Benutzer öffnet Dialog { m_dlg=new CMyDialog(...); // Dialog starten }
(dabei ist m_dlg ein Pointer auf einen Dialog, den du im Ctor mit 0 initialisierst - und bei einem eventuellen "Exit Dialog" auch wieder auf 0 zurücksetzt)
-
Hallo zusammen,
ich habe gestern noch ein paar Stunden rumgebastelt und eine ähnliche Lösung gefunden:
ich frage eine Variable im Timer ab, welche ich durch die OnInitDialog (Dialog) Funktion setzte und durch die OnDestroy (Dialog) auch wieder zurücksetze
void CSDIBandView::OnTimer(UINT nIDEvent) { .... if (m_dAuswertung.m_bActive == true) { m_dAuswertung.UpdateData(false); } } BOOL CAuswertung::OnInitDialog() { CDialog::OnInitDialog(); // setzt Flag für Fensteraktivität m_bActive = true; return TRUE; // return TRUE unless you set the focus to a control // AUSNAHME: OCX-Eigenschaftenseite muss FALSE zurückgeben. }
Besten Dank nochmal