sorting a list
-
Hello, I have a list control item with a given amount of columns and respective headers. I would now like to add some sorting functionality, where, upon clicking the header of the respective column, it sorts alphabetically. Are there any functions to accomplish this?
-
Hello, I have a list control item with a given amount of columns and respective headers. I would now like to add some sorting functionality, where, upon clicking the header of the respective column, it sorts alphabetically. Are there any functions to accomplish this?
BOOL SortItems( PFNLVCOMPARE pfnCompare, DWORD_PTR dwData );
Regards, FarPointer Blog:FARPOINTER -
Hello, I have a list control item with a given amount of columns and respective headers. I would now like to add some sorting functionality, where, upon clicking the header of the respective column, it sorts alphabetically. Are there any functions to accomplish this?
You'll have to create a compare function to handle how it will sort the items, but after that you can just call SortItems. See the MSDN documentation for details and an example. If you decide to become a software engineer, you are signing up to have a 1/2" piece of silicon tell you exactly how stupid you really are for 8 hours a day, 5 days a week Zac
-
Hello, I have a list control item with a given amount of columns and respective headers. I would now like to add some sorting functionality, where, upon clicking the header of the respective column, it sorts alphabetically. Are there any functions to accomplish this?
aafcls wrote:
Are there any functions to accomplish this?
See here.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
aafcls wrote:
Are there any functions to accomplish this?
See here.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
okay but what action item will take care of the header clicking functionality, because from there I can call sorting method.
NM_RCLICK
Regards, FarPointer Blog:FARPOINTER -
okay but what action item will take care of the header clicking functionality, because from there I can call sorting method.
In your
CListView
/CListCtrl
-derived class, provide a handler for theHDN_ITEMCLICK
notification. Call theSortItems()
method from there. See here for more.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
In your
CListView
/CListCtrl
-derived class, provide a handler for theHDN_ITEMCLICK
notification. Call theSortItems()
method from there. See here for more.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
Please check this out :- http://www.codeguru.com/Cpp/controls/listview/columns/article.php/c985/[^] Regards, FarPointer Blog:FARPOINTER
-
Please check this out :- http://www.codeguru.com/Cpp/controls/listview/columns/article.php/c985/[^] Regards, FarPointer Blog:FARPOINTER
FarPointer wrote:
Please check this out :-
Why (send this to me)? I know very well how to sort a list control.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
FarPointer wrote:
Please check this out :-
Why (send this to me)? I know very well how to sort a list control.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
Well to first add the notification for HDN_ITEMCLICK is tough:- why because the on notify macro is as follows ON_NOTIFY( wNotifyCode, id, memberFxn ) and the id of the header control is zero unless explicitly set . Regards, FarPointer Blog:FARPOINTER
-
Well to first add the notification for HDN_ITEMCLICK is tough:- why because the on notify macro is as follows ON_NOTIFY( wNotifyCode, id, memberFxn ) and the id of the header control is zero unless explicitly set . Regards, FarPointer Blog:FARPOINTER
FarPointer wrote:
Well to first add the notification for HDN_ITEMCLICK is tough:-
Compared to what, chewing gum? It gets added to the message map just like any other. How's that tough?
FarPointer wrote:
why because the on notify macro is as follows ON_NOTIFY( wNotifyCode, id, memberFxn )
Yeah, so?
FarPointer wrote:
...the id of the header control is zero unless explicitly set .
Of course it's zero, and has been since the control's inception. Why would it need to be anything else?
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
FarPointer wrote:
Well to first add the notification for HDN_ITEMCLICK is tough:-
Compared to what, chewing gum? It gets added to the message map just like any other. How's that tough?
FarPointer wrote:
why because the on notify macro is as follows ON_NOTIFY( wNotifyCode, id, memberFxn )
Yeah, so?
FarPointer wrote:
...the id of the header control is zero unless explicitly set .
Of course it's zero, and has been since the control's inception. Why would it need to be anything else?
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
Well not compared to chewing gum :-D ya my mistake i was expecting the message map to be like this:-
ON_NOTIFY( HDN_ITEMCLICK, 0, OnHeaderClick)
but it will be like this i guessON_NOTIFY( HDN_ITEMCLICK, IDC_LIST, OnHeaderClick)
Regards, FarPointer Blog:FARPOINTER -
In your
CListView
/CListCtrl
-derived class, provide a handler for theHDN_ITEMCLICK
notification. Call theSortItems()
method from there. See here for more.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
are there any available comparison functions just for a simple list control for a clicked-on header, to be passed to SortItem?
Other than the one I already provided? It doesn't get much simpler.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
Other than the one I already provided? It doesn't get much simpler.
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
are you referring to the
CompareFunction
in the article you sent? in that case, would I have to make use of "GetItemText" to fill in the "items" in CompareFunction? i'm just not sure how to implement this with a list of unknown quantity of items..aafcls wrote:
in that case, would I have to make use of "GetItemText"
No. You would cast
lParam1
andlParam2
to the appropriate pointer value (the pointer value used withSetItemData()
).
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
-
are you referring to the
CompareFunction
in the article you sent? in that case, would I have to make use of "GetItemText" to fill in the "items" in CompareFunction? i'm just not sure how to implement this with a list of unknown quantity of items..:confused:
aafcls wrote:
unknown quantity of items
Do you not understand that sort will be called from inside a sorting algorithm and you don't need to be concerned with the quantity of items?
"Just about every question you've asked over the last 3-4 days has been "urgent". Perhaps a little planning would be helpful?"
Colin Angus Mackay in the C# forumled mike
-
aafcls wrote:
in that case, would I have to make use of "GetItemText"
No. You would cast
lParam1
andlParam2
to the appropriate pointer value (the pointer value used withSetItemData()
).
"The largest fire starts but with the smallest spark." - David Crow
"Judge not by the eye but by the heart." - Native American Proverb
I am very sorry I do not understand. I do not make use of SetItemData(). All I have is my list control where I have a few InsertColumn()s and SetItemText() accordingly. When you tell me to cast these as pointers int CALLBACK CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) ...pointing to what exactly?
-
I am very sorry I do not understand. I do not make use of SetItemData(). All I have is my list control where I have a few InsertColumn()s and SetItemText() accordingly. When you tell me to cast these as pointers int CALLBACK CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) ...pointing to what exactly?
-
I am very sorry I do not understand. I do not make use of SetItemData(). All I have is my list control where I have a few InsertColumn()s and SetItemText() accordingly. When you tell me to cast these as pointers int CALLBACK CompareFunction(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) ...pointing to what exactly?
aafcls wrote:
I do not make use of SetItemData().
But you must, if
SortItems()
is to be used, as it internally callsGetItemData()
.aafcls wrote:
All I have is my list control where I have a few InsertColumn()s and SetItemText() accordingly.
You'll also need to use
InsertItem()
.aafcls wrote:
...pointing to what exactly?
Whatever pointer value you used with
SetItemData()
.
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb