c++ - wxWidgets 计时器不启动?
问题描述
这个 wxWidgets 代码(模拟便携式sleep)不起作用。
MyClass::MyClass(){
m_timer = std::make_shared<wxTimer>(this, ID_TIMER);
}
void MyClass::WaitOneSecond()
{
m_timer->StartOnce(1000);
while (m_timer->GetInterval() < 1000);
}
通过 WaitOneSecond 调用单步执行 Visual Studio 时,不会出现延迟。 为什么 ?...
解决方案
AwxwTimer
适用于WxWidget
的事件循环。
这意味着它会在延迟到期后通知您,但您必须交还控制权。
如文档中所述:
有三种不同的方式来使用这个类:
- 您可以从 wxTimer 派生一个新类并覆盖 wxTimer::Notify 成员以执行所需的操作。
- 您可以使用非默认构造函数或 wxTimer::SetOwner 将通知重定向到任何 wxEvtHandler 派生对象。然后使用 EVT_TIMER 宏将其连接到将接收 wxTimerEvent 通知的事件处理程序。
- 您可以使用派生类和 EVT_TIMER 宏将其连接到派生类中定义的事件处理程序。如果使用默认构造函数,则计时器对象将是它自己的所有者对象,因为它是从 wxEvtHandler 派生的。
推荐阅读
- javascript - 屏幕尺寸上的响应 D3 直方图
- python - 为什么我的 POST Webhook 不能在 Django 中工作?
- node.js - 使用节点js执行bat文件
- git - 使用预提交时,mypy 检查通过但打印 mypy 语法错误
- c# - Blazor 中的 Google Chrome 扩展
- python - 将 TouchSensor 添加到 URDF 创建的机械臂
- android - 获取最后一个已知位置(ACCESS_COARSE_LOCATION + 无谷歌服务)
- dart - 如何在 Dart 单元测试中通过对象的状态(所有属性值)断言对象?
- delphi - 如何使用 Delphi 将浮点数据复制到字节数组中?
- angular - 使用动态添加的组件的输出和输入事件关闭扩展面板