Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer


Allocates memory for storing list-box items.

int InitStorage(
   int nItems,
   UINT nBytes 



Specifies the number of items to add.


Specifies the amount of memory, in bytes, to allocate for item strings.

If successful, the maximum number of items that the list box can store before a memory reallocation is needed, otherwise LB_ERRSPACE, meaning not enough memory is available.

Call this function before adding a large number of items to a CListBox.

This function helps speed up the initialization of list boxes that have a large number of items (more than 100). It preallocates the specified amount of memory so that subsequent AddString, InsertString, and Dir functions take the shortest possible time. You can use estimates for the parameters. If you overestimate, some extra memory is allocated; if you underestimate, the normal allocation is used for items that exceed the preallocated amount.

Windows 95/98 only: The nItems parameter is limited to 16-bit values. This means list boxes cannot contain more than 32,767 items. Although the number of items is restricted, the total size of the items in a list box is limited only by available memory.

// The pointer to my list box.
extern CListBox* pmyListBox;

// Initialize the storage of the list box to be 256 strings with
// about 10 characters per string, performance improvement.
int n = pmyListBox->InitStorage(256, 10);

// Add 256 items to the list box.
CString str;
for (int i=0;i < 256;i++)
   str.Format(_T("item string %d"), i);
   pmyListBox->AddString( str );
© 2015 Microsoft