MFClistctrl中的Item改变先后顺序的问题
我是使用下述语句来给MFClistctrl插入带图标的ITEM的HICONmyIcon=AfxGetApp()->LoadIcon(IDI_ICON2);CImageLi...
我是使用下述语句来给MFC listctrl 插入带图标的ITEM的
HICON myIcon=AfxGetApp()->LoadIcon(IDI_ICON2); CImageList myList;
myList.Add(myIcon);
myList.Create(64,64,ILC_COLOR32,8,8);
m_list.SetImageList(&myList,LVSIL_NORMAL);
LVITEM lvitem;
lvitem.mask=LVIF_IMAGE|LVIF_TEXT;
lvitem.iItem=0;
lvitem.pszText=(LPTSTR)(LPCTSTR)m_name;
lvitem.iImage=0;
lvitem.iSubItem=0;
m_list.InsertItem(&lvitem);
我调用了3次这样的语句,现在我想要设计2个按钮,第一个按钮用户可以让选中的item上移,就是上调一个顺序,比如本来是第三个item换到第二个来,而第二个item换到第三个来,第二个按钮恰恰相反,是让item的顺序后移的,但是我不知道要用什么函数?还有,我需要一个可能是Get...()这样的函数来获取m_list这个Listctrl中选中的item,请问有没有这样的函数啊?好心人帮帮我,答得好的一定追加 展开
HICON myIcon=AfxGetApp()->LoadIcon(IDI_ICON2); CImageList myList;
myList.Add(myIcon);
myList.Create(64,64,ILC_COLOR32,8,8);
m_list.SetImageList(&myList,LVSIL_NORMAL);
LVITEM lvitem;
lvitem.mask=LVIF_IMAGE|LVIF_TEXT;
lvitem.iItem=0;
lvitem.pszText=(LPTSTR)(LPCTSTR)m_name;
lvitem.iImage=0;
lvitem.iSubItem=0;
m_list.InsertItem(&lvitem);
我调用了3次这样的语句,现在我想要设计2个按钮,第一个按钮用户可以让选中的item上移,就是上调一个顺序,比如本来是第三个item换到第二个来,而第二个item换到第三个来,第二个按钮恰恰相反,是让item的顺序后移的,但是我不知道要用什么函数?还有,我需要一个可能是Get...()这样的函数来获取m_list这个Listctrl中选中的item,请问有没有这样的函数啊?好心人帮帮我,答得好的一定追加 展开
1个回答
展开全部
CListCtrl::GetFirstSelectedItemPosition
POSITION GetFirstSelectedItemPosition()
返回一个用于迭代或获取对象指针的POSITION值;如果没有选择任何项,那么将返回NULL。
在列表视图控件中获取第一个选择项的位置。
MSDN给出了该函数的用法。
CListCtrl* pListCtrl=( CListCtrl* )GetDlgItem(IDC_YOURLISTCONTROL);
ASSERT(pListCtrl !=NULL)
POSITION pos = pList->GetFirstSelectedItemPosition();
if (pos==NULL) TRACE0("No items were selected!\n")
else
{
while (pos)
{
int nItem=pList->GetNextSelectedItem(pos);
TRACE1("item %d was Selected!\n",nItem);
//you could do your processing on nItem here
}
}
另外交换list的一项可以用这个函数
CListCtrl::SetItemPosition
BOOL SetItemPosition(int nItem,POINT pt)
返回值:如果成功,则返回非零值,否则为0。
参数: nItem 要设定位置项的索引。
pt 在视图坐标中指定项左上角新位置的POINT结构值。
具体我也没试你自己试试看吧
POSITION GetFirstSelectedItemPosition()
返回一个用于迭代或获取对象指针的POSITION值;如果没有选择任何项,那么将返回NULL。
在列表视图控件中获取第一个选择项的位置。
MSDN给出了该函数的用法。
CListCtrl* pListCtrl=( CListCtrl* )GetDlgItem(IDC_YOURLISTCONTROL);
ASSERT(pListCtrl !=NULL)
POSITION pos = pList->GetFirstSelectedItemPosition();
if (pos==NULL) TRACE0("No items were selected!\n")
else
{
while (pos)
{
int nItem=pList->GetNextSelectedItem(pos);
TRACE1("item %d was Selected!\n",nItem);
//you could do your processing on nItem here
}
}
另外交换list的一项可以用这个函数
CListCtrl::SetItemPosition
BOOL SetItemPosition(int nItem,POINT pt)
返回值:如果成功,则返回非零值,否则为0。
参数: nItem 要设定位置项的索引。
pt 在视图坐标中指定项左上角新位置的POINT结构值。
具体我也没试你自己试试看吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询