关于ListCtrl列表框的问题 高手们: 请问: !.当鼠标双击ListCtrl列表框的一项时响应的是什么消息? 2 .当鼠标双击ListCtrl列表框的一项时如何获取该项的内容? 急求答案!! 谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、WM_COMMAND,HIWORD(wParam)的值为LBN_DBLCLK2、给列表框发送LB_GETCURSEL消息得到选中的项。 1、LBN_DBLCLK2、选中之后应有选中项,之后判断那个选中的位置求索引,通过索引求得 我要的不是ListBox的列表框,是ListView的列表框,控件名称是ListCtrl,里面没有LBN_DBCLK这个消息的 ListView的话是WM_NOTIFY,LPNMHDR hdr = (LPNMHDR)lParam;hdr->code == NM_DBLCLK时是双击。获取内容用ListView_GetItem开头的宏或发送LVM_GETITEMTEXT等消息 现在已经响应了NM_DBCLK的消息,并在里面向ListView控件发送LVM_GETITEM的消息:{...LPLVITEM pGetResult=new LVITEM; ::SendMessage((GetDlgItem(IDC_ListView)->m_hWnd,LVM_GETITEM,0,pGetResult);...delete pGetResult;...}按照MSDN的说法,如果::SendMessage返回True就是成功了,但是为什么我无论如何双击这个控件,这个函数总是返回False,请问为什么?? 你看看LVM_GETITEM消息说明的注释部分,你的LVITEM成员都没有初始化。 LPLVITEM pGetResult=new LVITEM;pGetResult->mask = LVIF_TEXT;//看MSDN,你要得到什么信息就添什么值pGetResult->iItem = 选中项序号;pGetResult->iSubItem = 选中项的列序号, ::SendMessage((GetDlgItem(IDC_ListView)->m_hWnd,LVM_GETITEM,0,pGetResult);...delete pGetResult; 就用ListCtrl自带的OON_NOTIFY(NM_CLICK, IDC_LIST, OnNMClickList)ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnNMDblclkList)IDC_LIST是List的ID ListCtrl Item 双击时向Parent发送Item Active通知,应该在那里处理,同时可以得到该项的内容。 现在我终于知道如何做了,其实不用那么烦的,MFC已经为我们打包好了。这就是代码:void CNeighbourInfoDlg::OnListDBClick(NMHDR *pNMHDR, LRESULT *pResult){ // TODO: 在此添加控件通知处理程序代码 NM_LISTVIEW *pGetResult=(NM_LISTVIEW*)pNMHDR; if(pGetResult->iItem <0) { AfxMessageBox("不能获得项中内容!"); *pResult = 0; return; } char Str[MAXPATH]; m_ListView.GetItemText (pGetResult->iItem ,pGetResult->iSubItem ,Str,MAXPATH-1);..... *pResult=0;} 本身就是嘛,还是那个view 扯淡阿 求助,IO重叠问题 100分求助,我想做一个漂亮的界面,请问有没有例子? 怎么设置窗口的最外层的焦点窗口? vc里怎样加CGraph类,要它继承CClientDC?那位同志能帮忙! (SOCKET)(~0) 是什么东西? 请教几个很菜的问题,谢谢! 请问VC里面有没有把数字转换成字符串的函数? 如何统计网络带宽? 简单问题:关于WinSock立刻关闭连接的问题 我想重画窗口的最小化、关闭按钮,怎么做啊?(送分!) 我重载了OnKeyDown事件, 为什么按任何键不触发呢 请问应该如何学习VC/MFC ?请高手给点建议。谢谢先!
2、给列表框发送LB_GETCURSEL消息得到选中的项。
2、选中之后应有选中项,之后判断那个选中的位置求索引,通过索引求得
LPNMHDR hdr = (LPNMHDR)lParam;
hdr->code == NM_DBLCLK时是双击。
获取内容用ListView_GetItem开头的宏或发送LVM_GETITEMTEXT等消息
{
...
LPLVITEM pGetResult=new LVITEM;
::SendMessage((GetDlgItem(IDC_ListView)->m_hWnd,LVM_GETITEM,0,pGetResult);
...
delete pGetResult;
...
}
按照MSDN的说法,如果::SendMessage返回True就是成功了,但是为什么我无论如何双击这个控件,这个函数总是返回False,请问为什么??
pGetResult->iItem = 选中项序号;
pGetResult->iSubItem = 选中项的列序号, ::SendMessage((GetDlgItem(IDC_ListView)->m_hWnd,LVM_GETITEM,0,pGetResult);
...
delete pGetResult;
ON_NOTIFY(NM_CLICK, IDC_LIST, OnNMClickList)
ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnNMDblclkList)
IDC_LIST是List的ID
void CNeighbourInfoDlg::OnListDBClick(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
NM_LISTVIEW *pGetResult=(NM_LISTVIEW*)pNMHDR;
if(pGetResult->iItem <0)
{
AfxMessageBox("不能获得项中内容!");
*pResult = 0;
return;
}
char Str[MAXPATH];
m_ListView.GetItemText (pGetResult->iItem ,pGetResult->iSubItem ,Str,MAXPATH-1);
.....
*pResult=0;
}