日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC++控制台程序中使用定时器

發布時間:2025/4/14 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC++控制台程序中使用定时器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?我現在項目是一個控制臺程序,用到的Win32API都是與界面無關的,今天需要加入定時器刷新的功能,由于沒有消息循環,所以WM_TIMER消息應該如何處理呢?綜合了下網上找到的資料,寫了個簡單的demo,個人以為這種在一個線程中創建定時器,再通過指定的回調函數來處理定時器觸發的模式是比較好的。


#include???<windows.h>???
#include???<stdio.h>???
#include???<conio.h>???

int???count???=0;???

VOID?CALLBACK?TimerProc(HWND?hwnd,UINT?uMsg,UINT_PTR?idEvent,DWORD?dwTime)
{
????count++;???
????printf("WM_TIMER???in???work???thread???count=%d\n",count);???
}

DWORD?CALLBACK???Thread(PVOID???pvoid)???
{???
????MSG??msg;???
????PeekMessage(&msg,NULL,WM_USER,WM_USER,PM_NOREMOVE);???
????UINT??timerid=SetTimer(NULL,111,3000,(TIMERPROC)TimerProc);???
????BOOL??bRet;???
????
????while(???(bRet?=?GetMessage(&msg,NULL,0,0))!=???0)???
????{?????
????????if(bRet==-1)???
????????{???
????????????//???handle???the???error???and???possibly???exit???
????????}???
????????else???
????????{????
????????????TranslateMessage(&msg);?????
????????????DispatchMessage(&msg);?????
????????}???
????}???
????KillTimer(NULL,timerid);???
????printf("thread???end???here\n");???
????return???0;???
}

int????main()???
{???
????DWORD???dwThreadId;???
????printf("use???timer???in???workthread???of???console???application\n");???
????HANDLE???hThread??=????CreateThread(NULL,0,Thread,0,0,&dwThreadId);
????_getch();?
????return?0;
}? ?

轉載于:https://www.cnblogs.com/winkyao/archive/2012/02/17/2355536.html

總結

以上是生活随笔為你收集整理的VC++控制台程序中使用定时器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。