Module: Fzeet::ListBoxMethods

Included in:
ComboBoxMethods, ListBox
Defined in:
lib/fzeet/windows/user/Control/ListBox.rb

Instance Method Summary collapse

Instance Method Details

#[](i) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 82

def [](i)
	i = sendmsg(:getcursel) if i == :selected

	return '' if i == -1 || (len = textlen(i) + 1) == 1

	''.tap { |item|
		FFI::MemoryPointer.new(:char, len) { |buf|
			raise "GETTEXT failed." if sendmsg(:gettext, i, buf) == -1

			item << buf.read_string
		}
	}
end

#append(item) ⇒ Object



98
99
100
101
102
103
104
105
106
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 98

def append(item)
	[*item].each { |item|
		p = FFI::MemoryPointer.from_string(item.to_s)

		raise 'ADDSTRING failed.' if [-1, -2].include?(sendmsg(:addstring, 0, p).tap { p.free })
	}

	self
end

#clearObject



96
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 96

def clear; sendmsg(:resetcontent); self end

#eachObject



122
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 122

def each; length.times { |i| yield self[i] }; self end

#lengthObject



121
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 121

def length; raise 'GETCOUNT failed.' if (len = sendmsg(:getcount)) == -1; len end

#selected=(i) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 108

def selected=(i)
	i = case i
	when -1;     0xffffffff
	when :first; 0
	when :last;  length - 1
	else         i
	end

	raise 'SETCURSEL failed.' if sendmsg(:setcursel, i) == -1 && i != 0xffffffff

	self
end

#textlen(i) ⇒ Object



80
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 80

def textlen(i) raise "GETTEXTLEN failed." if (len = sendmsg(:gettextlen, i)) == -1; len end