Module: VRTimerFeasible
Constant Summary
collapse
- SetTimer =
Win32API.new("USER32", "SetTimer",['L', 'I', 'I', 'L'], 'I')
- KillTimer =
Win32API.new("USER32", "KillTimer",['L', 'L'], 'I')
- WM_TIMER =
275
VRMessageHandler::PREHANDLERSTR
Instance Method Summary
collapse
#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
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/vr/vrtimer.rb', line 64
def self_vrtimer(id) name=@_vr_timers[id][0].dup
class << name
def name; self; end
end
controlmsg_dispatching(name,"timer")
send(name) if respond_to?(name)
end
|
#timeralive?(tname = "self") ⇒ Boolean
118
119
120
|
# File 'lib/vr/vrtimer.rb', line 118
def timeralive?(tname="self")
timerid(tname).is_a?(Integer)
end
|
#timerfeasibleinit ⇒ Object
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 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
|
76
77
78
79
|
# File 'lib/vr/vrtimer.rb', line 76
def vrinit
super
timerfeasibleinit
end
|