[C++] AfxMessageBox automatisch schließen? Anw. minimieren und in die Iconbar versch.

WantToKnow

Mitglied

Gute Nacht allerseits,

Brauche wieder einmal einen Anhaltspunkt! :-(

Ist eine dialogbasierte Anwendung mit Unterstützung der MFC unter MS Visual 6.0 C++ (OS Windows XP Prof.).

Wie kann man eine aufgerufene AfxMessageBox automatisch schließen?
Sozusagen den Klick auf einen Button selbst durchführen ohne dafür den Anwender
zu gebrauchen. So wie es mir scheint ist das mit MFC nicht möglich.

Wo ich schon da bin... :rolleyes:

Haben "Callback-Funktionen" in Bezug auf "CWnd::SetTimer()" irgendeinen Vorteil oder Nachteil im Gegensatz zur "WM_TIMER" Nachricht?
Man kann die Funktionen direkt aufrufen oder in der Behandelungsroutine der WM_TIMER Nachricht.
Mehr fällt mir da nicht ein.

Bitte um Hilfe.

Wie immer vielen Dank im Voraus! :)
 
Zuletzt bearbeitet:

Wenn Du das Fensterhandle der MessageBox hast, kannst Du ihr ja eine WM_CLOSE - Nachricht schicken. Das Handle könntest du mit
Code:
CWnd::FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName)
bekommen. Die Nachricht kannst Du dann mit
Code:
::PostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
schicken
 

Fensterhandle hatte ich auch im Kopf.

Aber.. AfxMessageBox ist keiner Klasse zugeordnet, oder etwa doch? :confused:
Und ich muss die Klasse und den Fensternamen angeben. :eek:

Kenne weder die Klasse noch den Fensternamen.. bin jetzt aufgeschmissen.

Beispiel: "AfxMessageBox("Hallo!");"
:(

PS: Bin in der MSDN fleißig am Suchen. Helfen dürft aber doch noch mal. :-(
 
moin


Oder du benutzt MessageBox statt AfxMessageBox. Dann kannst du der Messagebox einen Titel geben, nach der du dann ohn Probleme suchen kannst.


mfg
umbrasaxum
 

Ja, hatte ich auch schon gelesen.

Was anderes bleibt mir ja nicht übrig. Oder ich mache es mit CWnd::MessageBox().
Und ist die MessageBox ein Kind- oder Elternfenster?

Ich muss jetzt mal rumprobieren..

"Haben "Callback-Funktionen" in Bezug auf "CWnd::SetTimer()" irgendeinen Vorteil oder Nachteil im Gegensatz zur "WM_TIMER" Nachricht?
Man kann die Funktionen direkt aufrufen oder in der Behandelungsroutine der WM_TIMER Nachricht.
Mehr fällt mir da nicht ein."

Wenn ihr nochmal so nett seid. =)
 

Der meines Wissens einzige Vorteil der Callback-Funktionen wäre, daß man sie auch noch woanders verwenden könnte. Die Nachrichtenbehandlungsfunktion würde nur vom Message-Handler bei genau dieser Nachricht aufgerufen. Allerdings sollte man sowieso im Message-Handler nicht zuviel Funktionalität unterbringen sondern eher entsprechende Funktionen aufrufen.
Wenn Du Callbackfunktionen verwendest, so müssen diese auf jeden Fall globale Funktionen oder statische Member-Funktionen einer Klasse sein. Die Funktionen, die Du aus dem Message-Handler aufrufst, können normale Member-Funktionen Deiner View- oder Fensterklasse sein.
 

Erledigt!

Ich poste hier mal die Lösung für die nachkommenden User.

Nehmen wir an die Anwendung hat den Namen "TEST".
Der Name in der Titelleiste ist der Name der Anwendung.

Die AfxMessageBox ist ein Kinfendfenster der Anwendung und erhält beim Aufruf den Namen der Anwendung.
Code:
HWND FindWindow(
  LPCTSTR lpClassName,  // pointer to class name
  LPCTSTR lpWindowName  // pointer to window name
);

Sucht nach einem Fenster und gibt die Fenster-ID zurück.
Code:
HWND hWnd; //Handle für das Fenster (Ist eigentlich nur eine Fenster-ID)
hWnd = ::FindWindowEx(0,"TEST"); //Handle beschaffen 
::PostMessage(hWnd,WM_CLOSE,0,0); //WM_CLOSE Nachricht an die MessageBox schicken.
Das wars.

Thx to jokey2 and Tobias K.

PS: Mann kann ja mit euch ziemlich viel lernen! :)
 
Zuletzt bearbeitet:

Freut mich, wenn ich helfen konnte.
Wenn der Thread erledigt ist, dann markiere ihn auch bitte dementsprechend (oder dem entsprechend? Sch... neue Rechtschreibung!). Das hilft bei der Übersicht.
 
Zurück