#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
#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;
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 );
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
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
};
// ----------------------------------------------------------------------------
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
// 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
wxDialUpManagerMSW::wxDialUpManagerMSW()
: m_timerStatusPolling(this),
- m_dllRas(_T("RASAPI32"))
+ m_dllRas(wxT("RASAPI32"))
{
// initialize our data
m_autoCheckLevel = 0;
// 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 ) \
{ \
// 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);
{
if ( !SetEvent(m_data->hEventQuit) )
{
- wxLogLastError(_T("SetEvent(RasThreadQuit)"));
+ wxLogLastError(wxT("SetEvent(RasThreadQuit)"));
}
else // sent quit request to the background thread
{
m_hThread = 0;
}
- if ( m_data )
- {
- delete m_data;
- m_data = NULL;
- }
+ wxDELETE(m_data);
}
// ----------------------------------------------------------------------------
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 )
{
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 )
}
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
{
// 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 )
// 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);
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();
err,
wxSysErrorMsg(err)
);
-#endif // __WXDEBUG__
// no sense in continuing, who knows if the handles we're
// waiting for even exist yet...