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 ergreifend select .
    => 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.


  • Mod

    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 über AfxGetApp() nicht das Applikations-Objekt der Anwendung, sondern das der DLL zurückbekommt?
    ("Regular DLL using MFC" oder wie das heisst)


Anmelden zum Antworten