TabCtrl_InsertItem:我们需要保持文本的内存活着吗?

时间:2014-05-20 09:19:10

标签: c++ windows winapi

对于TabCtrl_InsertItem,我们是否需要将pszText个成员点保留为有效内存,或者操作系统是否会复制文本以便我们可以立即清除文本?

TCITEM tcItem = { TCIF_TEXT };
CString strText;
for (int i=0; i<3; i++) {
    strText.Format(_T("Tab %d"), i+1);
    tcItem.pszText = strText;          // option 1
    tcItem.pszText = _tcsdup(strText); // option 2
    TabCtrl_InsertItem(i, &tcItem);
}

我们怎么知道将来这个功能和其他功能哪个是正确的? 我无法在MSDN中找到它。

2 个答案:

答案 0 :(得分:6)

操作系统会将字符串复制到内部数据结构。您不需要维护支持字符数组。您可以在函数调用完成后立即释放它。

通常,任何接收字符串的Windows API函数都是这种情况。你是对的,它没有在MSDN文档中明确说明,但大多数Windows开发人员已经知道这一点。当为true时,MSDN 显式调用。我无法想到一个例子 - 如果它发生了,它是非常罕见的。

答案 1 :(得分:1)

此示例How to Create a Tab Control in the Main Window表示您在添加标签后不需要保留内存。

只是要添加,即使文档不明确,通常也很容易找到示例。