use data types TYPE_FLOAT_TAB or TYPE_INT_TAB, for variable length data storage. You can then use the TYPE_INTLISTBOX or TYPE_FLOATLISTBOX as the UI
This specifies a series of controls for displaying and managing a ListBox control containing an int or float Tab<> parameter. The setup consists of a ListBox control, 3 buttons for adding, replacing and deleting items in the list and a 3ds Max spinner to supply source values for Add & Replace. After the control type, you supply 4 dialog item IDs. The first is the ListBox control, then dialog item IDs for 3 CustButton controls for an Add, Replace and Delete button, respectively. Follow these with a spinner type, editbox/spinner dialog item ID pair and a display scale, exactly as for TYPE_SPINNER above. You can supply the value 0 for any of the Add, Replace, or Delete buttons if you don’t need them in the dialog. This can only be used with the following parameter types:
For TYPE_INTLISTBOX:
TYPE_TIMEVALUE_TAB, TYPE_INT, TYPE_INT_TAB
For TYPE_FLOATLISTBOX:
TYPE_ANGLE_TAB, TYPE_PCNT_FRAC_TAB, TYPE_COLOR_CHANNEL_TAB, TYPE_FLOAT_TAB
The Add/Replace/Delete buttons automatically keep the Tab<> parameter in step with the list.
The TYPE_INT parameter type and TYPE_INTLISTBOX control type combination is recognized specially and is used to allow a dropdown list to be associated with an int parameter such that the selection index in the dropdown becomes the integer parameter value. In this mode, after the control type you supply the ListBox control ID, then a count followed by that many string resource IDs. These strings are used to populate the dropdown.
Eg:
p_ui, TYPE_INTLISTBOX, <list_ctrl_id>, <num_items>, [ <item1_str_id>, <item2_str_id>, … ]
These are the list control res ID, followed by a list of initial string items to load up given as a count (which can be 0 – you can load them up dynamically in the dialog proc), and then a list of string resource IDs. See the std2_shader_type parameter in \MAXSDK\SAMPLES\MATERIALS\STDMTL2.CPP for an example.
there’s a few examples of TYPE_INTLISTBOX in the samples, blurmgr.cpp being one.