X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e6d4038a8bf3ae178bc89cceaf60a0652749ea9b..96c9640205933ad0673d5af2c96af0816c50160c:/src/msw/dialup.cpp diff --git a/src/msw/dialup.cpp b/src/msw/dialup.cpp index cce425e056..6cc5040544 100644 --- a/src/msw/dialup.cpp +++ b/src/msw/dialup.cpp @@ -39,10 +39,12 @@ #include "wx/generic/choicdgg.h" +#include "wx/msw/private.h" +#include "wx/msw/private/hiddenwin.h" #include "wx/dynlib.h" -DEFINE_EVENT_TYPE(wxEVT_DIALUP_CONNECTED) -DEFINE_EVENT_TYPE(wxEVT_DIALUP_DISCONNECTED) +wxDEFINE_EVENT( wxEVT_DIALUP_CONNECTED, wxDialUpEvent ); +wxDEFINE_EVENT( wxEVT_DIALUP_DISCONNECTED, wxDialUpEvent ); // Doesn't yet compile under VC++ 4, BC++, Watcom C++, // Wine: no wininet.h @@ -65,10 +67,6 @@ DEFINE_EVENT_TYPE(wxEVT_DIALUP_DISCONNECTED) #define INTERNET_CONNECTION_PROXY 4 #endif -// implemented in utils.cpp -extern "C" WXDLLIMPEXP_BASE HWND -wxCreateHiddenWindow(LPCTSTR *pclassname, LPCTSTR classname, WNDPROC wndproc); - static const wxChar * wxMSWDIALUP_WNDCLASSNAME = wxT("_wxDialUpManager_Internal_Class"); static const wxChar *gs_classForDialUpWindow = NULL; @@ -111,7 +109,7 @@ static const wxChar *gs_classForDialUpWindow = NULL; typedef DWORD (APIENTRY * RASVALIDATEENTRYNAME)( LPCSTR, LPCSTR ); typedef DWORD (APIENTRY * RASCONNECTIONNOTIFICATION)( HRASCONN, HANDLE, DWORD ); - static const wxChar gs_funcSuffix = _T('A'); + static const wxChar gs_funcSuffix = wxT('A'); #else // Unicode typedef DWORD (APIENTRY * RASDIAL)( LPRASDIALEXTENSIONS, LPCWSTR, LPRASDIALPARAMSW, DWORD, LPVOID, LPHRASCONN ); typedef DWORD (APIENTRY * RASENUMCONNECTIONS)( LPRASCONNW, LPDWORD, LPDWORD ); @@ -133,7 +131,7 @@ static const wxChar *gs_classForDialUpWindow = NULL; typedef DWORD (APIENTRY * RASVALIDATEENTRYNAME)( LPCWSTR, LPCWSTR ); typedef DWORD (APIENTRY * RASCONNECTIONNOTIFICATION)( HRASCONN, HANDLE, DWORD ); - static const wxChar gs_funcSuffix = _T('W'); + static const wxChar gs_funcSuffix = wxT('W'); #endif // ASCII/Unicode // structure passed to the secondary thread @@ -163,7 +161,7 @@ struct WXDLLEXPORT wxRasThreadData HANDLE hEventRas, // automatic event which RAS signals when status changes hEventQuit; // manual event which we signal when we terminate - class WXDLLEXPORT wxDialUpManagerMSW *dialUpManager; // the owner + class WXDLLIMPEXP_FWD_CORE wxDialUpManagerMSW *dialUpManager; // the owner }; // ---------------------------------------------------------------------------- @@ -237,7 +235,7 @@ private: private: wxDialUpManagerMSW *m_dialUpManager; - DECLARE_NO_COPY_CLASS(RasTimer) + wxDECLARE_NO_COPY_CLASS(RasTimer); } m_timerStatusPolling; // thread handle for the thread sitting on connection change event @@ -288,7 +286,7 @@ private: // this flag tells us whether a call to RasDial() is in progress static wxDialUpManagerMSW *ms_dialer; - DECLARE_NO_COPY_CLASS(wxDialUpManagerMSW) + wxDECLARE_NO_COPY_CLASS(wxDialUpManagerMSW); }; // module to destroy helper window created by wxDialUpManagerMSW @@ -384,7 +382,7 @@ wxDialUpManager *wxDialUpManager::Create() wxDialUpManagerMSW::wxDialUpManagerMSW() : m_timerStatusPolling(this), - m_dllRas(_T("RASAPI32")) + m_dllRas(wxT("RASAPI32")) { // initialize our data m_autoCheckLevel = 0; @@ -405,7 +403,7 @@ wxDialUpManagerMSW::wxDialUpManagerMSW() // get the function from rasapi32.dll and abort if it's not found #define RESOLVE_RAS_FUNCTION(type, name) \ - ms_pfn##name = (type)m_dllRas.GetSymbol( wxString(_T(#name)) \ + ms_pfn##name = (type)m_dllRas.GetSymbol( wxString(wxT(#name)) \ + gs_funcSuffix); \ if ( !ms_pfn##name ) \ { \ @@ -416,7 +414,7 @@ wxDialUpManagerMSW::wxDialUpManagerMSW() // a variant of above macro which doesn't abort if the function is // not found in the DLL #define RESOLVE_OPTIONAL_RAS_FUNCTION(type, name) \ - ms_pfn##name = (type)m_dllRas.GetSymbol( wxString(_T(#name)) \ + ms_pfn##name = (type)m_dllRas.GetSymbol( wxString(wxT(#name)) \ + gs_funcSuffix); RESOLVE_RAS_FUNCTION(RASDIAL, RasDial); @@ -582,7 +580,7 @@ void wxDialUpManagerMSW::CleanUpThreadData() { if ( !SetEvent(m_data->hEventQuit) ) { - wxLogLastError(_T("SetEvent(RasThreadQuit)")); + wxLogLastError(wxT("SetEvent(RasThreadQuit)")); } else // sent quit request to the background thread { @@ -596,11 +594,7 @@ void wxDialUpManagerMSW::CleanUpThreadData() m_hThread = 0; } - if ( m_data ) - { - delete m_data; - m_data = NULL; - } + wxDELETE(m_data); } // ---------------------------------------------------------------------------- @@ -709,7 +703,13 @@ size_t wxDialUpManagerMSW::GetISPNames(wxArrayString& names) const if ( dwRet == ERROR_BUFFER_TOO_SMALL ) { // reallocate the buffer - rasEntries = (RASENTRYNAME *)realloc(rasEntries, size); + void *n = realloc(rasEntries, size); + if (n == NULL) + { + free(rasEntries); + return 0; + } + rasEntries = (RASENTRYNAME *)n; } else if ( dwRet != 0 ) { @@ -801,7 +801,7 @@ bool wxDialUpManagerMSW::Dial(const wxString& nameOfISP, RASDIALPARAMS rasDialParams; rasDialParams.dwSize = sizeof(rasDialParams); - wxStrncpy(rasDialParams.szEntryName, entryName, RAS_MaxEntryName); + wxStrlcpy(rasDialParams.szEntryName, entryName.c_str(), RAS_MaxEntryName); // do we have the username and password? if ( !username || !password ) @@ -823,14 +823,13 @@ bool wxDialUpManagerMSW::Dial(const wxString& nameOfISP, } else { - wxStrncpy(rasDialParams.szUserName, username, UNLEN); - wxStrncpy(rasDialParams.szPassword, password, PWLEN); + wxStrlcpy(rasDialParams.szUserName, username.c_str(), UNLEN); + wxStrlcpy(rasDialParams.szPassword, password.c_str(), PWLEN); } // default values for other fields rasDialParams.szPhoneNumber[0] = '\0'; rasDialParams.szCallbackNumber[0] = '\0'; - rasDialParams.szCallbackNumber[0] = '\0'; rasDialParams.szDomain[0] = '*'; rasDialParams.szDomain[1] = '\0'; @@ -877,11 +876,15 @@ bool wxDialUpManagerMSW::Dial(const wxString& nameOfISP, { // can't pass a wxWCharBuffer through ( ... ) if ( async ) + { wxLogError(_("Failed to initiate dialup connection: %s"), GetErrorString(dwRet).c_str()); + } else + { wxLogError(_("Failed to establish dialup connection: %s"), GetErrorString(dwRet).c_str()); + } // we should still call RasHangUp() if we got a non 0 connection if ( ms_hRasConnection ) @@ -974,14 +977,14 @@ bool wxDialUpManagerMSW::IsAlwaysOnline() const // but we allow multiple instances of wxDialUpManagerMSW so // we might as well use the ref counted version here too. - wxDynamicLibrary hDll(_T("WININET")); + wxDynamicLibrary hDll(wxT("WININET")); if ( hDll.IsLoaded() ) { typedef BOOL (WINAPI *INTERNETGETCONNECTEDSTATE)(LPDWORD, DWORD); INTERNETGETCONNECTEDSTATE pfnInternetGetConnectedState; #define RESOLVE_FUNCTION(type, name) \ - pfn##name = (type)hDll.GetSymbol(_T(#name)) + pfn##name = (type)hDll.GetSymbol(wxT(#name)) RESOLVE_FUNCTION(INTERNETGETCONNECTEDSTATE, InternetGetConnectedState); @@ -1259,11 +1262,10 @@ static DWORD wxRasMonitorThread(wxRasThreadData *data) break; default: - wxFAIL_MSG( _T("unexpected return of WaitForMultipleObjects()") ); + wxFAIL_MSG( wxT("unexpected return of WaitForMultipleObjects()") ); // fall through case WAIT_FAILED: -#ifdef __WXDEBUG__ // using wxLogLastError() from here is dangerous: we risk to // deadlock the main thread if wxLog sends output to GUI DWORD err = GetLastError(); @@ -1274,7 +1276,6 @@ static DWORD wxRasMonitorThread(wxRasThreadData *data) err, wxSysErrorMsg(err) ); -#endif // __WXDEBUG__ // no sense in continuing, who knows if the handles we're // waiting for even exist yet...