非窗口类中使用定时器的方法及相关知识的介绍
2006-07-20 11:38:11 来源:WEB开发网核心提示: #include "stdafx.h"#include "MyTimer.h"//必须要在外部定义一下静态数据成员CTimerMap CMyTimer::m_sTimeMap;CMyTimer::CMyTimer(){m_nTimerID = 0;}
#include "stdafx.h"
#include "MyTimer.h"
//必须要在外部定义一下静态数据成员
CTimerMap CMyTimer::m_sTimeMap;
CMyTimer::CMyTimer()
{
m_nTimerID = 0;
}
CMyTimer::~CMyTimer()
{
}
void CALLBACK CMyTimer::MyTimerProc(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime)
{
CString sz;
sz.Format("%d号定时器:%s",
idEvent,
m_sTimeMap[idEvent]->szContent);
AfxMessageBox(sz);
}
void CMyTimer::SetMyTimer(UINT nElapse,CString sz)
{
szContent = sz;
m_nTimerID = SetTimer(NULL,NULL,nElapse,MyTimerProc);
m_sTimeMap[m_nTimerID] = this;
}
void CMyTimer::KillMyTimer()
{
KillTimer(NULL,m_nTimerID);
m_sTimeMap.RemoveKey(m_nTimerID);
}
这样就完成了在非窗口类中使用定时器的方法。以上这些代码都在Windwos 2000 Professional 和 Visual C++ 6.0中编译通过。
五、结论
通过以上的介绍,大家应该知道如何在静态成员函数中访问非静态数据成员和非静态成员函数,并了解了如何在非窗口类中使用定时器。当然这只是解决这个问题的一种方法,相信还有更好的解决办法。这个种方法有一定的灵活性,可以在很多地方用到,例如网络程序中的连接超时以及定时刷新等需要自己来控制,就可以使用这种方法。
参考文献:
1 潘爱民 张丽.C++ Primer 中文版.(第三版).北京:中国电力出版社.2002
2 Jeff Prosise.MFC Windows 程序设计.(第二版).北京:清华大学出版社.2001
3 王险峰,刘宝宏.Windows环境下的多线程编程原理与应用.北京:清华大学出版社.2002
4 侯俊杰.深入浅出MFC.台湾:松岗电脑图资料股份有限公司.1998
作者简介:
姓 名:刘辉
笔 名:我在人间
工作单位:网进科技昆山有限公司
联系方式:Email:jemmyliu@163.com
专业职称:软件工程师
研究方向:利用Visual C++进行软件开发
笔者注:这是我写的第一篇关于编程方面的技术文章,写这篇文章的目的只是把自己平时做项目和学习的过程中觉得比较用的方法,技巧与大家分享。其中难免有不少的错误,请来信指出!
更多精彩
赞助商链接