基本wxWidgets计时器

4

作为一个wxWidgets的新手,我需要一些关于如何使用wxTimer的示例代码。

官方文档提供了三种使用方法,但没有包含任何示例代码。最理想的情况是,我想让第二种方法运行起来。


链接已经失效了。 - AaronD
1个回答

9

(来自样例/widgets/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);

在文档中,我认为需要理解的第二个方法是您的主窗口对象是wxEventHandler,因此当您创建计时器时,计时器会将自己连接到“this”(您的窗口)。现在事件将发送到您的窗口,EVT_TIMER可能是将其连接到OnProgressTimer函数的最有效方法。
您还需要调用该函数...
void GaugeWidgetsPage::OnProgressTimer(wxTimerEvent& event)
{

这应该不会比那更困难。


谢谢,这个参考资料让我发现我声明计时器的方式是错误的。你需要声明一个wxTimer指针,然后通过它来访问。 - DShook
享受吧!我真的很喜欢wxWidgets编程。它内部有大量隐藏功能...可以从.zip文件中提供HTML页面,使用一堆eventHandlers来处理应用程序状态,使用window.pushEventHandler()。这太棒了,而且非常干净。 - Jim Carroll
1
我在我的安装中找不到示例,而你的部分枚举实际上并没有列出计时器ID本身。我花了太长时间才弄清楚它只是我自己编造的东西,只要它不与其他东西冲突就可以了。如果有示例可供参考,那么明确地包含它可能会有所帮助。否则,它仍然足够好以获得赞同。 - AaronD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接