FindWindow überprüfen
-
Hi,
mit FindWindow prüfe ich ob ein nicht modaler Dialog meiner Anwendung
bereits durch den Nutzer "abgeschossen"/beendet wurde.HWND meindia=::FindWindow(NULL,"Mein Dialog"); if(!meindia) { MessageBox("Der Dialog ist nicht mehr da!"); }else if (meindia) { MessageBox("Der Dialog ist noch da und muss nicht neu gestartet werden!",MB_ICONINFORMATION); }Diese Abfrage wird immer gestartet, sobald der Nutzer diesen Dialog
nochmal aufrufen will. Damit möchte ich verhindern, dass der Dialog
plötzlich 100 mal da ist
Nur ist es jetzt so, dass ich den Dialog mal mit Alt+F4 beendet habe und
dann meine Funktion noch immer sagt, dass der Dialog noch da ist
Liegts evtl. daran?
MSDN: This function does not search child windows.
-
Ich seh schon dass ich FindWindoEx nehmen muss. Aber hier findet er mir
mein childfenster nicht?Aber müsste doch so gehen. Ich seh den Fehler nicht!
HWND parent = ::FindWindow(NULL, "Mein Test Prog"); HWND child = ::FindWindowEx(parent, NULL, NULL, "Mein Dialog"); if(!child) { MessageBox("Der Dialog ist nicht mehr da!"); }else if (child) { MessageBox("Der Dialog ist noch da und muss nicht neu gestartet werden!",MB_ICONINFORMATION); }
-
Vielleicht hat noch jemand ne Ahnung warum es so nicht geht.
Habe erstmal ne Lösung via ->DestroyWindow.
-
Machst Du das für ein Fenster Deiner Applikation oder ist das Fenster aus einer anderen Applikation?
Wenn es innerhalb Deiner Applikation ist, wäre es besser ein Flag zu verwenden!
-
Ja mache ich für meine Anwendung. *Dummguck*..Flag..?

Bitte um kurze Erläuterung.
-
hmm
du könntest es auch wie folgt machen setzt den code in die InitInstance() der ...App Classe bevor dein Hauptdialog mit DoModal gestartet wirdHANDLE handle = CreateMutex(NULL, true, "NameDeinerAnwendung"); if(GetLastError() != ERROR_SUCCESS) { MessageBox(0,"Anwendung wurde schon gestartet!!", "Warnung", MB_ICONWARNING); return FALSE; } ..... CHauptDlg dlg; m_pMainWnd = &dlg; int nResponse = dlg.DoModal(); if (nResponse == IDOK) ......