DIGCLOCK.docx

上传人:b****5 文档编号:8287538 上传时间:2023-01-30 格式:DOCX 页数:5 大小:15.77KB
下载 相关 举报
DIGCLOCK.docx_第1页
第1页 / 共5页
DIGCLOCK.docx_第2页
第2页 / 共5页
DIGCLOCK.docx_第3页
第3页 / 共5页
DIGCLOCK.docx_第4页
第4页 / 共5页
DIGCLOCK.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DIGCLOCK.docx

《DIGCLOCK.docx》由会员分享,可在线阅读,更多相关《DIGCLOCK.docx(5页珍藏版)》请在冰豆网上搜索。

DIGCLOCK.docx

DIGCLOCK

/*-----------------------------------------

DIGCLOCK.c--DigitalClock

(c)CharlesPetzold,1998

-----------------------------------------*/

#include

#defineID_TIMER1

LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);

intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,

PSTRszCmdLine,intiCmdShow)

{

staticTCHARszAppName[]=TEXT("DigClock");

HWNDhwnd;

MSGmsg;

WNDCLASSwndclass;

wndclass.style=CS_HREDRAW|CS_VREDRAW;

wndclass.lpfnWndProc=WndProc;

wndclass.cbClsExtra=0;

wndclass.cbWndExtra=0;

wndclass.hInstance=hInstance;

wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);

wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);

wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);

wndclass.lpszMenuName=NULL;

wndclass.lpszClassName=szAppName;

if(!

RegisterClass(&wndclass))

{

MessageBox(NULL,TEXT("ProgramrequiresWindowsNT!

"),

szAppName,MB_ICONERROR);

return0;

}

hwnd=CreateWindow(szAppName,TEXT("DigitalClock"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,CW_USEDEFAULT,

CW_USEDEFAULT,CW_USEDEFAULT,

NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,iCmdShow);

UpdateWindow(hwnd);

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

returnmsg.wParam;

}

voidDisplayDigit(HDChdc,intiNumber)

{

staticBOOLfSevenSegment[10][7]={

1,1,1,0,1,1,1,//0

0,0,1,0,0,1,0,//1

1,0,1,1,1,0,1,//2

1,0,1,1,0,1,1,//3

0,1,1,1,0,1,0,//4

1,1,0,1,0,1,1,//5

1,1,0,1,1,1,1,//6

1,0,1,0,0,1,0,//7

1,1,1,1,1,1,1,//8

1,1,1,1,0,1,1};//9

staticPOINTptSegment[7][6]={

7,6,11,2,31,2,35,6,31,10,11,10,

6,7,10,11,10,31,6,35,2,31,2,11,

36,7,40,11,40,31,36,35,32,31,32,11,

7,36,11,32,31,32,35,36,31,40,11,40,

6,37,10,41,10,61,6,65,2,61,2,41,

36,37,40,41,40,61,36,65,32,61,32,41,

7,66,11,62,31,62,35,66,31,70,11,70};

intiSeg;

for(iSeg=0;iSeg<7;iSeg++)

if(fSevenSegment[iNumber][iSeg])

Polygon(hdc,ptSegment[iSeg],6);

}

voidDisplayTwoDigits(HDChdc,intiNumber,BOOLfSuppress)

{

if(!

fSuppress||(iNumber/10!

=0))

DisplayDigit(hdc,iNumber/10);

OffsetWindowOrgEx(hdc,-42,0,NULL);

DisplayDigit(hdc,iNumber%10);

OffsetWindowOrgEx(hdc,-42,0,NULL);

}

voidDisplayColon(HDChdc)

{

POINTptColon[2][4]={2,21,6,17,10,21,6,25,

2,51,6,47,10,51,6,55};

Polygon(hdc,ptColon[0],4);

Polygon(hdc,ptColon[1],4);

OffsetWindowOrgEx(hdc,-12,0,NULL);

}

voidDisplayTime(HDChdc,BOOLf24Hour,BOOLfSuppress)

{

SYSTEMTIMEst;

GetLocalTime(&st);

if(f24Hour)

DisplayTwoDigits(hdc,st.wHour,fSuppress);

else

DisplayTwoDigits(hdc,(st.wHour%=12)?

st.wHour:

12,fSuppress);

DisplayColon(hdc);

DisplayTwoDigits(hdc,st.wMinute,FALSE);

DisplayColon(hdc);

DisplayTwoDigits(hdc,st.wSecond,FALSE);

}

LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)

{

staticBOOLf24Hour,fSuppress;

staticHBRUSHhBrushRed;

staticintcxClient,cyClient;

HDChdc;

PAINTSTRUCTps;

TCHARszBuffer[2];

switch(message)

{

caseWM_CREATE:

hBrushRed=CreateSolidBrush(RGB(255,0,0));

SetTimer(hwnd,ID_TIMER,1000,NULL);

//fallthrough

caseWM_SETTINGCHANGE:

GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_ITIME,szBuffer,2);

f24Hour=(szBuffer[0]=='1');

GetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_ITLZERO,szBuffer,2);

fSuppress=(szBuffer[0]=='0');

InvalidateRect(hwnd,NULL,TRUE);

return0;

caseWM_SIZE:

cxClient=LOWORD(lParam);

cyClient=HIWORD(lParam);

return0;

caseWM_TIMER:

InvalidateRect(hwnd,NULL,TRUE);

return0;

caseWM_PAINT:

hdc=BeginPaint(hwnd,&ps);

SetMapMode(hdc,MM_ISOTROPIC);

SetWindowExtEx(hdc,276,72,NULL);

SetViewportExtEx(hdc,cxClient,cyClient,NULL);

SetWindowOrgEx(hdc,138,36,NULL);

SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL);

SelectObject(hdc,GetStockObject(NULL_PEN));

SelectObject(hdc,hBrushRed);

DisplayTime(hdc,f24Hour,fSuppress);

EndPaint(hwnd,&ps);

return0;

caseWM_DESTROY:

KillTimer(hwnd,ID_TIMER);

DeleteObject(hBrushRed);

PostQuitMessage(0);

return0;

}

returnDefWindowProc(hwnd,message,wParam,lParam);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1