我在看一个程序上面的class MyListCtrl : public CListCtrl自定义了个结构ITEMDATA然后由GetItemData(i)返回这个结构指针我想知道是怎么获得正确的值得呢?我看列表的项并不与自定义结构ITEMDATA一一对应,有些糊涂了。
解决方案 »
- sql语句查询问题
- 非阻塞的套接字在connect后select超时,当再次尝试connect时socket失效
- combobox showdropdown后现象和我预想的不一样。
- MFC的打印框架 如何才能识别出打印机。安装的打印机好像识别不到
- 如何实现文字的淡入淡出的效果?
- 遇到一个问题,不解,请帮一下忙,谢谢!!
- ATL环境的一个服务工程,在服务运行时使用::SetTimer(...)定义了一个时钟,请问如何相应时钟消息,请帮忙!!
- 我的COM怎么不能用?
- 请问各位高手,写嵌入式系统和单片机需要哪些基本知识,谢谢!!!!!!
- STL低级问题,vector的iterator怎样转换成它所指向元素的指针?(VC6)
- *******VS2005 用WriteFile和ReadFile 发送/接收串口问题********
- 如何创建网页快捷方式?
int nItem = MyListCtrl.InsertItem(MyListCtrl.GetItemCount(), _T("Test"));//创建自定义结构。(不能使用局部变量)
ITEMDATA *pData = new ITEMDATA; //设置项目数据。
MyListCtrl.SetItemData(nItem, (DWORD)pData);//获取项目数据。
ITEMDATA *pData = (ITEMDATA *)MyListCtrl.GetItemData(nItem);
//删除MyListCtrl中的项目前要先 delete (ITEMDATA *)MyListCtrl.GetItemData(nItem);
1.单击某一项,这个只需要处理单击事件即可。如:
void CXXXDialog::OnItemSelect(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(TRUE);
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
ITEMDATA *pdata; pdata=(ITEMDATA *)m_myListctrl.GetItemData(pNMListView->iItem);//这个是对应的点击的那一项
if(msg)
{ }
*pResult = 0;
}
2.用户选择了多个条目,依次想获得各个数据,应该如下处理。
POSITION pos = m_myListctrl.GetFirstSelectedItemPosition();
ITEMDATA *pData;
while (pos)
{
int nItem = m_myListctrl.GetNextSelectedItem(pos);
pData = (ITEMDATA*)m_myListctrl.GetItemData(nItem);//获得这次选中的项的数据
if(pData != NULL)
{
//处理你的数据
}
}
GetItemDataSetItemData保存的是一个 32位 的数,这个数可以是:
1、一个整数,直接使用;2、一个整数,不过把它认为是一个指针,指向另一个地方。同是一个整数,就看怎么理解它了。
地址编码 内容
======== =====
A0000001 E2
A0000002 F8
A0000003 02
A0000004 1C假如 SetItemData 中存储了 A0000001 的话,有两种理解方式:1、存储的是一个整数,那就是 十六进制的 A0000001,十进制为 26843545612、存储的是作为指针,而且是一个整数指针,那结果就是 十六进制的 E2F8021C,十进制为 3807904284
举个例子,可能有错误,但是这个理。
LVITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.cchTextMax = _tcsLen(szName) + 1;
lvi.pszText = szName;
lvi.iItem = MyListCtrl.GetItemCount();
lvi.iSubItem = 0;
lvi.lParam = (LPARAM)pData; //ITEMDATA *。MyListCtrl.InsertItem(&lvi);
ITEMDATA *pItem(函数参数)LV_ITEM lvi;lvi.lParam=(LPARAM)pItem;InsertItem(&lvi)param并不在列表项各列显示但是在GetItemData的时候可以获取貌似是这样的效果似乎很有用的样子