gpt4 book ai didi

c - LVM_GETITEM 和 LVM_GETITEMTEXT 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 17:15:35 24 4
gpt4 key购买 nike

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

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

最佳答案

两者LVM_GETITEMLVM_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 );
}

稍微短一些,使用LVM_GETITEMTEXT:

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 );
}

关于c - LVM_GETITEM 和 LVM_GETITEMTEXT 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29950430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com