CLOCK.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples. 
  3. *       Copyright (C) 1993-1997 Microsoft Corporation.
  4. *       All rights reserved. 
  5. *       This source code is only intended as a supplement to 
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the 
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. /*--------------------------------------------------------------------------*/
  11. /*  Typedefs and Structures                                                 */
  12. /*--------------------------------------------------------------------------*/
  13. /* Don't change without updating GETTIME.ASM. */
  14. typedef struct tagTIME
  15.   {
  16.     INT     hour;   /* 0 - 11 hours for analog clock */
  17.     INT     hour12; /* 12 hour format */
  18.     INT     hour24; /* 24 hour format */
  19.     INT     minute;
  20.     INT     second;
  21.     INT     ampm;   /* 0 - AM , 1 - PM */
  22.   } TIME;
  23. typedef struct
  24. {
  25.     SHORT sin;
  26.     SHORT cos;
  27. } TRIG;
  28. TRIG CirTab[] = {     // circle sin, cos, table
  29.     { 0,     -7999  },
  30.     { 836,   -7956  },
  31.     { 1663,  -7825  },
  32.     { 2472,  -7608  },
  33.     { 3253,  -7308  },
  34.     { 3999,  -6928  },
  35.     { 4702,  -6472  },
  36.     { 5353,  -5945  },
  37.     { 5945,  -5353  },
  38.     { 6472,  -4702  },
  39.     { 6928,  -4000  },
  40.     { 7308,  -3253  },
  41.     { 7608,  -2472  },
  42.     { 7825,  -1663  },
  43.     { 7956,  -836   },
  44.     { 8000,  0      },
  45.     { 7956,  836    },
  46.     { 7825,  1663   },
  47.     { 7608,  2472   },
  48.     { 7308,  3253   },
  49.     { 6928,  4000   },
  50.     { 6472,  4702   },
  51.     { 5945,  5353   },
  52.     { 5353,  5945   },
  53.     { 4702,  6472   },
  54.     { 3999,  6928   },
  55.     { 3253,  7308   },
  56.     { 2472,  7608   },
  57.     { 1663,  7825   },
  58.     { 836,   7956   },
  59.     { 0,     7999   },
  60.     { -836,  7956   },
  61.     { -1663, 7825   },
  62.     { -2472, 7608   },
  63.     { -3253, 7308   },
  64.     { -4000, 6928   },
  65.     { -4702, 6472   },
  66.     { -5353, 5945   },
  67.     { -5945, 5353   },
  68.     { -6472, 4702   },
  69.     { -6928, 3999   },
  70.     { -7308, 3253   },
  71.     { -7608, 2472   },
  72.     { -7825, 1663   },
  73.     { -7956, 836    },
  74.     { -7999, -0     },
  75.     { -7956, -836   },
  76.     { -7825, -1663  },
  77.     { -7608, -2472  },
  78.     { -7308, -3253  },
  79.     { -6928, -4000  },
  80.     { -6472, -4702  },
  81.     { -5945, -5353  },
  82.     { -5353, -5945  },
  83.     { -4702, -6472  },
  84.     { -3999, -6928  },
  85.     { -3253, -7308  },
  86.     { -2472, -7608  },
  87.     { -1663, -7825  },
  88.     { -836 , -7956  }
  89. };
  90. typedef struct tagCLOCKDISPSTRUCT
  91.   {
  92.     /* Clock display format for main window/icon outut */
  93.     /* either  IDM_ANALOG, or IDM_DIGITAL */
  94.     WORD    wFormat;
  95.     /* Various boolean settings for the clock style
  96.      * and current settings */
  97.     BOOL bMinimized;
  98.     BOOL bMaximized;
  99.     BOOL bTopMost;
  100.     BOOL bNoTitle;
  101.     BOOL bTmpHide;
  102.     BOOL bIconic;
  103.     BOOL bColor;
  104.     BOOL bNewFont;
  105.     /* X and Y offset within client area of window
  106.      * or icon where digital clock will be displayed */
  107.     POINT   line1;
  108.     /* Y offset within icon area to second line where
  109.      * minute will be displayed */
  110.     INT     yline2;
  111.     /* length of the digital clock readout string,
  112.      * required by the text out function.
  113.      * if the time format is 24 hour, this value is
  114.      * set so that the AM/PM indicator is not output */
  115.     WORD    wDigTimeLen;
  116.     /* buffer to store digital time in.  the hour/minute/ampm
  117.      * sections of this buffer are only modified if they
  118.      * change from the previous call. */
  119.     CHAR    szDigTime[20];
  120.     /* buffer to hold the win.ini international indicators
  121.      * for 1159, and 2359 AM/PM 12 hour time format.
  122.      * szAMPM[0] holds AM, szAMPM[1] holds PM indicator */
  123.     CHAR    szAMPM[2][7];
  124.     /* intl time format (like DOS) 0 - 12 hour, 1 - 24 hour */
  125.     WORD    wTimeFormat;
  126.     /* intl time seperator character */
  127.     CHAR    cTimeSep;
  128.   } CLOCKDISPSTRUCT;
  129. /*--------------------------------------------------------------------------*/
  130. /*  Function Templates                                                      */
  131. /*--------------------------------------------------------------------------*/
  132. void NEAR GetTime(TIME *);
  133. void NEAR ConvTime(TIME *);
  134. LONG APIENTRY ClockWndProc(HWND, UINT, WPARAM, LONG);
  135. /*--------------------------------------------------------------------------*/
  136. /*  Constants                                                               */
  137. /*--------------------------------------------------------------------------*/
  138. #define IDD_ABOUT 400
  139.     /* Main Menu ID defines */
  140. #define IDM_ANALOG       1
  141. #define IDM_DIGITAL      2
  142. #define IDM_ABOUT        4
  143. //--------------
  144. #define IDM_TOPMOST      5
  145. #define IDM_NOTITLE      6
  146. //--------------
  147. /* Temp ID for dialogs. */
  148. #define ID_JUNK     0xCACC
  149.     /* String Resource definitions */
  150. #define IDS_APPNAME      1
  151. #define IDS_DATA         2
  152. #define IDS_TOOMANY      3
  153. #define IDS_FONTFILE     4
  154. #define IDS_INTL        16
  155. #define IDS_ITIME       18
  156. #define IDS_S1159       19
  157. #define IDS_S2359       20
  158. #define IDS_STIME       22
  159. #define IDS_CLKFORMAT   23
  160. #define IDS_1159        24
  161. #define IDS_2359        25
  162. #define IDS_TIMESEP             27
  163. #define IDS_USNAME      29
  164. #define IDS_INIFILE     30
  165. //--------------
  166. #define IDS_TOPMOST     31
  167. //--------------
  168. #define HOURSCALE       65
  169. #define MINUTESCALE     80
  170. #define HHAND           TRUE
  171. #define MHAND           FALSE
  172. #define SECONDSCALE     80
  173. #define MAXBLOBWIDTH    25
  174. #define BUFLEN          30
  175. #define REPAINT         0
  176. #define HANDPAINT       1
  177. #define UPDATE                  0
  178. #define REDRAW                  1
  179. #define OPEN_TLEN               450
  180. #define ICON_TLEN               45000
  181. #define CLKSCALE                ((INT)8000)