class Fzeet::AcceleratorTable
Public Class Methods
new(*args)
click to toggle source
# File lib/fzeet/windows/user/Accelerator.rb, line 190 def initialize(*args) FFI::MemoryPointer.new(Windows::ACCEL, args.size) { |paccels| args.each_with_index { |data, i| accel = Windows::ACCEL.new(paccels + i * Windows::ACCEL.size) data.unshift(0) if data.size == 2 accel[:fVirt] = Fzeet.flags(data[0], :f) accel[:key] = case key = data[1] when Integer accel[:fVirt] |= Windows::FVIRTKEY key when Symbol accel[:fVirt] |= Windows::FVIRTKEY ((key = key.to_s).length == 1) ? key.upcase.ord : Fzeet.constant(key, :vk_) when String if key.length == 1 key.ord else accel[:fVirt] |= Windows::FVIRTKEY Fzeet.constant(key, :vk_) end end accel[:cmd] = Command[data[2]] } @handle = Windows.DetonateLastError(FFI::Pointer::NULL, :CreateAcceleratorTable, paccels, args.size); attach } end
Public Instance Methods
dispose()
click to toggle source
# File lib/fzeet/windows/user/Accelerator.rb, line 225 def dispose; Windows.DestroyAcceleratorTable(@handle); detach end