桌面上的图标显示区域实际上是一个ListView,其Caption属性为:FolderView,Class属性为:SysListView32,可以通过FindWindow()得到该区域的句柄。
然后可以通过SendMessage向该区域发送LVM_SETITEMPOSITION32消息来指定桌面上某个图标的位置。
wParam中指定欲移动位置的图标ID号(系统给桌面上的每个图标都分配了唯一的ID号,一般为从0开始的整数)
lParam中指定保存欲移动到的位置坐标POINT结构的地址指针
例如要使桌面上ID为1的图标移至(200,100)位置,则
POINT pt;
pt.x=200;
pt.y=100;
SendMessage(hWnd,LVM_SETITEMPOSITION32,1,(LPARAM)&pt);
知道了定位方法,那么要让桌面上的图标排列成心形,太极等样子就只是在桌面上选取适当的坐标的数学问题了,这里我就不再讲述,个有个的方法,爱怎么做就怎么做吧。
以上方法至少在Window XP下可行,其他版本的Window应该也相差不大。
