关于列表控件选中一行?
程序中调用了一个列表控件(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




