列表控件子项消失了吗? [英] List Control subitem disappear?
本文介绍了列表控件子项消失了吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下是将项目插入listcontrl的代码.
当我将LVIF_PARAM
添加到lvi.mask
时,仅显示第一个子项. (列表控件设置为报告查看模式).这是什么问题?
Hi,
The following is code to insert an item to listcontrl.
When i add LVIF_PARAM
to lvi.mask
, only first subitem is shown. (list control is set as report view mode). What is problem here??
m_lstCtrl.InsertColumn(0, L"First name" , LVCFMT_LEFT, onePercent * 35);
m_lstCtrl.InsertColumn(1, L"Middle name", LVCFMT_CENTER, onePercent * 35);
m_lstCtrl.InsertColumn(2, L"Last name", LVCFMT_LEFT, onePercent * 30);
LVITEM lvi;
// Insert #0
// Check if image available
lvi.mask = LVIF_TEXT | LVIF_PARAM ;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.lParam = 100;
lvi.pszText =L"First";
m_lstCtrl.InsertItem(&lvi);
// Insert #1
lvi.iSubItem = 1;
lvi.pszText = L"Middle";
m_lstCtrl.SetItem(&lvi);
// Insert #2
lvi.iSubItem = 2;
lvi.pszText = L"Last";
m_lstCtrl.SetItem(&lvi);
谢谢.
Quy
Thank.
Quy
推荐答案
快速的Google搜索显示,很多人在将LVIF_PARAM
与子项一起使用时遇到问题.可能是一个错误.
尽量不要使用LVIF_PARAM
.例如,您可以添加参数列表,并同时维护此列表和列表控件.
我知道此解决方案只是一种解决方法,但您可能会减少这样的时间.
A quick google search reveals that a lot of people has problems usingLVIF_PARAM
with sub items. It may be a bug.
Try not to useLVIF_PARAM
. You can for example add a list of your param and maintain both this list and the list control.
I know this solution is just a workaround but you will probably loose less time like that.
感谢您的回复.
我发现它实际上不是错误.这有点微妙:)
LVITEM.mask
(可能是整个LVITEM结构)应独立应用于每个子项目.我在上面的代码中的错误是我没有重置lvi.mask
.
所以这是(至少就我而言)工作版本.
Thank for the replies.
It is actually not a bug, I figured it out. This is a little subtle :)
LVITEM.mask
(probably whole LVITEM struct) should be independently applied for every subitems. My mistake in above code is that I didnt resetlvi.mask
.
so here is (at least in my case) a working version.
m_lstCtrl.InsertColumn(0, L"First name" , LVCFMT_LEFT, onePercent * 35);
m_lstCtrl.InsertColumn(1, L"Middle name", LVCFMT_CENTER, onePercent * 35);
m_lstCtrl.InsertColumn(2, L"Last name", LVCFMT_LEFT, onePercent * 30);
LVITEM lvi;
// Insert First#0
// Check if image available
lvi.mask = LVIF_TEXT | LVIF_PARAM ;
lvi.iItem = 0;
lvi.iSubItem = 0;
lvi.lParam = 100;
lvi.pszText =L"First";
m_lstCtrl.InsertItem(&lvi);
// Insert Middle#1
lvi.mask = LVIF_TEXT;
lvi.iSubItem = 1;
lvi.pszText = L"Middle";
m_lstCtrl.SetItem(&lvi);
// Insert Last#2
lvi.mask = LVIF_TEXT;
lvi.iSubItem = 2;
lvi.pszText = L"Last";
m_lstCtrl.SetItem(&lvi);
Quy
Quy
这篇关于列表控件子项消失了吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文