1

我有一个 MFC Visual C++ 应用程序,它似乎无法在类向导中工作,但是,我有一个视图 (CServerView),我想向其中添加一个 WM_TIMER 事件处理程序。

我已经知道如何调用CWnd::SetTimerCWnd::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 中坚持这样做

4

2 回答 2

7

在你的头文件中:

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);
}
于 2013-01-20T19:45:13.673 回答
1

我认为它被称为 ON_TIMER 或 ON_WM_TIMER。检查已安装的包含定义 ON_COMMAND&Co 的位置,在那里你会找到它。或者,在 MS' 在线搜索 MSDN。顺便说一句,这个东西的名字没有改变,所以最近版本的文档还可以。我强烈建议升级,VC6,又名 VS98,今年已经 15 年了,MS 早就停止了对它的任何支持。

于 2013-01-20T19:41:58.613 回答