|
You know there's a Sleep function, right ? Because if the only thing you want to do is have a delay of 2 seconds, select is certainly not the best way to do it
|
|
|
|
|
I second Cédric, Sleep()[^] would be the simpler way for a two seconds delay.
|
|
|
|
|
i am using ListView_SortItems(hDlg, SortListCompareFunc, hDlg);
for sorting my list view
but my call back method SortListCompareFunc is never getting called
do i need to do any thing else
|
|
|
|
|
posting piece of relevant code may help u to get quick solution..
|
|
|
|
|
|
arun_pk wrote:
Don't be sad, be pro-active.
Cool_Dev is quite right. It's not reasonable for you to expect us to be psychic. You might have done millions of things wrongly.
If in real doubt... Make a mew dialog box application, essentially with just this feature. A list box, and maybe two sort buttons. In those buttons' code, use different sort functions. When that works, then you'll see what you did wrong in your "real" application.
Iain.
I have now moved to Sweden for love (awwww).
|
|
|
|
|
thanks for your concern
my mistake was the first parameter in ListView_SortItems
1st parameter was not indicating the listview
now i made it as listview handler .....
Eugan gave me the solution ..
|
|
|
|
|
Please note,
that the first parameter of the macro ListView_SortItems
should get the handle of the list, not of the dialog...
virtual void BeHappy() = 0;
|
|
|
|
|
Good morning Eugen
its reaching inside the sortFunction
what do i write inside that function to sort
sorry i m totally new to vc++
|
|
|
|
|
|
Thanks Eugen
i m workg out as per your comments
will let you know after i complete
|
|
|
|
|
Good morning Eugen
this is how my existing project sorting functionality
HD_NOTIFY *phdntfy = (HD_NOTIFY *) lparam;
if (phdntfy->hdr.code == HDN_ITEMCLICK)
{
if (phdntfy->iItem == Sort1)
{
SortOrder[phdntfy->iItem] *= -1;
}
else {
Sort2 = Sort1; Sort1 = phdntfy->iItem; }
ListView_SortItems(hwndLV, ListViewCompareProc, Sort1);
}
break;
but in my project there is no LPARAM in notify method
Notify(HWND hDlg, int idCtrl, NMHDR *pnmh) these are the params of notify method
how do i get HD_NOTIFY
|
|
|
|
|
Do you mean, that the lparam is NULL at the first line ?
virtual void BeHappy() = 0;
|
|
|
|
|
I mean to say in my already existing notify method does not have LPARAM parameter
these are the parameters of my notofy function
Notify(HWND hDlg, int idCtrl, NMHDR *pnmh)
|
|
|
|
|
Why are you needing that LPARAM ?
virtual void BeHappy() = 0;
|
|
|
|
|
Coz
this is how they finds whether sorting has to be done in reverse order or ascending....
if (phdntfy->hdr.code == HDN_ITEMCLICK)
//&& (phdntfy->iItem < 5))
{
if (phdntfy->iItem == Sort1) // if same sort, reverse order
{
SortOrder[phdntfy->iItem] *= -1;
}
else // else, perform secondary sort
{
Sort2 = Sort1; // primary sort becomes secondary sort
Sort1 = phdntfy->iItem; // new primary second sort
}
|
|
|
|
|
You could sort your list at the init state
and save the order in your own variable,
then - change it, at the next sorting...
virtual void BeHappy() = 0;
|
|
|
|
|
there is no lparam in my notify method
***************
HD_NOTIFY *phdntfy = (HD_NOTIFY *) lparam; /this code is there in some other dialog's notify method where they get lParam
|
|
|
|
|
Could you post the whole function (that has your switch), please ?
virtual void BeHappy() = 0;
|
|
|
|
|
case LVN_COLUMNCLICK:
{
LPARAM lParam=(LPARAM)pnmh;
LPNMLISTVIEW pLVInfo = (LPNMLISTVIEW)pnmh->code;
HD_NOTIFY *phdntfy = (HD_NOTIFY *) pnmh->code;
if (phdntfy->hdr.code == HDN_ITEMCLICK) //&& (phdntfy->iItem < 5))
{
if (phdntfy->iItem == Sort1) // if same sort, reverse order
{
SortOrder[phdntfy->iItem] *= -1;
}
else // else, perform secondary sort
{
Sort2 = Sort1; // primary sort becomes secondary sort
Sort1 = phdntfy->iItem; // new primary second sort
}
ListView_SortItems(pLVInfo->hdr.hwndFrom, ListViewCompareProc, Sort1);
}
break;
}
|
|
|
|
|
Try something like it :
#define COL_COUNT 6 // Count of cols
bool g_arOrders[COL_COUNT] = {0};
...
{
..
case WM_NOTIFY:
switch (((LPNMHDR) lParam)->code) {
case LVN_COLUMNCLICK: {
int iCol = ((LPNMLISTVIEW) lParam)->iSubItem;
if (0 <= iCol && iCol < COL_COUNT) {
g_arOrders[iCol] = !g_arOrders[iCol];
ListView_SortItems(hwndList, ListViewCompareProc, iCol);
}
}
break;
...
}
...
virtual void BeHappy() = 0;
|
|
|
|
|
ok thanks
|
|
|
|
|
Now i have given Like this
typedef struct tagNOTATIONINFO
{
int nEpoch;
TCHAR szDateTime[20];
TCHAR szEvent[100];
}
NOTATIONINFO;
int CALLBACK ListViewCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
NOTATIONINFO* nNot1=(NOTATIONINFO*) lParam1;
NOTATIONINFO* nNot2=(NOTATIONINFO*) lParam2;
return _tcscmp(nNot1->szEvent,nNot2->szEvent);
}
just comparing the event parameter
nothing happening
is there any thing extra i need to do ???
|
|
|
|
|
I have some questions :
0) Will the comparing function be called, can you verify it ?
1) The structure instances must be associated with list items.
How were the items inserted ?
virtual void BeHappy() = 0;
|
|
|
|
|
yes the comparing function is getting called.
ListView items are added from a file
at every Loop i m adding to global structure variable of NOTATIONINFO
|
|
|
|