失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > win32 ——定时器消息 小程序:打印时间

win32 ——定时器消息 小程序:打印时间

时间:2022-08-05 02:20:06

相关推荐

win32 ——定时器消息   小程序:打印时间

//定时器消息//设置了定时器之后,操作系统每隔一段相同的时间就产生WM_TIMER消息//原型UINT_PTR SetTimer(HWND hWnd, //窗口句柄UINT_PTR nIDEvent, //定时器idUINT uElapse, // 每隔多长时间TIMERPROC lpTimerFunc); //处理函数//一、winproc中case WM_TIMER:处理SetTimer(hwnd, 1, 1000, NULL);//显示更新窗口之后, 消息循环之前//二、自定义timeproc中处理SetTimer(hwnd, 1, 1000, timeproc);//显示更新窗口之后, 消息循环之前//最后都要在while()结束时KillTimer(hwnd, 1); //对应ID号//===========================小程序:打印时间=========================

//My Projecr

#include<windows.h>#include<tchar.h>HANDLE g_h;void CALLBACK timeProc(HWND hWnd, UINT id, UINT_PTR xxx, DWORD ooo){// //获取系统的UTC时间。 //// SYSTEMTIME stUTC;//// ::GetSystemTime(&stUTC);////// //显示时间的间隔。 //// const int nBufSize = 256;//// TCHAR chBuf[nBufSize];//// wsprintf(chBuf, _T("UTC: %u/%u/%u %u:%u:%u:%u %d\r\n"),//// stUTC.wYear, stUTC.wMonth, stUTC.wDay,//// stUTC.wHour, stUTC.wMinute, stUTC.wSecond,//// stUTC.wMilliseconds, stUTC.wDayOfWeek);//// WriteConsole(g_h, chBuf, _tcslen(chBuf), NULL, NULL);////获取当地的时间。 SYSTEMTIME stLocal;::GetLocalTime(&stLocal);//显示时间的间隔。 const int nBufSize = 256;TCHAR chBuf[nBufSize];//显示时间的间隔。 wsprintf(chBuf, _T(" %02d:%02d:%02d\n"),stLocal.wHour, stLocal.wMinute, stLocal.wSecond);WriteConsole(g_h, chBuf, _tcslen(chBuf), NULL, NULL);}TCHAR ClassName[100] = _T("潭州");LRESULT CALLBACK winProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp){switch (msg){case WM_DESTROY:PostQuitMessage(0);break;/*case WM_TIMER:WriteConsole();*/default:break;}return DefWindowProc(hWnd, msg, wp, lp);}int WinMain(HINSTANCE hIns, HINSTANCE hPIns, LPSTR lpCmd, int show){WNDCLASS wc;wc.hInstance = hIns;wc.lpfnWndProc = winProc;wc.hCursor = NULL;wc.hIcon = NULL;wc.style = NULL;wc.hbrBackground = NULL;wc.lpszMenuName = NULL;wc.lpszClassName = ClassName;wc.cbClsExtra = NULL;wc.cbWndExtra = NULL;//registerATOM res = RegisterClass(&wc);if (!res){MessageBox(NULL, _T("注册失败"), ClassName, MB_OK);return 0;}//createHWND hWnd = CreateWindow(ClassName, _T("hello world"), WS_OVERLAPPEDWINDOW, 520, 100, 520, 520, NULL, NULL, hIns, NULL);if (!hWnd){MessageBox(NULL, _T("创建失败"), ClassName, MB_OK);return -1;}//show ShowWindow(hWnd, SW_SHOW);//update UpdateWindow(hWnd);//定时器SetTimer(hWnd, 1, 1000, timeProc);//SetTimer(hWnd, 2, 1000, NULL);//message circleMSG msg = { 0 };//分配一个控制台 AllocConsole();//获取句柄 标准输出句柄g_h = GetStdHandle(STD_OUTPUT_HANDLE);//写入到屏幕WriteConsole(g_h, _T("时间\n"), _tcslen(_T("时间\n")), NULL, NULL);//PeekMesssge只得到那些与参数hWnd标识的窗口相联系的消息或被lsChild确定为其子窗口相联系的消息,//并且该消息要在由参数wMsgFiterMin和wMsgFiherMax确定的范围内。//如果hWnd为NULL,则PeekMessage接收属于当前调用线程的窗口的消息(PeekMessage不接收属于其他线程的窗口的消息)。//如果hWnd为 - 1,PeekMessage只返回hWnd值为NULL的消息,该消息由函数PostThreadMessage寄送。//如果wMsgFilterMin和wMsgFilterMax都为零,PeekMessage返回所有可得的消息(即,无范围过滤)。while (1){if (PeekMessage(&msg, NULL, 0,0,PM_NOREMOVE)){if (!GetMessage(&msg, NULL, 0, 0)){break;}else{TranslateMessage(&msg);DispatchMessage(&msg);}}else{}}KillTimer(hWnd, 1);return 0;}

如果觉得《win32 ——定时器消息 小程序:打印时间》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。