home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / zfamily.zip / zfamily / ZDTFUNCS / SAMPLE / TSTOFFST.INC < prev    next >
Text File  |  1993-09-02  |  4KB  |  123 lines

  1. /*
  2. ** /----------------------------------------------------------------------\
  3. ** |             IBM Z Family Reusable Libraries/2 (5641-504)             |
  4. ** |----------------------------------------------------------------------|
  5. ** | (C) Copyright International Business Machines Corporation 1993, 1994 |
  6. ** |----------------------------------------------------------------------|
  7. ** |                       DISCLAIMER OF WARRANTIES                       |
  8. ** |                       ------------------------                       |
  9. ** | The following code is sample code created by IBM Corporation.        |
  10. ** | Such a code is provided to you solely for the purpose of assisting   |
  11. ** | you in the development of your applications. The code is provided    |
  12. ** | "AS IS", without warranty of any kind.  IBM shall not be liable for  |
  13. ** | any damages arising out of your use of the following code, even if   |
  14. ** | they have been advised of the possibility of such damages.           |                                                                         *
  15. ** \----------------------------------------------------------------------/
  16. **
  17. **  Include : TSTOFFST.INC
  18. **  Authors : Alessandro Cavallini (CAVALLI at ROMEPPC)
  19. **            Dario de Judicibus (DEJUDICI at ROMEPPC)
  20. **  Created : 18 Sep 1992
  21. **  Updated : 01 Sep 1993
  22. **  Version : 4.12
  23. **  Content : Called in WM_COMMAND (case TMEZONOFFBUT)
  24. **
  25. */
  26. {
  27.    ULONG n ;
  28.    BOOL done ;
  29.    zdtLOCALDT in, out ;
  30.    CHAR szTempBuf[80] ; // Local scratch memory
  31.  
  32.    Tmezon = (TMEZONStruct *)WinQueryWindowULong(hWndClient, OFFSET_TMEZON) ;
  33.  
  34.   /*
  35.   ** Query the string value in the entry field control and
  36.   ** move the string value to the dialog structure variable
  37.   */
  38.    n = WinQueryDlgItemText(hWndDlg, TMEZONHRSFLD, 80, szTempBuf) ;
  39.    if (n != 0)
  40.      Tmezon->TmeZonUCTHours = atol(szTempBuf) ;
  41.    else
  42.      Tmezon->TmeZonUCTHours = 0 ;
  43.  
  44.    n = WinQueryDlgItemText(hWndDlg, TMEZONMINFLD, 80, szTempBuf) ;
  45.    if (n != 0)
  46.      Tmezon->TmeZonUCTMinutes = atol(szTempBuf) ;
  47.    else
  48.      Tmezon->TmeZonUCTMinutes = 0 ;
  49.  
  50.    n = WinQueryDlgItemText(hWndDlg, TMEZONSECFLD, 80, szTempBuf) ;
  51.    if (n != 0)
  52.      Tmezon->TmeZonUCTSeconds = atol(szTempBuf) ;
  53.    else
  54.      Tmezon->TmeZonUCTSeconds = 0 ;
  55.  
  56.    n = WinQueryDlgItemText(hWndDlg, TMEZONOFFFLD, 80, szTempBuf) ;
  57.    if (n != 0)
  58.      Tmezon->TmeZonOffset = atol(szTempBuf) ;
  59.    else
  60.      Tmezon->TmeZonOffset = 0 ;
  61.  
  62.   /*
  63.   **  Create time from input data and compute time corresponding
  64.   **  to the new offset. Use today's date.
  65.   */
  66.    in.date = zdtToday() ;
  67.    in.time = zdtNewTime( Tmezon->TmeZonUCTHours,
  68.                         Tmezon->TmeZonUCTMinutes,
  69.                         Tmezon->TmeZonUCTSeconds ) ;
  70.  
  71.    in.zone = 0 ;
  72.    out.zone = Tmezon->TmeZonOffset * zdtMINUTESINHOUR ;
  73.  
  74.   /*
  75.   ** If wrong input data, clear output data
  76.   */
  77.    done = TRUE ;
  78.    if (in.time == zdtINVALID)
  79.    {
  80.      WinLoadString(hAB, 0, tstERR_INVALIDTIME, 80, szTempBuf) ;
  81.      done = FALSE ;
  82.    }
  83.    if (!zdtIsValidZone(out.zone))
  84.    {
  85.      WinLoadString(hAB, 0, tstERR_INVALIDZONE, 80, szTempBuf) ;
  86.      done = FALSE ;
  87.    }
  88.    if (done)
  89.    {
  90.      done = zdtComputeLocalTime(&in,&out) ;
  91.  
  92.      if (done)
  93.      {
  94.        Tmezon->TmeZonLocalHours   = zdtHours(out.time) ;
  95.        Tmezon->TmeZonLocalMinutes = zdtMinutes(out.time) ;
  96.        Tmezon->TmeZonLocalSeconds = zdtSeconds(out.time) ;
  97.  
  98.        sprintf(szTempBuf,"%02ld",Tmezon->TmeZonLocalHours) ;
  99.        WinSetDlgItemText(hWndDlg, TMEZONHR2FLD, szTempBuf) ;
  100.  
  101.        sprintf(szTempBuf,"%02ld",Tmezon->TmeZonLocalMinutes) ;
  102.        WinSetDlgItemText(hWndDlg, TMEZONMI2FLD, szTempBuf) ;
  103.  
  104.        sprintf(szTempBuf,"%02ld",Tmezon->TmeZonLocalSeconds) ;
  105.        WinSetDlgItemText(hWndDlg, TMEZONSE2FLD, szTempBuf) ;
  106.      }
  107.    }
  108.    else
  109.    {
  110.      WinMessageBox(HWND_DESKTOP, HWND_DESKTOP, szTempBuf,
  111.                    0, 0, MB_OK|MB_ICONEXCLAMATION);
  112.  
  113.      Tmezon->TmeZonLocalHours   = 0 ;
  114.      Tmezon->TmeZonLocalMinutes = 0 ;
  115.      Tmezon->TmeZonLocalSeconds = 0 ;
  116.  
  117.      szTempBuf[0] = '\0' ;
  118.      WinSetDlgItemText(hWndDlg, TMEZONHR2FLD, szTempBuf) ;
  119.      WinSetDlgItemText(hWndDlg, TMEZONMI2FLD, szTempBuf) ;
  120.      WinSetDlgItemText(hWndDlg, TMEZONSE2FLD, szTempBuf) ;
  121.    }
  122. }
  123.