LVITEM字段是puColumns和piColFmt指针还是整数?

时间:2015-01-03 13:20:51

标签: windows listview winapi listviewitem win64

question中发现了64位LVITEM的字段之后,我还有一件事我不知道。 documentation说:

  1. puColumns是一个UINT。它是指向列索引数组的指针,指定为此项显示的列以及这些列的顺序。
  2. piColFmt是一个int。它是指向以下标志数组的指针(单独或组合),指定扩展切片视图中每个子项的格式。
  3. 我的问题是为什么它们是整数而不是指针?在64位架构中,它们应该像指针那样占用8个字节,还是像整数一样占用4个字节?

    谢谢!

1 个答案:

答案 0 :(得分:0)

所以Windows SDK说:

typedef struct tagLVITEMA
{
    UINT mask;
    int iItem;
    int iSubItem;
    UINT state;
    UINT stateMask;
    LPSTR pszText;
    int cchTextMax;
    int iImage;
    LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
    int iIndent;
#endif
#if (_WIN32_WINNT >= 0x0501)
    int iGroupId;
    UINT cColumns; // tile view columns
    PUINT puColumns;
#endif
#if _WIN32_WINNT >= 0x0600 // Will be unused downlevel, but sizeof(LVITEMA) must be equal to sizeof(LVITEMW)
    int* piColFmt;
    int iGroup; // readonly. only valid for owner data.
#endif
} LVITEMA, *LPLVITEMA;