怎样在DLL里使用计时器的消息循环?
怎样在DLL里使用计时器的消息循环? 说明详细些,如有例子,请发到本人的邮箱lzf39@163.com,谢谢!
注:在Project=>Setting=>General :Microsoft Foundation Classes 设置NoT Using MFC
问题点数:20、回复次数:4Top
1 楼dongfa(一桶江湖( http://www.codelive.net ))回复于 2005-06-01 11:58:02 得分 5
建立一个窗口
HWND hWnd = ::CreateWindow
// timer 响应函数
VOID CALLBACK TimerProc( HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
)
{
return 0;
}
然后::SetTimer(hWnd, 1, 200, TimerProc);Top
2 楼dongfa(一桶江湖( http://www.codelive.net ))回复于 2005-06-01 13:49:16 得分 5
使用线程
unsigned __stdcall timerthread(void *lParam)
{
while(!m_bStop)
{
// 做你的工作
int nStart = GetTickCount();
int nTime = 5000; // 假设为5秒
while(!m_bStop) // 写这个循环是为了能够快速退出
{
if((GetTickCount() - nStart) >= nTime)
break ;
Sleep(5);
}
}
_endthreadex(0);
return 0;
}
BOOL m_bStop = FALSE;
_beginthreadex(NULL, 0, timerthread, ,
退出时设置
m_bStop = TRUE;Top
3 楼dongfa(一桶江湖( http://www.codelive.net ))回复于 2005-06-01 13:52:12 得分 5
或者使用timeSetEventTop
4 楼orbit(走了走了)回复于 2005-06-01 14:14:57 得分 5
VOID TimerProc(HWND hwnd,UINT uMsg,UINT_PTR idEvent,DWORD dwTime)
{
//......
}
SetTimer(NULL,nIDEvent,500,TimerFunc);
不依赖窗口消息,TimerProc每500毫秒被调用一次Top




