【问题标题】:Basic wxWidgets Timer基本 wxWidgets 计时器
【发布时间】:2010-10-08 23:06:15
【问题描述】:

作为 wxWidgets 的新手,我需要一些示例代码来说明如何让 wxTimer 正常工作。

The reference 提供了 3 种使用方法,但不包括其中任何一种的示例代码。理想情况下,我想让方法 2 工作。

【问题讨论】:

  • 链接已经失效了。

标签: wxwidgets timer


【解决方案1】:

(来自示例/小部件/gauge.cpp:)

设置你的事件常量

enum
{ 
    GaugePage_Reset = wxID_HIGHEST,
    GaugePage_Progress,

将事件连接到您的成员函数(使用您的事件常量)

EVT_TIMER(GaugePage_Timer, GaugeWidgetsPage::OnProgressTimer)

然后你需要创建并启动你的计时器..

static const int INTERVAL = 300; // milliseconds
m_timer = new wxTimer(this, GaugePage_Timer);
m_timer->Start(INTERVAL);

在文档中,我认为要理解的第二种方法是您的主窗口对象 ISA wxEventHandler,因此当您创建计时器时,计时器会将其自身连接到“this”(您的窗口)。现在事件正在进入您的窗口,EVT_TIMER 可能是将其连接到您的 OnProgressTimer 函数的最有效方式。

您也需要调用该函数...

void GaugeWidgetsPage::OnProgressTimer(wxTimerEvent& event)
{

应该不会比这更困难。

【讨论】:

  • 谢谢,这个参考让我发现我在声明计时器错误。您需要声明一个 wxTimer 指针,然后以这种方式访问​​它。
  • 享受吧!我真的很喜欢 wxWidgets 编程。里面有很多隐藏的功能......从 .zip 文件中提供 html 页面,使用一组 eventHandlers 使用 window.pushEventHandler() 处理应用程序状态。它很棒,而且很干净。
  • 我在我的安装中找不到示例,并且您的部分枚举实际上并未列出计时器 ID 本身。我花了很长时间才弄清楚这只是我编造的东西,只要它不与其他东西冲突。如果没有要参考的示例,在此处明确包含它可能会有所帮助。否则,它仍然足以支持。
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多