C LVM_GETITEM和LVM_GETITEMTEXT之间有什么区别?

C LVM_GETITEM和LVM_GETITEMTEXT之间有什么区别?,c,listview,winapi,C,Listview,Winapi,我想获取ListView行的文本(项和子项的文本),但我不确定是否应该使用LVM_GETITEM或LVM_GETITEMTEXT 这两条消息之间的区别是什么?第一条消息是否检索有关项目或子项目的全部信息,而另一条消息仅检索文本?这两条消息均可用于检索项目或子项目的文本数据。由于检索项目的文本数据是一种非常常见的操作,因此提供了LVM_GETITEMTEXT消息作为一种方便的实现 为了说明区别,这里有两个使用任一消息的实现(为简洁起见,省略了错误处理): std::wstring GetListV

我想获取ListView行的文本(项和子项的文本),但我不确定是否应该使用
LVM_GETITEM
LVM_GETITEMTEXT

这两条消息之间的区别是什么?第一条消息是否检索有关项目或子项目的全部信息,而另一条消息仅检索文本?

这两条消息均可用于检索项目或子项目的文本数据。由于检索项目的文本数据是一种非常常见的操作,因此提供了
LVM_GETITEMTEXT
消息作为一种方便的实现

为了说明区别,这里有两个使用任一消息的实现(为简洁起见,省略了错误处理):

std::wstring GetListViewItemText( HWND a_hWnd, int a_Item, int a_SubItem) {
    std::vector<wchar_t> buffer( 1024 );
    LVITEM lvi = { 0 };
    lvi.mask = LVIF_TEXT;  // Only required when using LVM_GETITEM
    lvi.pszText = buffer.data();
    lvi.cchTextMax = static_cast<int>( buffer.size() );
    lvi.iItem = a_Item;    // Only required when using LVM_GETITEM
    lvi.iSubItem = a_SubItem;

    ::SendMessage( hwnd, LVM_GETITEM, 0, reinterpret_cast<LPARAM>( &lvi ) );

    return std::wstring( lvi.pszText );
}
std::wstring GetListViewItemText( HWND a_hWnd, int a_Item, int a_SubItem) {
    std::vector<wchar_t> buffer( 1024 );
    LVITEM lvi = { 0 };
    lvi.pszText = buffer.data();
    lvi.cchTextMax = static_cast<int>( buffer.size() );
    lvi.iSubItem = a_SubItem;

    ::SendMessage( hwnd, LVM_GETITEMTEXT, a_Item, reinterpret_cast<LPARAM>( &lvi ) );

    return std::wstring( lvi.pszText );
}