2 * PROJECT: ReactOS Applications
3 * LICENSE: LGPL - See COPYING in the top level directory
4 * FILE: base/applications/msconfig_new/comctl32ex/listview.c
5 * PURPOSE: List-View helper functions.
6 * COPYRIGHT: Copyright 2011-2012 Hermes BELUSCA - MAITO <hermes.belusca@sfr.fr>
12 ///////////// ListView Sorting /////////////
14 typedef struct __tagSort
22 SortListView(LPARAM lItemParam1
,
26 PSort pSort
= (PSort
)lPSort_S
;
28 int iItem1
= (int)lItemParam1
;
29 int iItem2
= (int)lItemParam2
;
31 WCHAR strItem1
[MAX_VALUE_NAME
];
32 WCHAR strItem2
[MAX_VALUE_NAME
];
34 ListView_GetItemText(pSort
->hList
, iItem1
, pSort
->nClickedColumn
, strItem1
, MAX_VALUE_NAME
);
35 ListView_GetItemText(pSort
->hList
, iItem2
, pSort
->nClickedColumn
, strItem2
, MAX_VALUE_NAME
);
37 // StrCmpLogicalW helps in comparing numbers intelligently, 10 is greater that 2, other
38 // wise string comparison will always return 2 is greater that 10...
39 return ( pSort
->bSortAsc
? StrCmpLogicalW(strItem1
, strItem2
) : StrCmpLogicalW(strItem2
, strItem1
) );
43 ListView_SortEx(HWND hListView
,
52 if ((GetWindowLongPtr(hListView
, GWL_STYLE
) & ~LVS_NOSORTHEADER
) == 0)
55 hHeader
= ListView_GetHeader(hListView
);
56 SecureZeroMemory(&hColumn
, sizeof(hColumn
));
58 if ( (iSortedColumn
!= -1) && (iSortedColumn
!= iSortingColumn
) )
60 hColumn
.mask
= HDI_FORMAT
| HDI_LPARAM
;
61 Header_GetItem(hHeader
, iSortedColumn
, &hColumn
);
62 hColumn
.fmt
&= ~HDF_SORTUP
& ~HDF_SORTDOWN
;
63 hColumn
.lParam
= 0; // 0: deactivated, 1: false, 2: true.
64 Header_SetItem(hHeader
, iSortedColumn
, &hColumn
);
67 hColumn
.mask
= HDI_FORMAT
| HDI_LPARAM
;
68 Header_GetItem(hHeader
, iSortingColumn
, &hColumn
);
70 bSortAsc
= !(hColumn
.lParam
== 2); // 0: deactivated, 1: false, 2: true.
72 hColumn
.fmt
&= (bSortAsc
? ~HDF_SORTDOWN
: ~HDF_SORTUP
);
73 hColumn
.fmt
|= (bSortAsc
? HDF_SORTUP
: HDF_SORTDOWN
);
74 hColumn
.lParam
= (LPARAM
)(bSortAsc
? 2 : 1);
75 Header_SetItem(hHeader
, iSortingColumn
, &hColumn
);
78 sort
.bSortAsc
= bSortAsc
;
79 sort
.hList
= hListView
;
80 sort
.nClickedColumn
= iSortingColumn
;
81 return ListView_SortItemsEx(hListView
, SortListView
, (LPARAM
)&sort
);
84 //////////////////////////////////////////////