Programm funktioniert nur mit MessageBox
-
Hey ich habe ein komisches Problem. Schaut euch mal folgenden Code an:
#include <vcl.h> #include <System.Classes.hpp> #include <Vcl.Controls.hpp> #include <Vcl.StdCtrls.hpp> #include <System.Win.ScktComp.hpp> #pragma hdrstop #include <tchar.h> int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { TClientSocket *socket = new TClientSocket(NULL); socket->Host = "127.0.0.1"; socket->Port = 12345; socket->Active = true; MessageBoxA(NULL,"Text", "Caption", NULL); Sleep(5000); socket->Active = false; delete socket; return 0; }
Das funktioniert soweit. Nehme ich allerdings die Zeile mit der MessageBox weg, verbindet sich das Socket nichtmehr.
Hat jemand eine Lösung?
-
Vollständiges Minimalbeispiel bitte.
-
Ich habe den Code im ersten Beitrag vervollständigt.
-
TClientSocket verwendet Windows-Nachrichten. Die werden nur verarbeitet, wenn auch irgendwo eine Nachrichtenschleife läuft, die sich darum kümmert. MessageBox macht das für dich, Sleep nicht.
-
Gibt es eine Möglichkeit dies auch ohne MessageBox (oder Ähnliches) zu realisieren?
-
Ja
MFK schrieb:
, wenn auch irgendwo eine Nachrichtenschleife läuft, die sich darum kümmert.
/* ... */ MSG msg; while(GetMessage(&msg, NULL, 0, 0) > 0) { // TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;
Siehe dazu:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms644928(v=vs.85).aspx#creating_loop