在线程里面使用SetTimer定时器
来源:互联网 发布:淘宝网址微信转换 编辑:程序博客网 时间:2024/06/05 17:51
// MyThreadTimer.h
#pragma once
class MyThreadTimer
: public CWinThread
{
DECLARE_MESSAGE_MAP()
public:
MyThreadTimer(void);
~MyThreadTimer(void);
public:
bool start(int second);
void stop();
private:
virtual BOOL InitInstance();
virtual int Run();
private:
virtual void onTimer(WPARAM wParam, LPARAM lParam);
virtual void onStartTimer(WPARAM wParam, LPARAM lParam);
virtual void onStopTimer(WPARAM wParam, LPARAM lParam);
private:
UINT_PTR _timerID;
};
// MyThreadTimer.cpp
#include "StdAfx.h"
#include "MyThreadTimer.h"
#define WM_MY_TIMER (WM_USER + 1)
#define WM_MY_START_TIMER (WM_USER + 2)
#define WM_MY_STOP_TIMER (WM_USER + 3)
BEGIN_MESSAGE_MAP(MyThreadTimer, CWinThread)
ON_THREAD_MESSAGE(WM_MY_TIMER, MyThreadTimer::onTimer)
ON_THREAD_MESSAGE(WM_MY_START_TIMER, MyThreadTimer::onStartTimer)
ON_THREAD_MESSAGE(WM_MY_STOP_TIMER, MyThreadTimer::onStopTimer)
END_MESSAGE_MAP()
VOID CALLBACK timerFun(HWND wnd, UINT msg, UINT_PTR id, DWORD d)
{
DWORD threadID = GetCurrentThreadId();
PostThreadMessage(threadID, WM_MY_TIMER, 0, 0);
}
MyThreadTimer::MyThreadTimer(void)
:_timerID(NULL)
{
}
MyThreadTimer::~MyThreadTimer(void)
{
}
bool MyThreadTimer::start(int second)
{
if (m_hThread != NULL)
{
return false;
}
m_bAutoDelete = FALSE;
CreateThread();
PostThreadMessage(WM_MY_START_TIMER, (WPARAM)second, 0);
return true;
}
void MyThreadTimer::stop()
{
if (m_hThread == NULL)
{
return;
}
PostThreadMessage(WM_MY_STOP_TIMER, 0, 0);
PostThreadMessage(WM_QUIT, 0, 0);
WaitForSingleObject(m_hThread, INFINITE);
}
BOOL MyThreadTimer::InitInstance()
{
return TRUE;
}
int MyThreadTimer::Run()
{
return CWinThread::Run();
}
void MyThreadTimer::onTimer(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox(_T("定时器时间到了"));
}
void MyThreadTimer::onStartTimer(WPARAM wParam, LPARAM lParam)
{
_timerID = SetTimer(NULL, 0, int(wParam) * 1000, timerFun);
}
void MyThreadTimer::onStopTimer(WPARAM wParam, LPARAM lParam)
{
KillTimer(NULL, _timerID);
}
- 在线程里面使用SetTimer定时器
- 在线程里面使用SetTimer定时器
- SetTimer() ---定时器的使用
- SetTimer 定时器的使用
- 定时器与多线程 SetTimer and Multi-Thread 每个线程独立使用一个定时器
- 定时器与多线程 SetTimer and Multi-Thread 每个线程独立使用一个定时器
- SetTimer在无窗口和有窗口线程的使用
- SetTimer在无窗口和有窗口线程的使用 .
- SetTimer 定时器
- 定时器:SetTimer
- SetTimer 函数在控制台应用程序中的应用 (在控制台应用程序中使用定时器)
- MFC中的定时器SetTimer的使用
- MFC定时器使用(CWnd::SetTimer)
- 定时器SetTimer如何使用在win32控制台应用程序中(2)
- 在线程中使用定时器的例子!
- 在子线程里面使用Toast
- 定时器SetTimer如何用在win32控制台用用程序中
- 编程使用系统热键{定时器SetTimer()和GetAsyncKeyState()}
- 欢迎使用CSDN-markdown编辑器
- 想做数据科学家/工程师?从零开始系统规划大数据学习之路
- 用shell 脚本写守护进程
- C++Primer第五版中的c++11特性归纳(三)
- Extjs 点击一次button触发多次请求
- 在线程里面使用SetTimer定时器
- EditText判断是否可以编辑
- 价值网络和策略网络的简单融合
- Eclipse常用快捷键
- 0_Linux简介
- Oracle数据库相关知识点复习
- Druid介绍
- Java Collections源码与用法
- QT控件大全四QMeter