精華區beta mud_sanc 關於我們 聯絡資訊
【 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