CreateProcess und MessageBox

partitionist

Erfahrenes Mitglied
Ich möchte mit Hilfe von MessageBox Nachrichten zum Server senden, sobald aber eine gesendet wurde wartet der client so lange bis die meldung geschlossen wird, dann kann man weiter senden deshalb will ich hier mit CreateProcess arbeiten, nur wie füge ich MessageBox ein?
 
Moin moin,

Hast du dir schon mal SendMessage bzw. PostMessage angeschaut? Eine wartet bis die Nachricht wirklich angekommen ist und die andere geht sofort weiter. welche es ist weiss ich aber mal wieder nicht. :suchen: Tipp: PostMessage:-)

Gruss Michael
 
moin


Das Problem ist die MessageBox an sich, weil sie Modal (oder war es nicht Modal) ist). Das "Problem" hast du eigentlich immer wenn du sie so benutzt.


mfg
umbrasaxum
 
Du brauchst nicht gleich einen neuen Prozess, aber evtl. kannst du die Messagebox in einem eigenen Thread aufrufen.
Die Funktion dafür wäre _beginthread oder besser CreateThread()

Hier mal ein kleines Beispiel:
Code:
//Thread Funktion
DWORD APIENTRY show_msg_box(void * msg)
{
  MessageBox(NULL, (char*)msg, NULL, MB_OK);
  return 0;
}

//in deinem Code so aufrufen:
CreateThread(NULL, NULL, show_msg_box, msg, NULL, NULL);
 
@ C Coder: Vielen Dank, jetzt gehts. Ne Frage nebenbei wie kann ich der Funktion den Fenstertitel als pararmeter übergeben, also der dritte Paramter von MessageBox.
Komisch ist noch, da mein projekt ja unter Single Threaded Debugen läuft und dieser code trotzdem funktioniert und ich dachte man muss sein projekt nach Multi Threaded umstellen
 
Create Thread hat einen freien Parameter vom Typ LPVOID, welcher an die Threadfunktion übergeben wird. In MCoders Beispiel wird dort die Nachricht (msg) übergeben. Stattdessen könntest Du ja einen Zeiger auf ein struct übergeben, welches die msg und den Fenstertitel enthält.
 
Sowas hätte ich am liebsten doch das geht nicht:

Code:
DWORD APIENTRY show_msg_box(void * msg, string user)
{
	MessageBox(NULL, (char*)msg, user, MB_OK);
	return 0;
}

Ich will ja einmal die message senden und den benutzernamen aber ich bekomme ein fehler, wie macht man das
 
Du kannst nur einen void-Zeiger an die Thread-Funktion übergeben. Also packe alle Daten, die Du brauchst in ein struct und übergebe einen Zeiger darauf.
 
Zurück