【 WindowDragHandler 】
格式:
WindowDragHandler(BSTR Name,
BSTR HotspotId,
BSTR MoveCallback,
BSTR ReleaseCallback,
long Flags)
中文:
WindowDragHandler(迷你視窗名稱,
熱點ID,
移動回調函數名稱,
釋放回調函數名稱,
行為符誌)
說明:
增加了一個“鼠標拖曳程序”到指定的熱點。算是熱點的外掛,透過這個
函數,你可以用滑鼠生動地將迷你視窗拖到你希望的位置,範圍則侷限於主視
窗。適用於該熱點被鼠標按住以後。
移動回調函數:當你將鼠標移動到熱點的範圍之外,這個函數會被呼叫。
釋放回調函數:當你在熱點上按下鼠鍵(不分左右鍵),這個函數會被呼叫。
依據行為符誌的內容,可以修改拖動行為,設成零,則不做任何改動。
值 │說明 │Lua標記
│0x01 (1) │按著Shift鍵 │miniwin.drag_got_shift │
│0x02 (2) │按著Ctrl鍵 │miniwin.drag_got_control │
│0x04 (4) │按著Alt鍵 │miniwin.drag_got_alt │
└──────┴───────────┴───────────────┘
範例:程式作者有提供範例,當然程度與我是雲泥之別,所以別問我內容!
--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--
function dragmove(flags, hotspot_id)
local posx, posy = WindowInfo (win, 17),
WindowInfo (win, 18)
print ("移動到新位置(x y):", posx, posy)
-- 移動迷你視窗到新位置。
WindowPosition(win, posx - startx, posy - starty,
miniwin.pos_stretch_to_view,
miniwin.create_absolute_location);
-- 適當改變鼠標光標的形狀
if posx < 0 or posx > GetInfo (281) or
posy < 0 or posy > GetInfo (280) then
check (SetCursor (miniwin.cursor_x)) -- X cursor
else
check (SetCursor (miniwin.cursor_hand)) -- hand cursor
end -- if
end -- dragmove
function dragrelease(flags, hotspot_id)
print ("mouse drag release for " .. hotspot_id)
print ("released at position", WindowInfo (win, 17), WindowInfo (win, 18))
end -- dragrelease
WindowDragHandler(win, "hs1", "dragmove", "dragrelease", 0)
從註解內容可以看出,完成一個拖曳,其實只要一個函數即可。
--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--==-==--
來源:http://www.gammon.com.au/mushclient/mw_hotspots.htm