1、
問:CListCtrl 用DeleteItem刪除中間項後,後面的項沒有往上推,怎麼解決?
答:可以在之後調用Arrange, CListCtrl::Arrange( UINT nCode ) 。
示例:
// Align all of the list view control items along the top
// of the window (the list view control must be in icon or
// small icon mode).
m_myListCtrl.Arrange(LVA_ALIGNTOP);
2、
問:
利用:
CListCtrl m_List;
POSITION pos;
pos=m_List.GetFirstSelectedItemPosition();
int nItem=m_List.GetNextSelectedItem(pos);
m_List.DeleteItem(nItem );
刪除指定行後,如何讓剩餘行仍按序排序?
如 刪除2行後 我需要
1 1 1
2 3 2
3 4 3
4 5 4
5
答:
BOOL SortItems(
PFNLVCOMPARE pfnCompare,
DWORD_PTR dwData
);
// Sort the item in reverse alphabetical order.
static int CALLBACK
MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
// lParamSort contains a pointer to the list view control.
CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
CString strItem1 = pListCtrl-> GetItemText(lParam1, 0);
CString strItem2 = pListCtrl-> GetItemText(lParam2, 0);
return strcmp(strItem2, strItem1);
}
void snip_CListCtrl_SortItems()
{
// The pointer to my list view control.
extern CListCtrl* pmyListCtrl;
// Sort the list view items using my callback procedure.
pmyListCtrl-> SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
}