void ClistCtrlSortTestDlg::PrepareListHeader()
{
LVCOLUMN lvColumn;
::memset(&lvColumn, 0, sizeof(LVCOLUMN));
lvColumn.mask = LVCF_TEXT | LVCF_WIDTH;
lvColumn.cx = 100;
lvColumn.pszText = _T("num");
m_numList.InsertColumn(0, &lvColumn);
}
void ClistCtrlSortTestDlg::PrepareListCtrl()
{
LVITEM lvItem;
::memset(&lvItem, 0, sizeof(LVITEM));
#define BUF_SIZE 8
int num;
TCHAR buf[BUF_SIZE];
lvItem.mask = LVIF_TEXT | LVIF_PARAM;
lvItem.iSubItem = 0;
for (int i = 0; i < 50; ++i) {
lvItem.iItem = i;
num = rand();
_stprintf_s(buf, BUF_SIZE, _T("%d"), num);
lvItem.pszText = buf;
lvItem.cchTextMax = BUF_SIZE;
lvItem.lParam = (LPARAM)num; // ここに値を設定
m_numList.InsertItem(&lvItem);
}
}
int CALLBACK CompProc(LPARAM lp1, LPARAM lp2, LPARAM lp3)
{
if (lp1 < lp2) {
return -1; // lp1が前に来るようにしたいなら負を返す
} else if (lp1 > lp2) {
return 1; // lp2が前に来るようにしたいなら負を返す
} else {
return 0;
}
}
void ClistCtrlSortTestDlg::OnBnClickedBtnSort()
{
// TODO: ここにコントロール通知ハンドラ コードを追加します。
m_numList.SortItems(CompProc, 0);
}