第八章 8-2 数字时钟
来源:互联网 发布:怎么检测网络是否正常 编辑:程序博客网 时间:2024/06/07 18:27
1,获取当前时间 GetLocalTime
SYSTEMTIME st;typedef struct _SYSTEMTIME { WORD wYear; WORD wMonth; WORD wDayOfWeek; WORD wDay; WORD wHour; WORD wMinute; WORD wSecond; WORD wMilliseconds;} SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;GetLocalTime(&st);
2,数字时钟实例
#define ID_TIMER 1//根据窗口坐标,整个数字应该是倒过来void DisplayDigit(HDC hdc, int iNumber){ static BOOL fSevenSegment[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,1,0,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 };//规划每一个数字8 static POINT ptSegment[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 }; int iSeg; for(iSeg = 0;iSeg < 7 ;iSeg++) { if (fSevenSegment[iNumber][iSeg]) Polygon(hdc, ptSegment[iSeg], 6); }}//显示两个数字 void DisplayTwoDigits(HDC hdc, int iNumber) { DisplayDigit(hdc, iNumber / 10); OffsetWindowOrgEx(hdc, -42, 0, NULL); DisplayDigit(hdc, iNumber % 10); OffsetWindowOrgEx(hdc, -42, 0, NULL); }//显示数字中间的冒号 void DisplayColon(HDC hdc) { POINT ptColon[2][4] = { 2,21,6,17,10,21,6,25, 2,51,6,47,10,51,6,55 }; Polygon(hdc, ptColon[1], 4); Polygon(hdc, ptColon[0], 4); OffsetWindowOrgEx(hdc, -12, 0, NULL); }//数字时钟显示当前的时间 void DisplayTime(HDC hdc) { SYSTEMTIME st; GetLocalTime(&st);//获取当前系统的时间 DisplayTwoDigits(hdc, st.wHour); DisplayColon(hdc); DisplayTwoDigits(hdc, st.wMinute); DisplayColon(hdc); DisplayTwoDigits(hdc, st.wSecond); }LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ static HBRUSH hBrushRed; RECT rect; static int cxClient, cyClient; switch (message) { case WM_SIZE: cxClient = LOWORD(lParam); cyClient = HIWORD(lParam); break; case WM_CREATE: hBrushRed = CreateSolidBrush(RGB(255, 0, 0)); SetTimer(hWnd, ID_TIMER, 1000, NULL); break; case WM_TIMER: InvalidateRect(hWnd, NULL,TRUE); break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // TODO: 在此处添加使用 hdc 的任何绘图代码... /* DisplayTwoDigits(hdc, 17); DisplayColon(hdc); DisplayTwoDigits(hdc, 40);*/ //使用映射模式映射到整个窗口 SetMapMode(hdc, MM_ISOTROPIC); SetWindowExtEx(hdc, 276, 72, NULL); SetViewportExtEx(hdc, cxClient, cyClient, NULL); //改变视口和窗口的坐标原点 SetViewportOrgEx(hdc, cxClient/2, cyClient/2, NULL); SetWindowOrgEx(hdc, 138, 36, NULL); //选择画笔和话刷 SelectObject(hdc, GetStockObject(NULL_PEN)); SelectObject(hdc, hBrushRed); DisplayTime(hdc); EndPaint(hWnd, &ps); } break; case WM_DESTROY: DeleteObject(hBrushRed); KillTimer(hWnd, ID_TIMER); PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;}
0 0
- 第八章 8-2 数字时钟
- 第八章 8-4 数字时钟
- 计时器(2)之数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟
- 数字时钟的源代码
- 数字时钟(代码)
- java数字时钟
- js数字时钟
- 数字时钟语音温度计
- 初识java线程池
- cocos2D文档的使用 2
- PHP获取当前文件路径信息的方法
- 设计模式C++实现(3)——适配器模式
- Android用surface直接显示yuv数据
- 第八章 8-2 数字时钟
- CodeForces 632 C.The Smallest String Concatenation(水~)
- 设计模式C++实现(4)——单例模式
- 大数据生态
- 使用vitaimo搭建可以播放组播流的播放器
- 设计模式C++实现(5)——原型模式、模板方法模式
- Druid的简介及功能
- NS3 使用可视化工具PyViz
- 二叉树中和为某一值的路径(Java实现)