저도 드래그 때문에 약간 고생했었는데요.?
드래그는 사람이 움직이듯 for문으로 좌표를 증가시키면서 해줘야하는게 포인트 였습니다.
근데 오핫에는 for문이 없나요?? 오핫도 정보가 은근히 없더라구요 ㅠ_ㅠ
SysGet, TitleBorderWeight, 32 ; 보더두께값을 변수에저장
SysGet, TitleWeight, 4 ? ?; 제목표시줄두께값을 변수에 저장
WinGetPos, gX, gY, gWidth, gHeight, %title% ; 해당윈도우의 좌표와 크기를 얻는다.
pmovedrag(1, 612, 372, 612, 183, "위쪽", "왼쪽버튼", 1, 1000, FindTitle)
;---------------------------------------------------------------------
;[pmovedrag] postmessage 드래그
; cp=클라이언트 좌표인지 여부
; x,y=시작좌표
; x1,y1=끝좌표
; direction=드래그방향(왼쪽,오른쪽,위쪽,아래쪽)
; nbutton=왼쪽버튼or오른쪽버튼
; pushdelay=누름딜레이
; leavedelay=드래그 끝난후 딜레이
; titlename=창이름
;---------------------------------------------------------------------
pmovedrag(cp, x, y, x1, y1, direction, nbutton, pushdelay, leavedelay, titlename)
{
Global TitleBorderWeight, TitleWeight, gX, gY
; 윈도우 좌표일 경우
if cp = 0
{
x := x - TitleBorderWeight - gX
y := y - TitleWeight - gY
x1 := x1 - TitleBorderWeight - gX
y1 := y1 - TitleWeight - gY
}
; 클라이언트 좌표일 경우
else
{
x := x - TitleBorderWeight
y := y - TitleWeight
x1 := x1 - TitleBorderWeight
y1 := y1 - TitleWeight
}
N:=x|y<<16 ? ?;<-좌표를 16진수로 변환
N1:=x1|y1<<16
;PostMessage로 드래그 하기 위해선 이걸 해줘야한다. (c++버전 코드)
;LPARAM lparam;
;lparam = (HTRIGHT | (WM_NCMOUSEMOVE << 16))?
param := 11 | (0xA0 << 16)
PostMessage, %param%,, %N%,,%titlename%
if (nbutton = "왼쪽버튼") ; 왼쪽버튼
{
down = 0x201
up = 0x202
}
else ; 오른쪽 버튼
{
down = 0x204
up = 0x205
}
dragspeed = 15 ; 이걸로 드래그 속도를 정한다.?
PostMessage, %down%, , %N%, , %titlename% ; 왼쪽or오른쪽 버튼 누른 상태
if (direction = "오른쪽")
{
ncount := (x1 - x) // dragspeed
loop, %ncount%
{
nx := x + (A_Index * dragspeed)
N2:=nx|y<<16
PostMessage, 0X200, 1, %N2%, , %titlename% ; 마우스 이동
sleep, 1
}
}
else if (direction = "왼쪽")
{
ncount := (x - x1) // dragspeed
loop, %ncount%
{
nx := x - (A_Index * dragspeed)
N2:=nx|y<<16
PostMessage, 0X200, 1, %N2%, , %titlename% ; 마우스 이동
sleep, 1
}
}
else if (direction = "아래쪽")
{
ncount := (y1 - y) // dragspeed
loop, %ncount%
{
ny := y + (A_Index * dragspeed)
N2:=x|ny<<16
PostMessage, 0X200, 1, %N2%, , %titlename% ; 마우스 이동
sleep, 1
}
}
else if (direction = "위쪽")
{
ncount := (y - y1) // dragspeed
loop, %ncount%
{
ny := y - (A_Index * dragspeed)
N2:=x|ny<<16
PostMessage, 0X200, 1, %N2%, , %titlename% ; 마우스 이동
sleep, 1
}
}
PostMessage, %up%, , %N1%, , %titlename% ; 왼쪽or오른쪽 버튼 뗌
PostMessage, %param%,, %N1%, ,%titlename%
sleep, leavedelay
}
감사합니다