CListBox::CompareItem
並べ替えた後のオーナー描画リスト ボックスで、新しい項目の相対位置を調べるために、フレームワークによって呼び出されます。
virtual int CompareItem(
LPCOMPAREITEMSTRUCT lpCompareItemStruct
);
パラメーター
- lpCompareItemStruct
COMPAREITEMSTRUCT 構造体への long ポインター。
戻り値
COMPAREITEMSTRUCT 構造体にある 2 つの項目の相対位置を表します。 次のいずれかの値を使用できます。
値 |
説明 |
---|---|
–1 |
並べ替え後の項目 1 の位置は、項目 2 の前になります。 |
0 |
並べ替え後の項目 1 の位置は、項目 2 と同じになります。 |
1 |
並べ替え後の項目 1 の位置は、項目 2 の後ろになります。 |
COMPAREITEMSTRUCT 構造体の説明については、CWnd::OnCompareItem を参照してください。
解説
既定では、このメンバー関数は何も実行しません。 オーナー描画リスト ボックスが LBS_SORT スタイルで作成されているときは、フレームワークが新しくリスト ボックスに追加された項目を並べ替えられるように、このメンバー関数をオーバーライドします。
使用例
// CMyODListBox is my owner-drawn list box derived from CListBox. This
// example compares two items using _tcscmp to sort items in reverse
// alphabetical order. The list box control was created with the
// following code:
// m_myODListBox.Create(
// WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
// LBS_SORT|LBS_MULTIPLESEL|LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
// CRect(10,250,200,450), pParentWnd, IDC_MYODLISTBOX);
//
int CMyODListBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
ASSERT(lpCompareItemStruct->CtlType == ODT_LISTBOX);
LPCTSTR lpszText1 = (LPCTSTR) lpCompareItemStruct->itemData1;
ASSERT(lpszText1 != NULL);
LPCTSTR lpszText2 = (LPCTSTR) lpCompareItemStruct->itemData2;
ASSERT(lpszText2 != NULL);
return _tcscmp(lpszText2, lpszText1);
}
必要条件
**ヘッダー:**afxwin.h