WSAAsyncSelect() in DLL
-
Ich möchte gerne meine TCP/IP- Kommunikation in einen DLL verlagern. Bei der Funktion WSAAsyncSelect(SOCKET s, HWND hWnd,..) ist als Parameter immer ein Windowshandler anzugeben. Diesen habe ich versucht über verschiedene Funktionen (z.B. AfxGetApp()->GetMainWnd()->m_hWnd) zu definieren. Leider läuft diese Funktion in der DLL immer schief.
Hat hier jemand einen Idee?
-
Wieso, bzw. besser: WIE, willst du
WSAAsyncSelect
in der DLL verwenden, wenn du in der DLL kein Fenster hast???=> Verwende
WSAEventSelect
oder schlicht und ergreifendselect
.
=> ODER erstelle dir ein "Message Window" *, und übergib das Handle auf dieses.Oder lass den
select
Quargel gleich weg, und verwende IO Completion Ports stattdessen.*: Einfach ein unsichtbares Fenster, welches du nur zu dem Zweck erstellst damit du eben ein Fenster hast, das Nachrichten empfangen kann.
-
Vor allem: Was hat das mit einer DLL zu tun?
Letzten Endes ist eine DLL nur ein Code-Behälter und dieser Code wird aus einem oder mehreren Threads aufgerufen... also ist nichts anders...
-
Hihi, Martin du Schlingel
Gerade beim Thema MFC und DLLs ist das ja nicht so - Stichwort
AFX_MANAGE_STATE
und so...
Bzw. gibt's bei MFC DLLs nicht auch eine Variante wo man überAfxGetApp()
nicht das Applikations-Objekt der Anwendung, sondern das der DLL zurückbekommt?
("Regular DLL using MFC" oder wie das heisst)