Module: VRTimerFeasible

Includes:
VRMessageHandler
Defined in:
lib/vr/vrtimer.rb

Constant Summary collapse

SetTimer =
Win32API.new("USER32", "SetTimer",['L', 'I', 'I', 'L'], 'I')
KillTimer =
Win32API.new("USER32", "KillTimer",['L', 'L'], 'I')
WM_TIMER =
275

Constants included from VRMessageHandler

VRMessageHandler::PREHANDLERSTR

Instance Method Summary collapse

Methods included from VRMessageHandler

#acceptEvents, #addHandler, #addNoRelayMessages, #controlmsg_dispatching, #deleteHandler, #msghandlerinit, #selfmsg_dispatching

Instance Method Details

#addTimer(interval = 1000, timername = "self") ⇒ Object



88
89
90
91
92
93
94
# File 'lib/vr/vrtimer.rb', line 88

def addTimer(interval=1000,timername="self")
  id=newtimerid
  SetTimer.call(self.hWnd,id,interval,0)
  @_vr_timers=[] unless defined? @_vr_timers
  @_vr_timers[id] = [timername,interval]
  id
end

#deleteTimer(timername = "self") ⇒ Object



96
97
98
99
100
101
102
103
104
105
# File 'lib/vr/vrtimer.rb', line 96

def deleteTimer(timername="self")
  id=timerid(timername)

 if id then
    KillTimer.call(self.hWnd,id)
    @_vr_timers[id]=nil
  else
    raise RuntimeError,"No such Timer"
  end
end

#self_vrtimer(id) ⇒ Object

WM_TIMER handler



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/vr/vrtimer.rb', line 64

def self_vrtimer(id)       # WM_TIMER handler
  name=@_vr_timers[id][0].dup
  class << name
    def name; self; end
  end
#    name += "_"+"timer"
#    selfmsg_dispatching(name)
  controlmsg_dispatching(name,"timer")
#
  send(name) if respond_to?(name)
end

#timeralive?(tname = "self") ⇒ Boolean

Returns:

  • (Boolean)


118
119
120
# File 'lib/vr/vrtimer.rb', line 118

def timeralive?(tname="self")
  timerid(tname).is_a?(Integer)
end

#timerfeasibleinitObject



81
82
83
84
85
86
# File 'lib/vr/vrtimer.rb', line 81

def timerfeasibleinit
  @_vr_timerinterval=1000
  addHandler WM_TIMER,  "vrtimer",  MSGTYPE::ARGWINT,nil  #check
  addEvent WM_TIMER
  addNoRelayMessages [WM_TIMER]
end

#timerid(timername = "self") ⇒ Object



107
108
109
110
111
112
113
114
115
116
# File 'lib/vr/vrtimer.rb', line 107

def timerid(timername="self")
  return nil unless @_vr_timers
  r=nil
  1.upto(@_vr_timers.size-1) do |i|
    if @_vr_timers[i] and @_vr_timers[i][0]==timername then
      r=i
    end
  end
  r
end

#vrinitObject



76
77
78
79
# File 'lib/vr/vrtimer.rb', line 76

def vrinit
  super
  timerfeasibleinit
end