LVCOLUMN.cchTextMax和LVITEM.cchTextMax的目的是什么?

时间:2015-04-29 14:55:42

标签: c listview winapi

我尝试将LVCOLUMN.cchTextMaxLVITEM.cchTextMax的值设置为随机值(小于相应的字符串长度)并且它有效,它是否有效,或者这些字段不是必需的设置?

我还看到了不使用这些字段的示例,例如:http://www.codeproject.com/Articles/9148/C-functions-to-insert-columns-items-and-subitems-i

1 个答案:

答案 0 :(得分:1)

LVITEM structure的文档在cchTextMax成员上有以下说法:

  

仅当结构接收项属性时才使用此成员。当结构指定项属性时,它将被忽略。例如,LVM_SETITEMLVM_INSERTITEM期间会忽略 cchTextMax 。它在LVN_GETDISPINFO和其他LVN_通知期间是只读的。

除非您使用此结构来检索项目信息,否则将忽略此成员。接收数据时,您必须将指向缓冲区的指针传递给pszText,并通过cchTextMax成员传达其大小。

这是整个Windows API中的常见模式,其中使用相同的结构来设置和查询值。各个成员的语义取决于方向。例如,以类似方式使用的其他常见结构包括TVITEMMENUITEMINFO