Re: Simple win32lib question
> >How do [I] create a List Control using win32lib with the
> ability for users
> >to select more than one line? Ie, a multiselect listbox
>
> LBS_EXTENDEDSEL = #800,
> LBS_MULTIPLESEL = 8,
> -- to create a multiple select listbox, use LBS_MULTIPLESEL
> -- Example:
>
> Win = create( Window, "Example", 0, Default, Default, 200,
> 200, 0 ),
> Lstbox1 = create( List, "", Win, Win, 10, 10, 170, 100,
> LBS_MULTIPLESEL )
>
> -- LBS_MULTIPLESEL -> String selection is toggled each time
> the user clicks
> -- or double-clicks the string. Any number of strings can be selected.
>
> -- Brian
>
LBS_EXTENDEDSEL might be more what you're looking for. It's more of a
standard, where you can select multiple items using shift, control, etc.
A little digging turned these up, which you'll need to use to retrieve the
values selected:
LBS_GETSELCOUNT = #190
LBS_GETSELITEMS = #191
The following functions return either a list of values, or the indices of
the selections:
global function getMultIndices( integer id )
atom buffer, items, array
sequence selections
selections = {}
items = sendMessage(id, LBS_GETSELCOUNT, 0 ,0)
buffer = allocate_struct(items*4)
items = sendMessage(id, LBS_GETSELITEMS, items, buffer)
for i = items to 1 by -1 do
selections = prepend(selections, peek4u( buffer + (i-1) * 4) + 1 )
end for
free(buffer)
return selections
end function
global function getMultItems( integer id )
sequence selections
selections = getMultIndices( id )
for i = 1 to length(selections) do
selections[i] = getItem(id,selelctions[i])
end for
return selections
end function
Dave, how about adding this to win32lib?
Matt Lewis
|
Not Categorized, Please Help
|
|