OnTimer从未被调用,不确定原因

OnTimer never being called, unsure why?

本文关键字:不确定 调用 OnTimer      更新时间:2023-10-16

遇到一些麻烦,现在我只是想让一个图像在屏幕上移动,变量和定位都在工作,但由于某种原因,OnTimer从未被调用,我在它里面放了一个断点,但它从未到达。没有错误,所以我认为所有方法和变量都在标题中正确定义。

提前感谢

BOOL Client::OnInitDialog()
{
    CDialogEx::OnInitDialog();
    //StartGame();
    m_PlayerPosTop = 0;  // 384
    m_PlayerPosLeft = 0;
    m_PlayerImg.MoveWindow(m_PlayerPosLeft, m_PlayerPosTop, 16, 16);
    m_nTimer = SetTimer(0, 1000, 0);
    return TRUE;
}
    void Client::OnTimer(UINT_PTR nIDEvent)
{
    m_PlayerPosLeft++;
    m_PlayerImg.MoveWindow(m_PlayerPosLeft, m_PlayerPosTop, 16, 16);
    CDialogEx::OnTimer(nIDEvent);
}

由于MFC是一个消息驱动的系统,您没有看到OnTimer被激发的一个可能原因是您忘记将ON_WM_TIMER()定位在正确的位置。

BEGIN_MEESAGE_MAP(...)
     // ..
     ON_WM_TIMER()
     // ..
END_MESSAGE_MAP()