关于mfc ListCtrl虚拟列表删除某行、修改某行数据问题

rundll64 2014-07-01 08:37:34
根据网络上各位大神的描述,简单的搜集以下代码,基本虚拟列表显示没问题了

在头文件定义了结构体

typedef struct _LST_DATA_
{
DWORD dwcolIdx;
wchar_t chcolValue1[10];
wchar_t chcolValue2[10];
wchar_t chcolValue3[10];
_LST_DATA_()
{
ZeroMemory(this, sizeof(*this));
}
}LST_DATA, *LPLST_DATA;
typedef std::vector<LST_DATA> ARY_LST;

private:
ARY_LST m_aryLstData;


......

下面就省略了。现在我想了解下,关于虚拟列表能否管理某行数据,例如我显示3行,我通过list的

int nState = 0;
m_list.DeleteItem(nIndex);

删除某一行数据,
原始数据结构:
列0 列1 列2
0 0 0
1 1 1
2 2 2

我用deleteitem删除1这行数据,在标准的listctrl中是可以的,但是到了虚拟表中,咋重绘成0,1,感觉把2删除了呢

...全文
671 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rundll64 2014-07-02
  • 打赏
  • 举报
回复
基本搞定了,谢谢,结贴
信阳毛尖 2014-07-02
  • 打赏
  • 举报
回复
是这样啊,那我想在多了解下,如何删除掉m_aryLstData里的数据,stl的vector不会用 ----------------------------------------------------------------------------------------------------------------------------- vector一定要会用的,stl必须要深刻领会的!!!!!!!!! typedef struct _LST_DATA_ { DWORD dwcolIdx; wchar_t chcolValue1[10]; wchar_t chcolValue2[10]; wchar_t chcolValue3[10]; _LST_DATA_() { ZeroMemory(this, sizeof(*this)); } }LST_DATA, *LPLST_DATA; typedef std::vector<LST_DATA> ARY_LST; private: ARY_LST m_aryLstData; ------------------------------------------------------------------------------------------------- 就你的这个vector,删除元素很简单(元素非指针): m_aryLstData.erase(1); xxxx.DeleteItem(1);
rundll64 2014-07-02
  • 打赏
  • 举报
回复
引用 1 楼 lsq19871207 的回复:
我用deleteitem删除1这行数据,在标准的listctrl中是可以的,但是到了虚拟表中,咋重绘成0,1,感觉把2删除了呢 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- 那是因为序列表的显示和数据是分开的,当序列表执行deleteitem的时候,序列表的总行数减一,仅此而已,由于它和数据是分开的,所有这个时候序列表是没有权限delete真实的数据 因此,在你deleteitem的时候,需要delete掉m_aryLstData维护的对应的数据
是这样啊,那我想在多了解下,如何删除掉m_aryLstData里的数据,stl的vector不会用
信阳毛尖 2014-07-02
  • 打赏
  • 举报
回复
我用deleteitem删除1这行数据,在标准的listctrl中是可以的,但是到了虚拟表中,咋重绘成0,1,感觉把2删除了呢 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- 那是因为序列表的显示和数据是分开的,当序列表执行deleteitem的时候,序列表的总行数减一,仅此而已,由于它和数据是分开的,所有这个时候序列表是没有权限delete真实的数据 因此,在你deleteitem的时候,需要delete掉m_aryLstData维护的对应的数据

16,548

社区成员

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

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

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