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



104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 104

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(items) ⇒ Object



120
121
122
123
124
125
126
127
128
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 120

def append(items)
	[*items].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



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

def clear; sendmsg(:resetcontent); self end

#eachObject



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

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

#lengthObject



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

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

#selected=(i) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/fzeet/windows/user/Control/ListBox.rb', line 130

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



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

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