desktop so that if they get messed up by, say, an old game of mine that swich resolution, i could rearrange them with
the push of a button. Seem simple enough.
The first thing i've done is check with Spy++ what kind of control it was, it's a syslistview32, so, basically, a listview.
So, i started by sending the LVM_GETITEMCOUNT message to it to get the number of icons, it worked. So far, so good. If i add or
delete some icons, the number change accordingly. Then, that's when it get weird... When i try to get the position of each
icon, using the LVM_GETITEMPOSITION message, or by using the macro ListView_GetItemPosition that do the same exact thing,
the POINT structure im passing is not getting filled. The same thing happen when trying to get the text with LVM_GETITEMTEXT.
The weird thing is, if i monitor the message LVM_GETITEMPOSITION for example, using Spy++, i can see that my messages have
been sent and received, and i can see the value that should be in my POINT structure, but it's not there...
I can't see what the hell is going on.
Here's the code:
#include "Windows.h"
#include "COMMCTRL.H"
void main()
{
// The window always have this handle on XP, unless it crash...
DWORD DesktopHandle = 0x00010088;
// A little kludge...
HWND hDesktop = NULL;
memcpy(&hDesktop, &DesktopHandle, 4);
// This work (both of em)...
//int NumItems = SendMessage(hDesktop, LVM_GETITEMCOUNT, 0, 0);
int NumItems = ListView_GetItemCount(hDesktop);
for(int Cpt = 0; Cpt < NumItems; Cpt++){
POINT Pos;
ZeroMemory(&Pos, sizeof(POINT));
// This dosen't work (again, both of em)
//SendMessage(hDesktop, LVM_GETITEMPOSITION, Cpt, (LPARAM)(&Pos));
ListView_GetItemPosition(hDesktop, Cpt, (LPARAM)&Pos);
break;
}
}
If anyone could help me, that would be great, Thx.