标签:event ide 创建 func result cas const clu ret
//定时器消息
//设置了定时器之后,操作系统每隔一段相同的时间就产生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;
}
win32 ——定时器消息 小程序:打印时间
标签:event ide 创建 func result cas const clu ret
原文地址:http://www.cnblogs.com/ming-michelle/p/7633291.html