X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/32524c8fb857819d408fc4b90fd00ce96d65f6db..1d6560d796aefb5dbdf217109767b1054c68c291:/src/msw/gsockmsw.cpp?ds=sidebyside diff --git a/src/msw/gsockmsw.cpp b/src/msw/gsockmsw.cpp index 4e2622f8f4..df90c628ad 100644 --- a/src/msw/gsockmsw.cpp +++ b/src/msw/gsockmsw.cpp @@ -1,12 +1,19 @@ /* ------------------------------------------------------------------------- * Project: GSocket (Generic Socket) - * Name: gsockmsw.c + * Name: gsockmsw.cpp * Author: Guillermo Rodriguez Garcia * Purpose: GSocket GUI-specific MSW code * CVSID: $Id$ * ------------------------------------------------------------------------- */ +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + /* * TODO: for WinCE we need to replace WSAAsyncSelect * (Windows message-based notification of network events for a socket) @@ -15,10 +22,6 @@ * using select() and sends a message to the main thread. */ -/* - * PLEASE don't put C++ comments here - this is a C source file. - */ - /* including rasasync.h (included from windows.h itself included from * wx/setup.h and/or winsock.h results in this warning for * RPCNOTIFICATION_ROUTINE @@ -55,7 +58,7 @@ #include "wx/msw/gsockmsw.h" #include "wx/gsocket.h" -extern "C" HINSTANCE wxGetInstance(void); +extern "C" WXDLLIMPEXP_BASE HINSTANCE wxGetInstance(void); #define INSTANCE wxGetInstance() #else @@ -67,6 +70,7 @@ extern "C" HINSTANCE wxGetInstance(void); * be available and it must contain the app's instance * handle. */ +extern HINSTANCE hInst; #define INSTANCE hInst #endif /* __GSOCKET_STANDALONE__ */ @@ -109,9 +113,10 @@ wxCreateHiddenWindow(LPCTSTR *pclassname, LPCTSTR classname, WNDPROC wndproc); typedef int (PASCAL *WSAAsyncSelectFunc)(SOCKET,HWND,u_int,long); +LRESULT CALLBACK _GSocket_Internal_WinProc(HWND, UINT, WPARAM, LPARAM); + /* Global variables */ -extern HINSTANCE INSTANCE; static HWND hWin; static CRITICAL_SECTION critical; static GSocket* socketList[MAXSOCKETS]; @@ -119,9 +124,12 @@ static int firstAvailable; static WSAAsyncSelectFunc gs_WSAAsyncSelect = NULL; static HMODULE gs_wsock32dll = 0; +bool GSocketGUIFunctionsTableConcrete::CanUseEventLoop() +{ return true; } + /* Global initializers */ -int _GSocket_GUI_Init(void) +bool GSocketGUIFunctionsTableConcrete::OnInit() { static LPCTSTR pclassname = NULL; int i; @@ -129,7 +137,7 @@ int _GSocket_GUI_Init(void) /* Create internal window for event notifications */ hWin = wxCreateHiddenWindow(&pclassname, CLASSNAME, _GSocket_Internal_WinProc); if (!hWin) - return FALSE; + return false; /* Initialize socket list */ InitializeCriticalSection(&critical); @@ -145,16 +153,16 @@ int _GSocket_GUI_Init(void) sockets): */ gs_wsock32dll = LoadLibraryA("wsock32.dll"); if (!gs_wsock32dll) - return FALSE; + return false; gs_WSAAsyncSelect =(WSAAsyncSelectFunc)GetProcAddress(gs_wsock32dll, "WSAAsyncSelect"); if (!gs_WSAAsyncSelect) - return FALSE; + return false; - return TRUE; + return true; } -void _GSocket_GUI_Cleanup(void) +void GSocketGUIFunctionsTableConcrete::OnExit() { /* Destroy internal window */ DestroyWindow(hWin); @@ -173,7 +181,7 @@ void _GSocket_GUI_Cleanup(void) /* Per-socket GUI initialization / cleanup */ -int _GSocket_GUI_Init_Socket(GSocket *socket) +bool GSocketGUIFunctionsTableConcrete::Init_Socket(GSocket *socket) { int i; @@ -188,7 +196,7 @@ int _GSocket_GUI_Init_Socket(GSocket *socket) if (i == firstAvailable) /* abort! */ { LeaveCriticalSection(&critical); - return FALSE; + return false; } } socketList[i] = socket; @@ -197,10 +205,10 @@ int _GSocket_GUI_Init_Socket(GSocket *socket) LeaveCriticalSection(&critical); - return TRUE; + return true; } -void _GSocket_GUI_Destroy_Socket(GSocket *socket) +void GSocketGUIFunctionsTableConcrete::Destroy_Socket(GSocket *socket) { /* Remove the socket from the list */ EnterCriticalSection(&critical); @@ -284,7 +292,7 @@ LRESULT CALLBACK _GSocket_Internal_WinProc(HWND hWnd, * events for internal processing, but we will only notify users * when an appropiate callback function has been installed. */ -void _GSocket_Enable_Events(GSocket *socket) +void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket) { assert (socket != NULL); @@ -303,7 +311,7 @@ void _GSocket_Enable_Events(GSocket *socket) /* _GSocket_Disable_Events: * Disable event notifications (when shutdowning the socket) */ -void _GSocket_Disable_Events(GSocket *socket) +void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket) { assert (socket != NULL);