WSAAsyncSelect in Klasse
-
Also ich habe eine Klasse, in der ich WSAAsyncSelect aufrufen will. Diese Funktion benötigt ein Windowhandle. Da ich alles intern in der Klasse regeln will, möchte ich hier nicht das Handle des Hauptfensters nehemen.
Haltet ihr es jetzt für sinnvoll, beim Kontruktor (oder wo auch immer) jetzt ein Fenster zu erstellen das dann die socket-notify Nachrichten engegennimmt?
Danke
cu para
-
Wir können garnichts für sinnvoll erachten, weil wir nicht wissen, was deine Klasse so macht. Es gibt zwei Möglichkeiten. Die erste ist, der Klasse ein HWND-Member hinzuzufügen, der dann per Set-Methode oder Konstruktor gesetzt wird. Die zweite ist, der Methode, in der WSAAsyncSelect aufgerufen werden soll, einen HWND-Parameter hinzuzufügen.
-
Ja also ich habe es jetzt so gemacht, dass das Handle des Hauptfensters per Kontruktor übergeben wird.
danke!
cu para
-
Oder du benutzt einfach WSAEventSelect. Dann brauchst du kein HWND, das die Nachrichten erhält. Du brauchst ein Event; das wird signalisiert, sobald etwas da ist. Dieses Warten könnte man z.B. in einen eigenen Thread packen.
-
Wozu nochmal warten, wenn es schon ein Fenster gibt, das wartet?!
-
Aus den Postings geht nicht hervor, dass das Hauptfenster wartet:
Haltet ihr es jetzt für sinnvoll, beim Kontruktor (oder wo auch immer) jetzt ein Fenster zu erstellen das dann die socket-notify Nachrichten engegennimmt?
Er will alles klassenintern regeln. Dafür eignet sich IMO ein Event besser als ein Fenster.
-
Original erstellt von cd9000:
Oder du benutzt einfach WSAEventSelect. Dann brauchst du kein HWND, das die Nachrichten erhält. Du brauchst ein Event; das wird signalisiert, sobald etwas da ist. Dieses Warten könnte man z.B. in einen eigenen Thread packen.Das hört sich gut an!
-
Mmhh? Nur wie benutze ich es? Mir ist der 2 Parameter nicht klar!
-
Schau doch mal in die platform SDK doku.
Ein WSAEVENT erhält man mit WSACreateEvent, gelöscht wird es mit WSACloseEvent.
Mit WSAWaitForMultipleEvents wartet der Thread darauf, dass eines der übergebenen Events signalisiert wird. Welches signalisiert wurde, geht aus dem Rückgabewert hervor.
-
Danke!
Aber:Original erstellt von cd9000:
**Schau doch mal in die platform SDK doku.Und wo bekomme ich diese Doku her?
**
-
Aber eigentlich müsstest du sie schon haben, wenn du mit der WinAPI programmierst.
-
Meinst du das normale Plattform SDK?
-
man bist du dumm. ja!