Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All


Called by the framework to determine the relative position of a new item in a sorted owner-draw list box.

virtual int CompareItem(


A long pointer to a COMPAREITEMSTRUCT structure.

Return Value

Indicates the relative position of the two items described in the COMPAREITEMSTRUCT structure. It may be any of the following values:

Value Meaning
–1 Item 1 sorts before item 2.
0 Item 1 and item 2 sort the same.
1 Item 1 sorts after item 2.

See CWnd::OnCompareItem for a description of the COMPAREITEMSTRUCT structure.


By default, this member function does nothing. If you create an owner-draw list box with the LBS_SORT style, you must override this member function to assist the framework in sorting new items added to the list box.


// CMyListBox is my owner-drawn list box derived from CListBox. This 
// example compares two items using strcmp to sort items in reverse 
// alphabetical order. The list box control was created with the 
// following code:
//   pmyListBox->Create(
//      myRect, pParentWnd, 1);
int CMyListBox::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 strcmp(lpszText2, lpszText1);

See Also

CListBox Overview | Class Members | Hierarchy Chart | WM_COMPAREITEM | CWnd::OnCompareItem | CListBox::DrawItem | CListBox::MeasureItem | CListBox::DeleteItem

© 2015 Microsoft