MFC CComboBox :: InitStorage文档说明

时间:2013-07-18 19:00:25

标签: c++ winapi mfc

我有一个组合框,我需要填充可能包含大量项目的内容,我查看了CComboBox的MSDN MFC文档,我找到了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参数,这是有意义的,因此可以轻松计算内存总量。

如果有人能澄清这一点,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

Raymond Chen的这些信息表明它是字符串不是PER字符串所需的总金额。

http://blogs.msdn.com/b/oldnewthing/archive/2004/06/10/152612.aspx

这是有道理的,因为它可以在字符串长度变化很大的情况下提供更多控制。