当类向导损坏时,将计时器 (WM_TIMER) 处理程序添加到 Visual C++ 6.0?
Posted
技术标签:
【中文标题】当类向导损坏时,将计时器 (WM_TIMER) 处理程序添加到 Visual C++ 6.0?【英文标题】:Add a Timer (WM_TIMER) handler to a Visual C++ 6.0 when Class Wizard is broken? 【发布时间】:2013-01-20 19:37:37 【问题描述】:我有一个 MFC Visual C++ 应用程序,它似乎无法在类向导中工作,但是,我有一个视图 (CServerView),我想向其中添加一个 WM_TIMER 事件处理程序。
我已经知道如何调用CWnd::SetTimer
和CWnd::KillTimer
,但十多年来我没有做的是修改消息映射。我不确定我应该为我的 CView 子类修改的地图是 ServerView.cpp 文件的这一部分,还是 ServerView.h 中的某个部分:
BEGIN_MESSAGE_MAP(CServerView, CListView)
//AFX_MSG_MAP(CServerView)
ON_COMMAND(ID_DRIVER_START, OnDriverStart)
ON_UPDATE_COMMAND_UI(ID_DRIVER_START, OnUpdateDriverStart)
...
// Standard printing commands
END_MESSAGE_MAP()
这可能是一件微不足道的事情,但我面临的两个复杂问题是在线文档都是针对最近的 Visual Studio 版本的,而我在 Visual C++ 6.0 中坚持这样做
【问题讨论】:
【参考方案1】:在你的头文件中:
afx_msg void OnTimer(UINT_PTR nIDEvent);
在您的 cpp 文件中:
BEGIN_MESSAGE_MAP(CMyView, CView)
ON_WM_TIMER()
END_MESSAGE_MAP()
void CMyView::StartTimer
m_nTimerID = SetTimer(2348,100,0);
void CMyView::OnTimer(UINT_PTR nIDEvent)
if(nIDEvent==m_nTimerID)
CView::OnTimer(nIDEvent);
【讨论】:
太棒了。我错过了标题中的部分,并且我错误地实现了我的 OnTimer()。【参考方案2】:我认为它被称为 ON_TIMER 或 ON_WM_TIMER。检查已安装的包含定义 ON_COMMAND&Co 的位置,在那里你会找到它。或者,在 MS' 在线搜索 MSDN。 顺便说一句,这个东西的名字没有改变,所以最近版本的文档还可以。我强烈建议升级,VC6,又名 VS98,今年已经 15 岁了,MS 早就停止了对它的任何支持。
【讨论】:
我知道。我要升级了。但是今天,我无法将这个巨大的应用程序更改为新的 VC++ 版本。 :-)以上是关于当类向导损坏时,将计时器 (WM_TIMER) 处理程序添加到 Visual C++ 6.0?的主要内容,如果未能解决你的问题,请参考以下文章