CListCtrl
来源:互联网 发布:linux ping.exe 编辑:程序博客网 时间:2024/04/28 16:39
m_list.SetItemState(nIndex,LVIS_FOCUSED | LVIS_SELECTED,LVIS_FOCUSED | LVIS_SELECTED);
注意:这句代码只是让指定行高亮显示,如果使用后再用GetSelectionMark函数来得到选中行,结果往往是错误的。比如,先用鼠标点击选中第5行,调用GetSelectionMark函数得到的是4(第5行),再调用SetItemState函数选中第2行,然后调用GetSelectionMark函数得到的还是4(第5行),所以,需要在设置选中行高亮显示时,一般与SetSelectionMark函数连用:
m_list.SetItemState(nIndex, LVIS_FOCUSED | LVIS_SELECTED,LVIS_FOCUSED | LVIS_SELECTED); //选中行
m_list.SetSelectionMark(nIndexs);
2、取消CListCtrl选中行
m_list.SetItemState(nIndex, 0, LVIS_SELECTED);
m_list.SetSelectionMark(-1);
3、CListCtrl选中行改变
项目中用到ClistCtrl,当选中行改变时,另外一个控件的详细信息也随之改变,最开始使用鼠标点击事件:
void CMyDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)
{
TODO: Add your control notification handler code here
int nIndex = m_list.GetSelectionMark();
if (nIndex >=0)
{
//要进行的操作
}
}
后来发现,用鼠标点击并不完善,因为如果用键盘来切换选中行的话,另一控件的信息就改变不了,于是改用响应LVN_ITEMCHANGED消息,发现改变选中行时会有好几个LVN_ITEMCHANGED消息,加入判断即可:
void CMyDlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMListView->uChanged == LVIF_STATE)
{
if(pNMListView->uNewState)
{
int nIndex = pNMListView->iItem;
//要进行的操作
}
}
*pResult = 0;
}
- CListCtrl
- ClistCtrl
- ClistCtrl
- CLISTCTRL
- CListCtrl
- ClistCtrl
- CListCtrl
- ClistCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- CListCtrl
- 引发latch: cache buffers chains及事件模拟
- 孤儿进程和守护进程
- 网页编码就是那点事
- 韩顺平_轻松搞定网页设计(html+css+javascript)_第19讲_js运行原理_js开发工具介绍_js程序(hello)_js基本语法_学习笔记_源代码图解_PPT文档整理
- Android用悬浮按钮实现翻页效果
- CListCtrl
- 解决浏览器间的不兼容问题---火狐正常显示,其他浏览器有问题的情况
- word2007中生成统计图的两种方式
- 图示指针
- 337. Once a thief, always a thief. 偷盗一次,做贼一世
- 3D分析之常用转换工具
- 字符串常量 (找工作时候看的)
- 高校巡讲总结
- jetty-start(2)