如何在list control中,点击某行数据时产生相应的响应? 如何在list control中,点击某行数据时产生相应的相应?是不是用控件的NM_CLICK函数?如果是的话,那么这个函数中的参数是什么意思?因为我添加这个函数后,函数的原型为:void CmyDlg::OnClickList3(NMHDR* pNMHDR, LRESULT* pResult) 我怎么得到选中那行的序号?还有,能否对list control中数据按某一列进行排序?怎么做啊?谢谢各位老大了,小弟是个菜鸟。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还有如何能够不按ctrl就能选中多行?搞不定啊。 产生ITEMCHANGED消息,修改了item的Select State不按ctrl就能选中多行?自己设置item的Select StatepmyListCtrl->SetItemState(n, LVIS_SELECTED, LVIS_SELECTED); void CTest6Dlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) { DWORD dwPos = GetMessagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); m_list.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt = point; lvinfo.flags = LVHT_ABOVE; int nItem = m_list.SubItemHitTest(&lvinfo); if(nItem != -1) { CString strtemp; strtemp.Format("单击的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem); AfxMessageBox(strtemp); } *pResult = 0;} http://www.codeguru.com/Cpp/controls/listview/sorting 首先谢谢各位了,太谢谢了!但是,关于多行选中,vcmute(横秋) 兄的方法试过了,但是选中的显示为灰色,而我单击某一行时该行显示为蓝色,不知道怎样才能弄成蓝色。 m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); 可以做个循环设置for(int nIndex=0; nIndex<m_list.GetItemCount(); nIndex++)m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); 我试了一下,还是不行啊,我选中某行,再选中另一行,这一行不再加亮显示了。难道是由什么paint之类的函数把它又重画啦?我加入的代码如下:void CGDSCDlg::OnClickList3(NMHDR* pNMHDR, LRESULT* pResult) { DWORD dwPos = GetMessagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); m_ListCtrl1.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt = point; lvinfo.flags = LVHT_ABOVE; int nItem = m_ListCtrl1.SubItemHitTest(&lvinfo); if(nItem != -1) { char received[100]; int i = lvinfo.iItem; m_ListCtrl1.SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); } *pResult = 0;} m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); 关于fatal error C1189这个错误 如何保存网页 VC中Access数据库的问题,总是提示操作失败,无当前记录! 高手指点一下 数据显示问题 CListCtrl设置选中状态问题~~ 两难的选择,搞人脸识别 or 网络????????大家出出主意 请问是什么原因? 哪有VC7下载呀 请问InstallShield Developer 7.0做出来的对话框左边的位图? 关于MFC access数据库的插入记录的操作 关于文件操作 请高手们帮帮忙 怎样在SQL Server中存取jpg图片?
不按ctrl就能选中多行?自己设置item的Select State
pmyListCtrl->SetItemState(n, LVIS_SELECTED, LVIS_SELECTED);
DWORD dwPos = GetMessagePos(); CPoint point( LOWORD(dwPos), HIWORD(dwPos) ); m_list.ScreenToClient(&point); LVHITTESTINFO lvinfo; lvinfo.pt = point; lvinfo.flags = LVHT_ABOVE; int nItem = m_list.SubItemHitTest(&lvinfo); if(nItem != -1) { CString strtemp; strtemp.Format("单击的是第%d行第%d列", lvinfo.iItem, lvinfo.iSubItem); AfxMessageBox(strtemp); }
*pResult = 0;}
但是,关于多行选中,
vcmute(横秋) 兄的方法试过了,但是选中的显示为灰色,而我单击某一行时该行显示为蓝色,不知道怎样才能弄成蓝色。
for(int nIndex=0; nIndex<m_list.GetItemCount(); nIndex++)
m_list.SetItemState(nIndex, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
{
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
m_ListCtrl1.ScreenToClient(&point); LVHITTESTINFO lvinfo;
lvinfo.pt = point;
lvinfo.flags = LVHT_ABOVE; int nItem = m_ListCtrl1.SubItemHitTest(&lvinfo); if(nItem != -1)
{
char received[100];
int i = lvinfo.iItem;
m_ListCtrl1.SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
}
*pResult = 0;
}