关于listbox的显示问题

ltrap 2006-04-01 01:07:55
有个链表,里边存了几个字符串和int,想在listbox内显示,或者修改后通过listbox内的更改数据读回链表结点。

但是listbox的每一组数据都是一个字符串,如果要将数据从listbox读回链表需要分离并相应存储包含的字符串,int等数据。

有没有什么方法能简化一下吗?

有的软件提供的类似于listbox的控件,里边有分隔小标签,(类似于msconfig启动标签里的list,其中启动软件名,描述信息,所存位置都是分开的)这个空间叫什么名字?是通用控件还是activeX?

如果用这种控件的话,我刚刚说的问题就可以简化了吧?
...全文
333 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2006-04-02
  • 打赏
  • 举报
回复
指针不是表针。
ltrap 2006-04-02
  • 打赏
  • 举报
回复
Top
Mackz(在相互) ( ) 信誉:117 2006-04-01 16:52:00 得分: 0


用CListBox::SetItemData可以存储指针
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
msdn中说明这个函数可以存储32位数据,但是我不明白怎么当指针用。如果存指针,他会把指针地址当成整形数显示吧?
还有,没有SetItemDataPtr()这个函数
ltrap 2006-04-02
  • 打赏
  • 举报
回复
难道只能通过代码检查是否做了单选吗?
ltrap 2006-04-02
  • 打赏
  • 举报
回复
哎,我已经用另一个方法了。没有把指针和CListCtrl相关联。修改的时候通过提取数据在链表里寻找,找到后再做编辑。
已经这么做了,虽然操作麻烦,但总算实现了。
谢谢各位了!!!!

现在还有个显示问题:
LVS_EX_FULLROWSELECT
LVS_SINGLESEL
后者给每个列表加了个复选框,而我希望实现的时类似于前者的显示,但是只能单选。
不知如何实现?
sakaer 2006-04-02
  • 打赏
  • 举报
回复
to ltrap(LuckyTrap) :
CListBox::SetItemDataPtr(int nIndex, void* pData )这是CListBox的成员函数阿
不知道你为什么说没有。。。。。。
msdn解释:
CListBox::SetItemDataPtr
int SetItemDataPtr( int nIndex, void* pData );

Return Value

LB_ERR if an error occurs.

Parameters

nIndex

Specifies the zero-based index of the item.

pData

Specifies the pointer to be associated with the item.

Remarks

Sets the 32-bit value associated with the specified item in a list box to be the specified pointer (void*). This pointer remains valid for the life of the list box, even though the item’s relative position within the list box might change as items are added or removed. Hence, the item’s index within the box can change, but the pointer remains reliable.


使用的时候将需要绑定的指针转换成void型先,取出来的时候也要转换类型。
具体使用参考msdn吧
vincentcsdn 2006-04-02
  • 打赏
  • 举报
回复
所谓指针就是一个32位的整数
struct MyStruct{
int sub1;
int sub2;
int sub3;
};

MyStruct* param;

m_List.SetItemData(itemID, (DWORD_PTR)param);
...
param = (MyStruct*)()GetItemData(itemID);

LVS_EX_FULLROWSELECT 是整行选择
LVS_SINGLESEL 单行选择
ltrap 2006-04-02
  • 打赏
  • 举报
回复
还有,看下面代码
m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_List.SetBkColor(RGB(247,247,255));
m_List.SetTextColor(RGB(0,0,255));
m_List.SetTextBkColor(RGB(247,247,255));
m_List.InsertColumn(0, "学期", LVCFMT_LEFT, 38);
m_List.InsertColumn(1, "课程名称", LVCFMT_LEFT, 144);
m_List.InsertColumn(2, "学分", LVCFMT_LEFT, 38);
m_List.InsertColumn(3, "成绩", LVCFMT_LEFT, 60);
LVS_EX_FULLROWSELECT 这个参数指定CList可以多选,但是我要求是单选,把它去了,生成以后是单选了,但是只能通过点击开头那块才能选择,如何让她正常的单选(就是点击一行的任意位置都可以选择该行)?我上msdn也查不到相应的设置参数!!!
sakaer 2006-04-01
  • 打赏
  • 举报
回复
楼上的
是SetItemDataPtr可以存储指针吧?
菜牛 2006-04-01
  • 打赏
  • 举报
回复
用CListBox::SetItemData可以存储指针
ltrap 2006-04-01
  • 打赏
  • 举报
回复
和链表的交互怎么办到呢?
Snow_Ice11111 2006-04-01
  • 打赏
  • 举报
回复
CListCtrl控件,report形式。
ltrap 2006-04-01
  • 打赏
  • 举报
回复
是一条动态链表,每个节点的数据结构类似如下
class node{
CString name;
int number;
float score;
};

能不能把指针存到List里呢?也就是说通过双击某条list item能够编辑相对应的结点的数据,完成通过list对链表结点的访问修改,然后再回显
菜牛 2006-04-01
  • 打赏
  • 举报
回复
CListCtrl,或者叫ListView Control。
你的链表存放的是不同类型的数据吗?如果是,只能转换成字符串;如果是字符型和数值型同时存储,可以在列表框中添加字符串后,用CListBox::SetItemData设置数据。
wlwlxj 2006-04-01
  • 打赏
  • 举报
回复
ListCtrl

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧