
点击事件(不一定是第一次第二山坦次,通用)中判断
如果Atrl_selected 无值,那么本次点击是第一次粗唯磨,做如下动作。
1。设置 Atrl_selected 值(或者名字或则坐标,供第二次调用)。
如果Atrl_selected 有值,那么本次点击是第二次,做如下动作。
1。记录A,B的坐标,
2。重新设置A,B坐标岩斗(互换)
3。清空Atrl_selected, Btrl_selected值。
写一个函春颂哗数转换一下就好了,比如说你的坐标系里扒行的一个点p(1,2),p=func(p)//p就是从你的坐标系转换成窗口的坐标系,然后进行 *** 作就是了。POINT func(POINT p)
{
POINT p1
RECT rec
::GetWindowRect(窗口樱没句柄,&rec)
p1.x=rec.Width()/2p1.y=rec.Height()/2
p1.x+=p.xp1.y-=p.y
return p1
}
void C***::OnSetDeskIcon(){
HWND hwndParent = ::FindWindow( "Progman", "Program Manager" )
HWND hwndSHELLDLL_DefView = ::FindWindowEx( hwndParent, NULL, "SHELLDLL_DefView", NULL )
HWND hwndSysListView32 = ::FindWindowEx( hwndSHELLDLL_DefView, NULL, "SysListView32", "FolderView" )
int Nm = ListView_GetItemCount( hwndSysListView32 )
int sNm = 0
if( Nm >= 10 )
{
sNm = 10
}else{
sNm = Nm
}
for( int i = 0 i < sNm i++ )
{
int x = 亩哗晌400 + 150*cos( i*36*3.1415926/180 )
int y = 400 + 150*sin( i*36*3.1415926/180 )
芦世 ::SendMessage( hwndSysListView32, LVM_SETITEMPOSITION, i, MAKELPARAM( x,y))
}
ListView_RedrawItems(hwndSysListView32, 0, ListView_GetItemCount(hwndSysListView32) 迅锋- 1)
::UpdateWindow(hwndSysListView32)
}
桌面的图标位置是在SysListView32里保存的, 这个程序就是用来修改的.
虽然没看懂.....不过看起来很麻烦.........
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)