关于 c :OnTimer 从未被调用,不确定为什么?

OnTimer never being called, unsure why?

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

提前致谢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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() 定位在正确的位置。

1
2
3
4
5
BEGIN_MEESAGE_MAP(...)
     // ..
     ON_WM_TIMER()
     // ..
END_MESSAGE_MAP()