home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 December (DVD) / VPR0112A.ISO / OLS / TCL230JA95 / tcl230ja95.lzh / source.lzh / exe / alarmday.c < prev    next >
C/C++ Source or Header  |  2001-02-10  |  3KB  |  128 lines

  1. /*-------------------------------------------
  2.   alarmday.c
  3.   dialog to set days for alarm
  4.                                Kazubon 1999
  5. ---------------------------------------------*/
  6.  
  7. #include "tclock.h"
  8.  
  9. BOOL CALLBACK AlarmDayProc(HWND, UINT, WPARAM, LPARAM);
  10. static void OnInit(HWND hDlg);
  11. static void OnOK(HWND hDlg);
  12. static void OnEveryDay(HWND hDlg);
  13.  
  14. static int retval;
  15.  
  16. /*------------------------------------------------
  17.   show dialog box
  18. --------------------------------------------------*/
  19. int SetAlarmDay(HWND hDlg, int n)
  20. {
  21.     retval = n;
  22.     if(DialogBox(GetLangModule(), MAKEINTRESOURCE(IDD_ALARMDAY),
  23.         hDlg, AlarmDayProc) == IDOK)
  24.         return retval;
  25.     return n;
  26. }
  27.  
  28. /*------------------------------------------------
  29.   dialog procedure
  30. --------------------------------------------------*/
  31. BOOL CALLBACK AlarmDayProc(HWND hDlg, UINT message,
  32.     WPARAM wParam, LPARAM lParam)
  33. {
  34.     switch(message)
  35.     {
  36.         case WM_INITDIALOG:
  37.             OnInit(hDlg);
  38.             return TRUE;
  39.         case WM_COMMAND:
  40.         {
  41.             WORD id, code;
  42.             id = LOWORD(wParam); code = HIWORD(wParam);
  43.             switch(id)
  44.             {
  45.                 case IDC_ALARMDAY0:
  46.                     OnEveryDay(hDlg); break;
  47.                 case IDOK: OnOK(hDlg);
  48.                 case IDCANCEL: EndDialog(hDlg, id); break;
  49.             }
  50.             return TRUE;
  51.         }
  52.     }
  53.     return FALSE;
  54. }
  55.  
  56. /*------------------------------------------------
  57.   initialize
  58. --------------------------------------------------*/
  59. void OnInit(HWND hDlg)
  60. {
  61.     int i, f;
  62.     char s[80];
  63.     HFONT hfont;
  64.     
  65.     hfont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
  66.     f = 1;
  67.     for(i = 0; i < 7; i++)
  68.     {
  69.         if(hfont)
  70.             SendDlgItemMessage(hDlg, IDC_ALARMDAY1 + i,
  71.                 WM_SETFONT, (WPARAM)hfont, 0);
  72.         
  73.         GetLocaleInfoWA(MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
  74.             LOCALE_SDAYNAME1+i, s, 80);
  75.         SetDlgItemText(hDlg, IDC_ALARMDAY1 + i, s);
  76.         if(retval & f)
  77.             CheckDlgButton(hDlg, IDC_ALARMDAY1 + i, TRUE);
  78.         f = f << 1;
  79.     }
  80.     
  81.     if((retval & 0x7f) == 0x7f)
  82.     {
  83.         CheckDlgButton(hDlg, IDC_ALARMDAY0, TRUE);
  84.         OnEveryDay(hDlg);
  85.     }
  86. }
  87.  
  88. /*------------------------------------------------
  89.   retreive setting
  90. --------------------------------------------------*/
  91. void OnOK(HWND hDlg)
  92. {
  93.     int i, f;
  94.     
  95.     f = 1; retval = 0;
  96.     for(i = 0; i < 7; i++)
  97.     {
  98.         if(IsDlgButtonChecked(hDlg, IDC_ALARMDAY1 + i))
  99.             retval = retval | f;
  100.         f = f << 1;
  101.     }
  102. }
  103.  
  104. /*------------------------------------------------
  105.    Every day
  106. --------------------------------------------------*/
  107. void OnEveryDay(HWND hDlg)
  108. {
  109.     int i;
  110.     
  111.     if(IsDlgButtonChecked(hDlg, IDC_ALARMDAY0))
  112.     {
  113.         for(i = 0; i < 7; i++)
  114.         {
  115.             CheckDlgButton(hDlg, IDC_ALARMDAY1 + i, TRUE);
  116.             EnableDlgItem(hDlg, IDC_ALARMDAY1+i, FALSE);
  117.         }
  118.     }
  119.     else
  120.     {
  121.         for(i = 0; i < 7; i++)
  122.         {
  123.             CheckDlgButton(hDlg, IDC_ALARMDAY1 + i, FALSE);
  124.             EnableDlgItem(hDlg, IDC_ALARMDAY1+i, TRUE);
  125.         }
  126.     }
  127. }
  128.