我有一个组合框,我需要填充可能大量的项目,我查看了 MSDN MFC 文档CComboBox
并找到了InitStorage
具有以下原型的成员函数:
int CComboBox::InitStorage( int nItems, UINT nBytes );
参数列表如下:
nItems:指定要添加的项目数。
nBytes:指定要为项目字符串分配的内存量(以字节为单位)。
这听起来像是您在参数中指定了内存总量。nBytes
但是,他们给出的示例与此冲突:
// The pointer to my combo box.
extern CComboBox* pmyComboBox;
// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int n = pmyComboBox->InitStorage(256, 10);
ASSERT(n != CB_ERRSPACE);
// Add 256 items to the combo box.
CString str;
for (int i=0;i < 256;i++)
{
str.Format(_T("item string %d"), i);
pmyComboBox->AddString( str );
}
此示例表明该nBytes
参数实际上是每个字符串要保留的字节数,而不是总数。考虑到有一个参数,这是有道理的nItems
,因此可以轻松计算内存总量。
如果有人能澄清这一点,我将不胜感激。