C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 279 - Класс CListBox, сортировка списка / MFC шаг за шагом / Visual C++

Шаг 279 - Класс CListBox, сортировка списка

Список может быть отсортирован, если у него установлен флаг сортировки и перегружена функция CompareItem().

279.gif (2662 b)

int CTestList::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct) 
{
	// TODO: Add your code to determine the sorting order of the specified items
	// return -1 = item 1 sorts before item 2
	// return 0 = item 1 and item 2 sort the same
	// return 1 = item 1 sorts after item 2
	
	return 0;
}

Если ставите sort, то перегружайте функцию, иначе получите сообщение об ошибке в ходе выполнения. Главное, что передается в этот список - это структура COMPAREITEMSTRUCT.

typedef struct tagCOMPAREITEMSTRUCT {
	UINT   CtlType;
	UINT   CtlID;
	HWND   hwndItem;
	UINT   itemID1;		// индекс первого элемента в списке
	DWORD  itemData1;		// данные первого элемента
	UINT   itemID2;		// индекс второго сравниваемого элемента
	DWORD  itemData2;		// данные второго сравниваемого элемента
} COMPAREITEMSTRUCT;

Давайте попробуем отсортировать наш список стран по первой букве:

int CTestList::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct) 
{
	CString s1=(LPSTR)lpCompareItemStruct->itemData1; 
	CString s2=(LPSTR)lpCompareItemStruct->temData2;
	char c1=s1[0];
	char c2=s2[0];
	if (c1>=c2) return 1;
	else return -1;
}

В обратном порядке будет наоборот:

if (c1<c2) return 1;
else return -1;

Список станет таким:

ЯПОНИЯ
США
РОССИЯ
КАНАДА

А вообще-то условия можно давать и значительно сложнее. Например, сортировать по площади, которую можно брать из базы данных.


| |
Автор Каев Артем.
[AD]