博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
win32 ——定时器消息 小程序:打印时间
阅读量:6592 次
发布时间:2019-06-24

本文共 3528 字,大约阅读时间需要 11 分钟。

//定时器消息//设置了定时器之后,操作系统每隔一段相同的时间就产生WM_TIMER消息//原型UINT_PTR SetTimer(    HWND hWnd,                 //窗口句柄    UINT_PTR nIDEvent,         //定时器id    UINT 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
#include
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; //register ATOM res = RegisterClass(&wc); if (!res) { MessageBox(NULL, _T("注册失败"), ClassName, MB_OK); return 0; } //create HWND 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 circle MSG 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;}

 

转载于:https://www.cnblogs.com/ming-michelle/p/7633291.html

你可能感兴趣的文章
我的友情链接
查看>>
oracle 如果为空则输出0
查看>>
Mysql聚合函数count(*) 的性能分析
查看>>
[Cordova-IOS]JavaScript与Swift交互
查看>>
Spfa(最短路求解)
查看>>
用一个view来自定义tabbarController,可以实现隐藏
查看>>
存储过程中高性能安全式SQL拼接
查看>>
使用linux-c编程实现简单的ls命令
查看>>
ThinkPHP3.2.3下使用create函数更新数据安全使用方法
查看>>
IT鲨鱼:你的站为什么会被K?
查看>>
Q:按F12进行网络安装系统时,一直无法进入,提示加载失败?
查看>>
我的友情链接
查看>>
绘制几何图形:使用android.graphics类
查看>>
libdash编译中遇到的问题及解决方案
查看>>
基于SSH框架、Oracle数据库、easyui的分页显示
查看>>
我的友情链接
查看>>
解决AutoCAD acmgd.dll ARX命令中发现异常
查看>>
详解using backup controlfile
查看>>
我的友情链接
查看>>
手动编译安装LAMP
查看>>