Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Detect left click and drag
#1
Is it possible to detect a left click + drag?
(Just like you drag select multiple items)

Could it be done with a timer? And can it be used to a compiled .exe?




Function click_drag_detect
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C80AC8 0x0 0 0 224 136 "Dialog"
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040601 "*" "" "" ""

if(!ShowDialog(dd &sub.DlgProc 0)) ret


#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,,SetTimer hDlg 1 50 &sub.Timer
,case WM_DESTROY
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1


#sub Timer

;; detect left click drag
#2
Function click_drag_detect
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90C80AC8 0x0 0 0 224 136 "Dialog"
;1 Button 0x54030001 0x4 116 116 48 14 "OK"
;2 Button 0x54030000 0x4 168 116 48 14 "Cancel"
;END DIALOG
;DIALOG EDITOR: "" 0x2040601 "*" "" "" ""

if(!ShowDialog(dd &sub.DlgProc 0)) ret


#sub DlgProc
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,case WM_DESTROY
,case WM_LBUTTONDOWN
,POINT p; xm p
,if DragDetect(hDlg p)
,,out "drag"
,,sub.DragDropExample hDlg
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1


#sub DragDropExample
function hDlg
__Drag d
d.Init(hDlg 1)
rep
,if(!d.Next) break
,out F"{d.p.x} {d.p.y}"
,d.cursor=2
out d.dropped
#3
Again some posts were lost...

----

Function click_drag_detect
Code:
Copy      Help
str dd=
;BEGIN DIALOG
;0 "" 0x90CC0AC8 0x0 0 0 301 186 "Dialog"
;3 ActiveX 0x54030000 0x0 2 2 220 132 "SHDocVw.WebBrowser"
;END DIALOG
;DIALOG EDITOR: "" 0x2040601 "*" "" "" ""

int hwnd hook
str controls = "3"
str ax3SHD
if(!ShowDialog(dd &sub.DlgProc &controls)) ret


#sub DlgProc v
function# hDlg message wParam lParam

sel message
,case WM_INITDIALOG
,,hwnd=hDlg
,,hook=SetWindowsHookEx(WH_GETMESSAGE &sub.Hook_WH_GETMESSAGE 0 GetCurrentThreadId)
,case WM_DESTROY
,,UnhookWindowsHookEx hook
,case WM_COMMAND goto messages2
ret
;messages2
sel wParam
,case IDOK
,case IDCANCEL
ret 1


#sub DragDropExample
function hDlg
__Drag d
d.Init(hDlg 1)
rep
,if(!d.Next) break
,out F"{d.p.x} {d.p.y}"
,d.cursor=2
out d.dropped


#sub Hook_WH_GETMESSAGE v
function# nCode remove MSG&m
if(nCode<0) goto gNext

sel m.message
,case WM_LBUTTONDOWN
,,POINT p; xm p
,,RECT R; DpiGetWindowRect id(3 hwnd) &R
,,if PtInRect(&R p.x p.y)
,,,if DragDetect(hwnd p)
,,,,out "drag"
,,,,m.message=0
,,,,sub.DragDropExample hwnd
,,,,ret

;gNext
ret CallNextHookEx(0 nCode remove &m)
#4
Thank you for reposting!!!


Forum Jump:


Users browsing this thread: 1 Guest(s)