SOUI官方论坛

 找回密码
 立即注册
查看: 69|回复: 2

控件中使用定时器的问题

[复制链接]
  • TA的每日心情
    开心
    2020-2-7 13:49
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    2

    主题

    8

    帖子

    223

    积分

    02:00元婴期

    Rank: 3Rank: 3

    积分
    223
    发表于 2020-2-7 14:02:09 | 显示全部楼层 |阅读模式
    请教各位,自定义了一个控件,使用定时器如下:
    在头文件中定义:
                            void OnPaint(IRenderTarget *pRT);
                            void OnTimer(UINT_PTR nIDEvent);
                            SOUI_MSG_MAP_BEGIN()
                                    MSG_WM_PAINT_EX(OnPaint)
                                    MSG_WM_TIMER_EX(OnTimer)
                            SOUI_MSG_MAP_END()


    在CPP中实现:
            void SCoordAxis::OnTimer(UINT_PTR nIDEvent)
            {
                    if(1 == nIDEvent)
                    {
                            KillTimer(1);
                            KillTimer(1);
                    }
                    if(1 == nIDEvent)
                    {
                            m_ActualData.x += 500;
                            m_ActualData.x = ROUND(((float)m_ActualData.x * 1000.0 / m_TotalTime));
                            m_ActualData.y = 15000 + rand() * 100;
                            m_LineData.Add(m_ActualData);
                            m_bRefresh = TRUE;
                    }
            }

    在按钮控件中启动定时器
            void SCoordAxis::OnStart(void)
            {
                    MessageBox(NULL, L"123456", L"7***5", MB_OK);
                    m_ActualData = (0,0);
                    m_LineData.RemoveAll();
                    SWindow::SetTimer(1, 300);
                    SWindow::SetTimer(2, 100);
            }

    实际运行后出现异常,跟踪是在执行到SetTimer时出现异常
    捕获.PNG

    不知何故?求解
  • TA的每日心情
    开心
    2020-2-7 13:49
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    2

    主题

    8

    帖子

    223

    积分

    02:00元婴期

    Rank: 3Rank: 3

    积分
    223
     楼主| 发表于 2020-2-7 14:22:13 | 显示全部楼层
    上面的代码有点问题,但是问题依旧,修改代码如下:
            void SCoordAxis::OnTimer(UINT_PTR nIDEvent)
            {
                    if(2 == nIDEvent)
                    {
                            m_ActualData.x += 500;
                            m_ActualData.x = ROUND(((float)m_ActualData.x * 1000.0 / m_TotalTime));
                            m_ActualData.y = 15000 + rand() * 100;
                            m_LineData.Add(m_ActualData);
                            m_bRefresh = TRUE;
                    }
                    if(1 == nIDEvent)
                    {
                            KillTimer(1);
                            KillTimer(2);
                    }
            }
  • TA的每日心情
    开心
    昨天 08:40
  • 签到天数: 32 天

    [LV.5]常住居民I

    373

    主题

    829

    帖子

    7861

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    7861
    发表于 2020-2-7 15:32:35 | 显示全部楼层
    SOUI中自己的定时器,你找找看
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|SOUI官方论坛 ( 粤ICP备18103663号-2 )

    GMT+8, 2020-2-21 05:18

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表