如何将wxWidgets的计时器连接到使用wxEvtHandler ::连接事件

我一直在想我的定时器连接到的功能。 在我的派生类中我在做什么是

Timer->SetOwner(this,wxID_Timer); Timer->Connect(wxID_Timer,wxTimerEventHandler( Window::OnUpdate ), NULL, this );

凡我的OnUpdate中声明

void OnUpdate( wxTimerEvent& event );

任何一个可以告诉我什么是错在这里,为什么不的OnUpdate被定期调用后,我开始计时? 谢谢,麻烦您了。

另外,我没有使用上wxTimer桌子。对方的回答是没有帮助我的静态事件。

--------------解决方案-------------

后一点的寻找其实,我找到了答案,没有人回答,所以我在这里张贴。 有报道说,我是做错了一些事情。 一世。 其实我不得不类连接到我的计时器。 这意味着我不得不做一些像

this->Connect(Timer.GetId(),wxEVT_TIMER,wxTimerEventHandler( Window::OnUpdate ), NULL, this );

凡wxEVT_TIMER是事件类型。

同样断开

this->Disconnect(wxID_Timer,wxEVT_TIMER,wxTimerEventHandler( Window::OnUpdate ), NULL, this );

答案并没有为我工作。 这是我做的,而不是。

你首先必须让你的框架拥有了wxtimer发出的事件。

m_timer.SetOwner( this );

然后你可以有你的框架的事件处理程序处理的事件。 如果你只有一个计时器,用这个。

this->Connect( wxEVT_TIMER, wxTimerEventHandler( Frame::OnTimer ), NULL, this );

如果您有多个计时器,用它来每个计时器的事件连接到不同的功能。

this->Connect( m_timer.GetId(), wxEVT_TIMER, wxTimerEventHandler( Frame::OnTimerForSpecificTimer ), NULL, this );

这样做会允许框架把定时器事件在其事件队列并且当它可以处理它。

似乎这里有些混乱,所以让我尝试将其清除。

可以拨打timer->Connect(...)的定时器本身或使用 SetOwner(frame) ,然后做frame->Connect(...)

调用SetOwner()然后调用Connect()计时器并没有太大的意义,因为SetOwner()确保计时器事件直接交付给业主。 但是默认情况下是没有所有者和定时发送事件本身这就是为什么没有SetOwner()调用,必须调用Connect()上的计时器。

分类:C# 时间:2015-03-15 人气:0
本文关键词: wxWidgets的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.229 (s). 10 q(s)