CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

关于列表控件选中一行?

楼主guoDY(豆芽)2002-07-12 09:01:30 在 VC/MFC / 基础类 提问

程序中调用了一个列表控件(CListCtrl),鼠标单击时可以选中一行,可不可以用代码控制选择某一行,比如点击某个菜单时,列表框中某一行成选中的蓝色。 问题点数:100、回复次数:8Top

1 楼wistaria(听风听雨)回复于 2002-07-12 09:19:20 得分 5

try  
  int   SetSelectionMark(   int   iIndex   );  
   
  Top

2 楼yhb4(胖子)回复于 2002-07-12 09:25:03 得分 5

用消息响应函数LVN_ItemChangedTop

3 楼romanticist(桃花岛主--杭州)回复于 2002-07-12 09:38:41 得分 40

CListCtrl   m_ListView;  
  m_ListView.SetItemState(0,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);  
  第一参数就是你要选择地行地INDEx  
  例子0,选择了第一行  
   
  Top

4 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-07-12 10:01:31 得分 5

void   CAdoDataListImpl::HandleOnContextMenu(CWnd*   pWnd,   CPoint   ptMousePos)  
  {  
  //   if   Shift-F10  
  if   (ptMousePos.x   ==   -1   &&   ptMousePos.y   ==   -1)  
  ptMousePos   =   (CPoint)   GetMessagePos();  
  GetCtrlPointer()->ScreenToClient(&ptMousePos);//CListCtrl*   GetCtrlPointer()  
  int   iItem=GetCtrlPointer()->HitTest(ptMousePos);  
  if(iItem!=-1)  
  CGlobal::g_listSelectItem(*GetCtrlPointer(),iItem   ,FALSE);  
  GetCtrlPointer()->ClientToScreen(&ptMousePos);  
  CDataImpl::HandleOnContextMenu(pWnd,   ptMousePos);  
  }  
  void   CGlobal::g_listSelectItem(CListCtrl&   rList,int   iItem,BOOL   bExclusive/*=TRUE*/)  
  {  
  int i;  
  UINT nState,nStateMask;  
   
  nState=0;  
  nStateMask=LVIS_SELECTED;  
  if   (bExclusive) { //   dis-select   the   current   selected   items  
  i=-1; //   deselect   or   kill   focus   the   current   selected   items  
  ListView_SetItemState(rList.m_hWnd,i,nState,nStateMask);  
  }  
  //   select   the   new   item  
  nState=LVIS_SELECTED   ;  
  ListView_SetItemState(rList.m_hWnd,iItem,nState,nStateMask);  
  if(iItem!=-1)  
  rList.EnsureVisible(iItem,FALSE);  
  } //   end   of   SelectListItem()Top

5 楼jiangsheng(蒋晟.Net[MVP])回复于 2002-07-12 10:02:52 得分 5

void   CAdoDataListImpl::HandleOnContextMenu(CWnd*   pWnd,   CPoint   ptMousePos)  
  {  
  //   if   Shift-F10  
  if   (ptMousePos.x   ==   -1   &&   ptMousePos.y   ==   -1)  
  ptMousePos   =   (CPoint)   GetMessagePos();  
  GetCtrlPointer()->ScreenToClient(&ptMousePos);//CListCtrl*   GetCtrlPointer()  
  int   iItem=GetCtrlPointer()->HitTest(ptMousePos);  
  if(iItem!=-1)  
  CGlobal::g_listSelectItem(*GetCtrlPointer(),iItem   ,FALSE);  
  GetCtrlPointer()->ClientToScreen(&ptMousePos);  
  CDataImpl::HandleOnContextMenu(pWnd,   ptMousePos);  
  }  
  void   CGlobal::g_listSelectItem(CListCtrl&   rList,int   iItem,BOOL   bExclusive/*=TRUE*/)  
  {  
  int i;  
  UINT nState,nStateMask;  
   
  nState=0;  
  nStateMask=LVIS_SELECTED;  
  if   (bExclusive) { //   dis-select   the   current   selected   items  
  i=-1; //   deselect   or   kill   focus   the   current   selected   items  
  ListView_SetItemState(rList.m_hWnd,i,nState,nStateMask);  
  }  
  //   select   the   new   item  
  nState=LVIS_SELECTED   ;  
  ListView_SetItemState(rList.m_hWnd,iItem,nState,nStateMask);  
  if(iItem!=-1)  
  rList.EnsureVisible(iItem,FALSE);  
  } //   end   of   SelectListItem()Top

6 楼alphapiao(奉旨灌水钦差)回复于 2002-07-12 10:21:46 得分 30

CListCtrl   m_ListView;  
  m_ListView.SetItemState(0,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);  
  Top

7 楼mty(天鱼)回复于 2002-07-12 10:32:40 得分 5

CYourDlg::OnOneMenuClick()  
  {  
        VITEM   item;  
        item.iItem   =   xxx;  
        GetItem(&item);  
        item.mask   |=   LVIF_STATE;  
        item.stateMask   =   LVIS_SELECTED;  
        item.state   =   LVIS_SELECTED;  
        SetItem(&item);  
  }Top

8 楼cdutgch(欢喜游龙)回复于 2002-07-12 11:19:35 得分 5

很简单,只要加入下面这句就可以,可以在初始化的时候加入  
  ListView_SetExtendedListViewStyleEx(m_getnetdata.m_hWnd,   LVS_EX_FULLROWSELECT,   0xFFFFFFFF);    
  Top

9 楼orangetouch(orange)回复于 2002-07-12 11:19:38 得分 0

列表框怎么才能选中一行呢?Top

10 楼chenybin(小马)回复于 2002-07-12 16:39:57 得分 0

我只用过数据库的  
  那样是很容易的  
  但是如果不是的话  
  我也搞不是很清楚  
  你去VCHELP。NET应该有例子的Top

相关问题

  • 如何判断ListCtrl控件没有选中一行?
  • 怎么加亮(选中)dbgird控件的任意一行?
  • 如何选中CListCtrl控件中的“一行”?
  • 如何选中Memo控件的某一行?
  • 如何用命令选中List控件中的一行
  • 请教:如何实现列表框中选中一行?
  • 打开列表框时,怎样让列表的第一行被选中
  • 怎样是选中CListCtrl控件时加亮显示一行,而不是一列?
  • 请问怎样获得当前ListCtrl控件选中了哪一行?
  • 关于ListView控件显示数据选中其中一行的问题

关键词

  • 选择
  • ptmousepos
  • lvis
  • getctrlpointer
  • 一行
  • nstatemask
  • setitemstate
  • 选中
  • iitem
  • 列表

得分解答快速导航

  • 帖主:guoDY
  • wistaria
  • yhb4
  • romanticist
  • jiangsheng
  • jiangsheng
  • alphapiao
  • mty
  • cdutgch

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo