home *** CD-ROM | disk | FTP | other *** search
/ PC World 2004 November / PCWorld_2004-11_cd.bin / software / temacd / poweroff / pwroff30.exe / src / warning.c < prev    next >
C/C++ Source or Header  |  2002-02-16  |  2KB  |  74 lines

  1. #include "poweroff.h"
  2.  
  3. BOOL FAR PASCAL WarningProc(HWND hWnd, unsigned message,DWORD wParam, LONG lParam)
  4. {
  5.   static int time_left;
  6.   static PowerSettings *ps;
  7.  
  8.   switch (message) 
  9.   {
  10.     case WM_INITDIALOG:
  11.       {
  12.         char tmpstr[100];
  13.  
  14.         ps=(PowerSettings*)lParam;
  15.         time_left=ps->warning.seconds;
  16.         sprintf(tmpstr,"Time left: %d seconds",ps->warning.seconds);
  17.         SetDlgItemText(hWnd,IDC_SHUTDOWN_TIME,tmpstr);
  18.         if (ps->warning.message!=NULL && ps->warning.message[0]!='\0')
  19.           SetDlgItemText(hWnd,IDC_SHUTDOWN_TEXT,ps->warning.message);
  20.         else
  21.           SetDlgItemText(hWnd,IDC_SHUTDOWN_TEXT,"Please save all your work and close all applications");
  22.         EnableWindow(GetDlgItem(hWnd,IDC_SHUTDOWN_TEXT),FALSE);
  23.         EnableWindow(GetDlgItem(hWnd,IDC_SHUTDOWN_TEXT),TRUE);
  24.         SetDlgItemText(hWnd,IDC_SHUTDOWN_INFO,GetModeStr(ps));
  25.         if (ps->options.allow_cancel)
  26.           EnableWindow(GetDlgItem(hWnd,IDC_CANCEL),TRUE);
  27.         else
  28.           EnableWindow(GetDlgItem(hWnd,IDC_CANCEL),FALSE);
  29.         if (ps->warning.play_sound)
  30.           PlaySound(ps->warning.sound_file,NULL,SND_ASYNC|SND_FILENAME);
  31.         SetTimer(hWnd,TIME_TIMER,1000,NULL);
  32.       }      
  33.       return TRUE;
  34.     case WM_COMMAND:
  35.       switch (LOWORD(wParam))
  36.       {
  37.         case IDC_CANCEL:
  38.           EndDialog(hWnd,FALSE);
  39.           break;
  40.         case IDC_DO_IT_NOW:
  41.           EndDialog(hWnd,TRUE);
  42.           break;
  43.       }
  44.       break;
  45.     case WM_TIMER:
  46.       time_left--;
  47.       if (time_left<=0)
  48.         EndDialog(hWnd,TRUE);
  49.       else
  50.       {
  51.         char tmpstr[100];
  52.  
  53.         sprintf(tmpstr,"Time left: %d seconds",time_left);
  54.         SetDlgItemText(hWnd,IDC_SHUTDOWN_TIME,tmpstr);
  55.       }
  56.       return TRUE;
  57.       default:
  58.          break;
  59.   }
  60.   return FALSE;
  61. }
  62.  
  63. int ShowWarningMessage(HWND hWnd,PowerSettings *ps)
  64. {
  65.   FARPROC warningproc;
  66.   int ret;
  67.  
  68.   Log("ShowWarningMessage start");
  69.   warningproc=MakeProcInstance((FARPROC)WarningProc,hInst);
  70.     ret=DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_WARNING),hWnd,(DLGPROC)warningproc,(LPARAM)ps);
  71.     FreeProcInstance(warningproc);
  72.   Log("ShowWarningMessage end");
  73.   return ret;
  74. }