我尝试将LVCOLUMN.cchTextMax
和LVITEM.cchTextMax
的值设置为随机值(小于相应的字符串长度)并且它有效,它是否有效,或者这些字段不是必需的设置?
我还看到了不使用这些字段的示例,例如:http://www.codeproject.com/Articles/9148/C-functions-to-insert-columns-items-and-subitems-i
答案 0 :(得分:1)
LVITEM structure的文档在cchTextMax
成员上有以下说法:
仅当结构接收项属性时才使用此成员。当结构指定项属性时,它将被忽略。例如,LVM_SETITEM和LVM_INSERTITEM期间会忽略 cchTextMax 。它在LVN_GETDISPINFO和其他LVN_通知期间是只读的。
除非您使用此结构来检索项目信息,否则将忽略此成员。接收数据时,您必须将指向缓冲区的指针传递给pszText
,并通过cchTextMax
成员传达其大小。
这是整个Windows API中的常见模式,其中使用相同的结构来设置和查询值。各个成员的语义取决于方向。例如,以类似方式使用的其他常见结构包括TVITEM或MENUITEMINFO。