在CListCtrl对象中,想让它的子项和一个结构体关联起来,也就是:每个子项的某个属性保存一个结构体的数据,需要时,直接找到相应的子项,取出相应结构体中的数据。
试过以下方法,但是总是中断,说“The variable 'pItem' is being used without being defined.”:
//CListCtrl m_list;
for(int i = 0; i < m_list.GetItemCount(); i++)
{
LVITEM *pItem;
-> pItem->mask = LVIF_PARAM;//中断于此处
pItem->iItem = i;
pItem->iSubItem =NULL;
pItem->state = NULL;
pItem->stateMask =NULL;
pItem->pszText = NULL;
pItem->cchTextMax = NULL;
pItem->iImage = NULL;
pItem->lParam = (LPARAM)pSerInfoList;//pSerInfoList就是我想保存的结构体的地址
m_list.SetItem(pItem);
}
上面错杂哪里呢?
请问下大家,有比较好的方法吗?
试过以下方法,但是总是中断,说“The variable 'pItem' is being used without being defined.”:
//CListCtrl m_list;
for(int i = 0; i < m_list.GetItemCount(); i++)
{
LVITEM *pItem;
-> pItem->mask = LVIF_PARAM;//中断于此处
pItem->iItem = i;
pItem->iSubItem =NULL;
pItem->state = NULL;
pItem->stateMask =NULL;
pItem->pszText = NULL;
pItem->cchTextMax = NULL;
pItem->iImage = NULL;
pItem->lParam = (LPARAM)pSerInfoList;//pSerInfoList就是我想保存的结构体的地址
m_list.SetItem(pItem);
}
上面错杂哪里呢?
请问下大家,有比较好的方法吗?
解决方案 »
- 运行一宿吃掉500M内存,不知道为什么,求救
- 想自己做个类似于老版网际快车的下载程序,大家给点思路
- 聊天程序中保存客户机地址的变量
- 有谁有读取INI文件突破64K限制的类,急求
- !!!!为什么我写的组件,用vbscript可以调用其中的函数,为什么用javascript不可以!!#@&*,救命啊!!SOS!!
- 一个关于在windows 98下部署com+应用程序代理的问题!
- 一个禁止ALT+TAB的程序如何将他切换出来
- 谁能帮我解释一下这个问题
- VC++编写键盘钩子
- Combobox,怎么为所有选项增加一个Tip提示,因为内容太长无法全显,而且由于美观不好对控件进行拉伸
- 关于多线程在网络编程中的使用疑问!
- VC 串口通讯遇到的问题
pItem没有空间
为什么要用指针呢?
直接定义: LVITEM lvItem
{
LVITEM *pItem;
-> pItem->mask = LVIF_PARAM;//中断于此处 pItem->iItem = i;
pItem->iSubItem =NULL;
pItem->state = NULL; 这里指针没有初始化赋值就使用,当然出错了
LVITEM lvItem;
ZeroMemory(&lvItem, sizeof(LVITEM));
lvItem.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;// | LVIF_TEXT;
这里除了LVITEM还可以用LV_ITEM LV_ITEM lvItem;
ZeroMemory(&lvItem, sizeof(LV_ITEM));
lvItem.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;// | LVIF_TEXT;
直接用对象吧LVITEM lvItem;
LVITEM lvItem;
...
m_list.SetItem(&lvItem);
LVITEM nItem;
但是取结构体中的数据时,
m_list.GetItem(&nItem);
nItem.lParam,好像只能使用一次,
第二次就错了,说什么写入错误。
麻烦下,这是为什么啊?
记得在使用前ZeroMemory()一下,因为有些成员参数你可能不会去设置,使用ZeroMemory初始化所有成员,避免访问非法。
还是出错。