列表控件子项消失了吗? [英] List Control subitem disappear?

查看:57
本文介绍了列表控件子项消失了吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



以下是将项目插入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 using LVIF_PARAM with sub items. It may be a bug.

Try not to use LVIF_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 reset lvi.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆