如何调用当地时间?
左眼的彼岸 2011-04-27 10:12:57
#include<windows.h>
#include<stdio.h>
#include<math.h>
static int x=250,y=250;
#define PI 3.1415926
static int r=150,sr=140,mr=120,hr=90;
static int sx,sy,mx,my,hx,hy;
static int mm=0,ss=0,hh=0;
static int s1=0,s2=0;
long CALLBACK WndProc(HWND hWnd, int message, int wParam, int lParam);
int _stdcall WinMain(HINSTANCE hInstance,
HINSTANCE hPrelnstance,
LPSTR lpCmdLine,
int nShowCmd)
{
//1、设置窗体属性
WNDCLASSEX wcex;
// 结构体的大小
wcex.cbSize = sizeof(WNDCLASSEX);
// 窗体类的样式
wcex.style = CS_HREDRAW | CS_VREDRAW;
// *窗体回调函数
wcex.lpfnWndProc = (WNDPROC)WndProc;
// 窗体类额外字节数,通常为0
wcex.cbClsExtra = 0;
// 窗体实例额外字节数,通常为0
wcex.cbWndExtra = 0;
// *应用程序实例句柄
wcex.hInstance = hInstance;
wcex.hIcon = NULL; // 窗体大图标
wcex.hCursor = LoadCursor(NULL, IDC_ARROW); // 窗体鼠标光标样式
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); // 窗体背景色
wcex.lpszMenuName = NULL; // 窗体主菜单
// *窗体类名称
wcex.lpszClassName = "FW";
wcex.hIconSm = NULL; // 窗体小图标
//2、注册窗体
RegisterClassEx(&wcex);
//3、创建窗体
HWND hWnd = CreateWindow(
"FW", // *窗体类名称
"指针时钟", // 窗体标题名
WS_OVERLAPPEDWINDOW, // 窗体外观样式
600, // 窗体在屏幕上的水平位置
100, // 窗体在屏幕上的垂直位置
600, // 窗口的宽度
600, // 窗口的高度
NULL, // 父窗体句柄
NULL, // 窗口菜单句柄
hInstance, // *创建窗体的应用程序实例句柄
NULL); // 创建窗体时的额外信息,通常为NULL
if (NULL == hWnd)
{
return FALSE;
}
//4、显示窗体
ShowWindow(hWnd, nShowCmd);
//5、 更新窗体
UpdateWindow(hWnd);
//6、主消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) // 从消息队列中获取消息
{
TranslateMessage(&msg); // 转换消息
DispatchMessage(&msg); // 分发消息给回调函数
}
return msg.wParam;
}
//7、消息处理
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:
{
HDC hDc=GetDC(hWnd);//申请绘图设备
HPEN hPen=CreatePen(PS_SOLID,9,RGB(155,145,231));//创建画笔
SelectObject(hDc,hPen);//选入设备上下文
Ellipse(hDc,100,100,400,400);//画圆
for(int i=0;i<=60;i+=5)//画表盘
{
s1=x+(int)(r*cos(i*PI/30-PI/2));
s2=y+(int)(r*sin(i*PI/30-PI/2));
char s[3];
sprintf(s,"%d",i/5);
TextOut(hDc,s1-7,s2-7,s,strlen(s));
}
DeleteObject(hPen);//释放绘图设备
ss++;
if(ss==60)
{
ss=0;
mm++;
if(mm%12==0)
{
hh++;
}
if(mm==60)
{
mm=0;
}
}
//秒针的坐标
sx=x+(int)(sr*cos(ss*PI/30-PI/2));
sy=y+(int)(sr*sin(ss*PI/30-PI/2));
//分针的坐标
mx=x+(int)(mr*cos(mm*PI/30-PI/2));
my=y+(int)(mr*sin(mm*PI/30-PI/2));
//时针的坐标
hx=x+(int)(hr*cos(hh*PI/30-PI/2));
hy=y+(int)(hr*sin(hh*PI/30-PI/2));
hPen=CreatePen(PS_SOLID,5,RGB(255,0,0));
SelectObject(hDc,hPen);
MoveToEx(hDc,x,y,NULL);
LineTo(hDc,sx,sy);
DeleteObject(hPen);
hPen=CreatePen(PS_SOLID,5,RGB(0,145,0));
SelectObject(hDc,hPen);
MoveToEx(hDc,x,y,NULL);
LineTo(hDc,mx,my);
DeleteObject(hPen);
hPen=CreatePen(PS_SOLID,5,RGB(15,12,12));
SelectObject(hDc,hPen);
MoveToEx(hDc,x,y,NULL);
LineTo(hDc,hx,hy);
DeleteObject(hPen);
ReleaseDC(hWnd,hDc);
break;
}
case WM_DESTROY:
{
PostQuitMessage(0);
KillTimer(hWnd,1);//销毁定时器
break;
}
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}