If the last item in the list has only one character, then it is not displayed. See attached code and try the alternative, or adding another character to the '3', or put a space before the '3'. It works perfectly for the $ls format code, see second example.
winapp
include <windows.ins>,nolist
character*80 text_data(100000)
integer*4 isel_text(100000)
max_text = 100000
c
c clear selections
isel_text = 0
c
c just flag the first one
isel_text(1) = 1
text_data = ' '
c
c multi character version
c text_data(1) = 'one'
c text_data(2) = 'two'
c text_data(3) = 'three'
c
c single character version
text_data(1) = '1'
text_data(2) = '2'
text_data(3) = '3'
ibut=winio@('%ca[Column filter]&')
ibut=winio@('%bg[btnface]&')
ibut=winio@('%`bg[white]&')
ibut=winio@('%40.10`ms&', text_data, max_text, isel_text)
ibut=winio@('%ff%`tt[&OK]')
end
c
winapp
include <windows.ins>,nolist
character*80 text_data(100000)
max_text = 100000
text_data = ' '
isel = 1
c
c multi character version
c text_data(1) = 'one'
c text_data(2) = 'two'
c text_data(3) = 'three'
c
c single character version
text_data(1) = '1'
text_data(2) = '2'
text_data(3) = '3'
ibut=winio@('%ca[Column filter]&')
ibut=winio@('%bg[btnface]&')
ibut=winio@('%`bg[white]&')
ibut=winio@('%40.10`ls&', text_data, max_text, isel)
ibut=winio@('%ff%`tt[&OK]')
end
c