I know that there is a tech. called "Virtual List Control", in fact, it is just a feature of CListCtrl, a listctrl will support this feature when you set LVS_OWNERDATA style. You can find the detail in MSDN.
I don't go any further myself, so I can't give you any more help..
a CListBox is limited to 2^15-1 items.
Theoretically a CListCtrl is limited to 2^31-1 items, because that's the range of allowed indices, but the actual count will be much lower due to memory constraints.
The max number of items (if the listcontrol doesn't store the strings, but retrieves them dynamically) is about 90,000,000.