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

提前致谢

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()

关于c++ - 永远不会调用OnTimer,不确定为什么吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28444031/

10-12 13:02