#include "private.h" // Class Definitions BOOL PromptToGoOffline(VOID); BOOL PromptToGoOnline(VOID); BOOL CALLBACK GoOfflinePromptDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); BOOL CALLBACK GoOnlinePromptDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); // Make sure that Notification Sinks are apartment model and hence are always called back // on the same thread making it unnecessary to use any critical sections -- APPCOMPAT // TRUE means that the state now is Online // FALSE means that the user chose to remain Offline BOOL OnConnectedNotification(void) { BOOL fRet = TRUE; // Check to see if the user is offline and wants to "go online" if((IsGlobalOffline())) { //Ask the user with a dialog fRet = PromptToGoOnline(); } return fRet; } // TRUE means that the state now is Offline // FALSE means that the user chose to remain Online BOOL OnDisconnectedNotification(void) { BOOL fRet = TRUE; // Check to see if the user wants to go offline if(!(IsGlobalOffline())) { //Ask the user with a dialog, if the user says yes, then // toggle to offline mode by calling wininet fRet = PromptToGoOffline(); } return fRet; } BOOL PromptToGoOffline(VOID) { // run the dialog BOOL fRet = DialogBoxParam(MLGetHinst(),MAKEINTRESOURCE(IDD_GO_OFFLINE_DLG), NULL,GoOfflinePromptDlgProc,(LPARAM) 0); return fRet; } /******************************************************************* NAME: GoOfflinePromptDlgProc SYNOPSIS: Dialog proc for Go Offline dialog ********************************************************************/ BOOL CALLBACK GoOfflinePromptDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: SetWindowPos(hDlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW); return TRUE; break; case WM_COMMAND: switch (wParam) { case IDOK: SetGlobalOffline(TRUE); EndDialog(hDlg,TRUE); return TRUE; break; case IDCANCEL: EndDialog(hDlg,FALSE); return TRUE; break; default: break; } break; default: break; } return FALSE; } BOOL PromptToGoOnline(VOID) { // run the dialog BOOL fRet = DialogBoxParam(MLGetHinst(),MAKEINTRESOURCE(IDD_GO_ONLINE_DLG), NULL,GoOnlinePromptDlgProc,(LPARAM) 0); return fRet; } /******************************************************************* NAME: GoOnlinePromptDlgProc SYNOPSIS: Dialog proc for Go Online dialog ********************************************************************/ BOOL CALLBACK GoOnlinePromptDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: return TRUE; break; case WM_COMMAND: switch (wParam) { case IDOK: SetGlobalOffline(FALSE); EndDialog(hDlg,TRUE); return TRUE; break; case IDCANCEL: EndDialog(hDlg,FALSE); return TRUE; break; default: break; } break; default: break; } return FALSE; }