电子表

来源:互联网 发布:自动约车软件 编辑:程序博客网 时间:2024/05/01 10:31


#include<windows.h>
#include <stdio.h>
#include <math.h>
#define PI 3.1415926

long CALLBACK WndProc(HWND hWnd, int message, int wParam, int lParam);

int _stdcall WinMain(HINSTANCE hInstance,
    HINSTANCE hPrelnstance,
    LPSTR lpCmdLine,
    int nShowCmd)
{

 
 WNDCLASSEX wcex;
   
 wcex.cbSize = sizeof(WNDCLASSEX);
 
 wcex.style = CS_HREDRAW | CS_VREDRAW;
 
 wcex.lpfnWndProc = (WNDPROC)WndProc;
  
 wcex.cbClsExtra  = 0;
 wcex.cbWndExtra  = 0; 

 wcex.hInstance  = hInstance;     
 wcex.hIcon   = NULL
 wcex.hCursor  = LoadCursor(NULL, IDC_ARROW)
 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+20);  
 wcex.lpszMenuName = NULL
 wcex.lpszClassName = "FW";     
 wcex.hIconSm  = NULL
 
 RegisterClassEx(&wcex);


 HWND hWnd = CreateWindow(
  "FW"
  "Window ?òà′á?",   
  WS_OVERLAPPEDWINDOW
  CW_USEDEFAULT,   
  0,     
  CW_USEDEFAULT,  
  0,     
  NULL,    
  NULL,    
  hInstance,   
  NULL);    
 
 if (NULL == hWnd)
 {
  return FALSE;
 }
 ShowWindow(hWnd, nShowCmd);

 UpdateWindow(hWnd);

 MSG msg;
 while (GetMessage(&msg, NULL, 0, 0)
 {
  TranslateMessage(&msg)
  DispatchMessage(&msg); 
 }

 return msg.wParam;
 
}

 

long CALLBACK WndProc(HWND hWnd, int message, int wParam, int lParam)
{
 
 switch (message)
 {  
 case WM_CREATE:
  {
   ::SetTimer(hWnd,1,1000,NULL);
   break;
  }
 case WM_TIMER:
  {
   SYSTEMTIME time;
   ::GetLocalTime(&time);
   
   HDC hdc=GetDC(hWnd);

   
   static int h=time.wHour*5,m=time.wMinute,sc=time.wSecond;

   static int X=250,Y=250,R=150;    
   static int Hour_R=40,Second_R=140,Minute_R=100;    
   static int TimeNum_X,TimeNum_Y;
   static int SystemTime_S_XR,SystemTime_H_XR,SystemTime_M_XR,SystemTime_S_YR,SystemTime_H_YR,SystemTime_M_YR;
 
       
   
   
   SetTextColor(hdc,RGB(0,0,250));    
   TextOut(hdc,160,50,"北京时间:",strlen("北京时间:"));
   
              char s[5];
   sprintf(s,"%02d",time.wHour);
   SetTextColor(hdc,RGB(0,0,250));     
   TextOut(hdc,230,50,s,strlen(s));
            TextOut(hdc,250,50," :",strlen(" :"));

            sprintf(s,"%02d",time.wMinute);   
   SetTextColor(hdc,RGB(0,0,250));  
   TextOut(hdc,270,50,s,strlen(s));
            TextOut(hdc,290,50,":",strlen(":"));
           
   sprintf(s,"%02d",time.wSecond);
   SetTextColor(hdc,RGB(0,0,250));
   TextOut(hdc,310,50,s,strlen(s));
           

   HPEN hPen=::CreatePen(PS_DOT,4,RGB(50,120,120));
   HBRUSH hBrush=::CreateSolidBrush(RGB(255,200,25));
   ::SelectObject(hdc,hPen);
      ::SelectObject(hdc,hBrush);

   Ellipse(hdc,100,100,400,400);
   
            for(int i=0;i<60;i+=5)
   {
    TimeNum_X=X+(int)((R-10)*cos(i*PI/30-PI/2));
    TimeNum_Y=Y+(int)((R-10)*sin(i*PI/30-PI/2));
    sprintf(s,"%d",i/5);
    TextOut(hdc,TimeNum_X-3,TimeNum_Y-10,s,strlen(s));
    if(i ==0 )
     TextOut(hdc,248,100,"12",2);
   }

            SystemTime_S_XR= X+(int)(Second_R*cos(sc*PI/30-PI/2));
            SystemTime_M_XR= X+(int)(Minute_R*cos(m*PI/30-PI/2));
            SystemTime_H_XR= X+(int)(Hour_R*cos(h*PI/30-PI/2));
   SystemTime_S_YR= Y+(int)(Second_R*sin(sc*PI/30-PI/2));
            SystemTime_M_YR= Y+(int)(Minute_R*sin(m*PI/30-PI/2));
            SystemTime_H_YR= Y+(int)(Hour_R*sin(h*PI/30-PI/2));
          
   hPen=CreatePen(PS_DOT,4,RGB(150,60,0));
            SelectObject(hdc,hPen);

   ::MoveToEx(hdc,X,Y,NULL);
   ::LineTo(hdc,SystemTime_M_XR,SystemTime_M_YR);
   ::MoveToEx(hdc,X,Y,NULL);
   ::LineTo(hdc,SystemTime_S_XR,SystemTime_S_YR);
   ::MoveToEx(hdc,X,Y,NULL);
   ::LineTo(hdc,SystemTime_H_XR,SystemTime_H_YR);

 
   sc++;
   if(sc==60)
   {
    m++;sc=0;
   
   if(m%12==0)
   {
     h++;
    if(m==60)
    {
     m=0;
    if(h==60)
     h=0;
    }
   }
   }
   ReleaseDC(hWnd,hdc);
   break;
  }
  case WM_DESTROY:
  {
   PostQuitMessage(0);
   ::KillTimer(hWnd,1);
   break;
  }
  default:
   return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

 

 

 

 

 

原创粉丝点击