Since itemheight is mostly not the same width as ::GetSystemMetrics(SM_CXHSCROLL) in a ListBox
you would rather use GetItemHeight(0), summize this with 1, since the following weird thing occurs:
GetItemHeight(0) * 2 = not enough to hold 2 items
GetItemHeight(0) * 7 = exactly enough to hold 7 items
When the LBS_NOINTEGRALHEIGHT style is not set, the listbox will resize the oversize back to the
correct value it needs to hold all the items, in your case, with 2 items it is correctly resized,
only when 7 items are the case, the listbox resizes itself one item to big ...
So, all together, I suggest:
#define DEFAULT_IPLISTBOX_HEIGHT (13+1) * 8 // 13+1: common itemheight with marge times 8 items
I think that because the in-place combo box's dropdown list is created as a child of the listbox window, the dropdown list is limited to the client area of the listbox window. This means that when the control is near the bottom of the window, the list box is "cut off" and it does not work like a normal windows combo box (which would extend past the window bottom).