马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
看了老大的介绍用API给ACAD加钩子的帖子,
让LISP控制WINDOWS消息循环(给ACAD注入钩子)监控键盘鼠标消息
写个测试代码,
定义两个命令 c:viewleft 屏幕左移2/3屏,c:viewright 屏幕右移2/3屏幕。
然后定义快捷键 <- -> ,加载代码后,执行 hook_left_right , 就可以使用左右箭头来移动屏幕了。
 - (defun c:viewleft ()
- (xdrx-vports2vporttablerecords)
- (setq vi (xdrx-views-get)
- cen (getvar "viewctr")
- size (getvar "viewsize")
- ratio (getvar "screensize")
- w (* size (apply '/ ratio))
- w1 (* 2 (/ w 3.0))
- cen1 (mapcar '+ cen (list w1 0.0 0.0))
- )
- (xdrx-setpropertyvalue
- vi "centerpoint" cen1 "height" size "width" w)
- (xdrx-views-setcurrent vi)
- )
- (defun c:viewright ()
- (xdrx-vports2vporttablerecords)
- (setq vi (xdrx-views-get)
- cen (getvar "viewctr")
- size (getvar "viewsize")
- ratio (getvar "screensize")
- w (* size (apply '/ ratio))
- w1 (* 2 (/ w 3.0))
- cen1 (mapcar '- cen (list w1 0.0 0.0))
- )
- (xdrx-setpropertyvalue
- vi "centerpoint" cen1 "height" size "width" w)
- (xdrx-views-setcurrent vi)
- )
- (defun c:hook-viewleft-right ()
- (defun _hook-3 (hwnd msg wparam lparam time pos)
- (cond
- ((= msg WM_KEYDOWN)
- (cond ((= wparam VK_LEFT)
- (c:viewleft)
- (xdrx-hook-block-messageloop t)
- )
- ((= wparam VK_RIGHT)
- (c:viewright)
- (xdrx-hook-block-messageloop t)
- )
- )
- )
- )
- )
- (xd::hook:register "_hook-3" t "箭头移动屏幕热键")
- )
|