// this flag tells us if we're online
static int ms_isConnected;
- // this flag is the result of the call to IsAlwaysOnline() (-1 if not
- // called yet)
- static int ms_isAlwaysOnline;
-
// this flag tells us whether a call to RasDial() is in progress
static wxDialUpManagerMSW *ms_dialer;
};
int wxDialUpManagerMSW::ms_userSpecifiedOnlineStatus = -1;
int wxDialUpManagerMSW::ms_isConnected = -1;
-int wxDialUpManagerMSW::ms_isAlwaysOnline = -1;
wxDialUpManagerMSW *wxDialUpManagerMSW::ms_dialer = NULL;
// ----------------------------------------------------------------------------
{
wxLogError(_("Dial up functions are unavailable because the remote access service (RAS) is not installed on this machine. Please install it."));
}
- else if( ms_pfnRasDial == 0 )
+ else if ( !ms_pfnRasDial )
{
// resolve the functions we need
DWORD dwRet = ms_pfnRasDial
(
- (LPRASDIALEXTENSIONS)NULL, // no extended features
- NULL, // default phone book file (NT only)
+ NULL, // no extended features
+ NULL, // default phone book file (NT only)
&rasDialParams,
- 0, // use callback for notifications
- async ? wxRasDialFunc // the callback
- : 0, // no notifications - sync operation
+ 0, // use callback for notifications
+ async ? (void *)wxRasDialFunc // cast needed for gcc 3.1
+ : 0, // no notifications, sync operation
&ms_hRasConnection
);
if ( dwRet != 0 )
{
-#if wxUSE_UNICODE
- // can't pass a wxWCharBuffer through ( ... )
- wxLogError(_("Failed to %s dialup connection: %s").data(),
- async ? _("initiate").data() : _("establish").data(),
- GetErrorString(dwRet).c_str());
-#else
// can't pass a wxWCharBuffer through ( ... )
wxLogError(_("Failed to %s dialup connection: %s"),
wxString(async ? _("initiate") : _("establish")).c_str(),
GetErrorString(dwRet).c_str());
-#endif
// we should still call RasHangUp() if we got a non 0 connection
if ( ms_hRasConnection )
bool wxDialUpManagerMSW::IsAlwaysOnline() const
{
- // we cache the result (presumably this won't change while the program is
- // running!)
- if ( ms_isAlwaysOnline != -1 )
- {
- return ms_isAlwaysOnline != 0;
- }
+ // assume no permanent connection by default
+ bool isAlwaysOnline = FALSE;
- // try to use WinInet function first
+ // try to use WinInet functions
// NB: we could probably use wxDynamicLibrary here just as well,
// but we allow multiple instances of wxDialUpManagerMSW so
if ( pfnInternetGetConnectedState(&flags, 0 /* reserved */) )
{
// there is some connection to the net, see of which type
- ms_isAlwaysOnline = (flags & INTERNET_CONNECTION_LAN != 0) ||
- (flags & INTERNET_CONNECTION_PROXY != 0);
- }
- else
- {
- // no Internet connection at all
- ms_isAlwaysOnline = FALSE;
+ isAlwaysOnline = (flags & (INTERNET_CONNECTION_LAN |
+ INTERNET_CONNECTION_PROXY)) != 0;
}
+ //else: no Internet connection at all
}
}
- // did we succeed with WinInet? if not, try something else
- if ( ms_isAlwaysOnline == -1 )
- {
- if ( !IsOnline() )
- {
- // definitely no permanent connection because we are not connected
- // now
- ms_isAlwaysOnline = FALSE;
- }
- else
- {
- // of course, having a modem doesn't prevent us from having a
- // permanent connection as well, but we have to guess somehow and
- // it's probably more common that a system connected via a modem
- // doesn't have any other net access, so:
- ms_isAlwaysOnline = FALSE;
- }
- }
-
- wxASSERT_MSG( ms_isAlwaysOnline != -1, wxT("logic error") );
-
- return ms_isAlwaysOnline != 0;
+ return isAlwaysOnline;
}
bool wxDialUpManagerMSW::IsOnline() const
{
// create a hidden window to receive notification about connections
// status change
- extern const wxChar *wxPanelClassName;
- ms_hwndRas = ::CreateWindow(wxPanelClassName, NULL,
+ extern const wxChar *wxCanvasClassName;
+ ms_hwndRas = ::CreateWindow(wxCanvasClassName, NULL,
0, 0, 0, 0,
0, NULL,
(HMENU)NULL, wxGetInstance(), 0);
static LRESULT APIENTRY wxRasStatusWindowProc(HWND hWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
- if ( message == wxWM_RAS_STATUS_CHANGED )
- {
- wxRasThreadData *data = (wxRasThreadData *)lParam;
- data->dialUpManager->OnConnectStatusChange();
- }
- else if ( message == wxWM_RAS_DIALING_PROGRESS )
+ switch ( message )
{
- wxDialUpManagerMSW *dialUpManager = wxDialUpManagerMSW::GetDialer();
+ case wxWM_RAS_STATUS_CHANGED:
+ {
+ wxRasThreadData *data = (wxRasThreadData *)lParam;
+ data->dialUpManager->OnConnectStatusChange();
+ }
+ break;
- dialUpManager->OnDialProgress((RASCONNSTATE)wParam, lParam);
+ case wxWM_RAS_DIALING_PROGRESS:
+ {
+ wxDialUpManagerMSW *dialMan = wxDialUpManagerMSW::GetDialer();
+
+ dialMan->OnDialProgress((RASCONNSTATE)wParam, lParam);
+ }
+ break;
+
+ default:
+ return ::DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
rasconnstate, dwError);
}
-#endif
- // __BORLANDC__
+#endif // __BORLANDC__
+
#endif // wxUSE_DIALUP_MANAGER
-// vi:sts=4:sw=4:et